深入Linux内核架构
Kevin-Kelly
这个作者很懒,什么都没留下…
展开
-
线性地址 逻辑地址 虚拟地址 物理地址 页表机制的一点杂谈
首先从其他文献摘抄几张图 表明相关的关系INTER处理器从上图看出逻辑地址通过段机制转为线性地址 然后再通过页表机制 进而转为物理地址把逻辑地址的偏移量与段描述符基地址域的值相加 就得到线性地址##################################################################Intel 8086处理器分页机制Linux分页机制...原创 2019-12-26 09:57:24 · 211 阅读 · 0 评论 -
关于字符和块设备一些杂谈
当我们对文件进行读写是 调用file->f_op 最终调用的是inode->i_fop而inode->i_fop 在具体的文件系统已经进行初始化以下摘抄fs/ext2if (S_ISREG(inode->i_mode)) { inode->i_op = &ext2_file_inode_operations; if (ext2_use_xip...原创 2019-12-05 12:15:12 · 182 阅读 · 0 评论 -
内核函数相关区别
mmap将硬件物理地址映射到用户虚拟地址空间 当用户访问时 会发生缺页中断 这时候则会通过mmu建立页表映射ioremap在内核驱动中如果要访问设备的物理地址,需要利用ioremap将设备的物理地址映射到内核虚拟地址上(动态内存映射区),以后驱动程序访问这个内核虚拟地址就是在间接得访问设备的物理地...原创 2019-12-04 16:56:28 · 187 阅读 · 0 评论 -
页高速缓存与页回写
访问物理内存的速度远快于访问磁盘的速度 所以把经常使用的数据缓存到物理内存 页高速缓存 访问磁盘可直接变为访问物理内存的方式 页高速缓存是由内存中的物理页面组成的 内容对应磁盘上的物理块读缓存当内核开始一个读操作时 它首先会检查需要的数据是否再页高速缓存中 如果在就放弃访问磁盘 直接从内存读取 如果数据没有在缓存中 那么就要必须调度IO操作从磁盘读取数据 然后内核将读取出来的数据 放入页缓存中...原创 2019-11-22 10:30:24 · 230 阅读 · 0 评论 -
Linux进程地址空间解析
Linux内核通过mm_struct表示进程空间 通过vm_area_struct表示该空间的内存区域ttask_struct 里面的 struct mm_struct *mm, *active_mm;指的就是进程地址空间 通过调用copy_mm(unsigned long clone_flags, struct task_struct * tsk) 再通过分配 mm = allocate_m...原创 2019-10-12 15:39:08 · 210 阅读 · 0 评论 -
linux内核中断机制
中断实则为一种电信号 当外部设备产生电信号 然后通过中断控制器接收 再发给处理器 进入中断处理函数中断处理一般分为上半部和下半部机制 中断处理函数即为上半部 上半部主要完成中断应答或者硬件复位 接收到一个中断 立即开始执行申请和释放中断分别为static inline int __must_check request_irq(unsigned int irq, irq_handler_t ...原创 2019-09-26 15:36:37 · 209 阅读 · 0 评论 -
设备模型
kobject 主要功能就是内嵌在大型的数据结构中 为这数据结构提供底层功能实现 类似于面向对象语言中的对象类 kobject通常是嵌入其他结构中的参考文献https://blog.csdn.net/lizuobin2/article/details/51511336http://www.wowotech.net/device_model/kobject.html...原创 2019-09-24 16:37:31 · 126 阅读 · 0 评论 -
进程管理
进程代表程序的运行状态每个进程都在一个链表链接 并且用task_struct来表示进程描述符进程描述符描述进程的状态 进程号pig ppig 文件相关进程状态 就绪 运行 (停止&休眠)进程创建 fork 写时复制 当子进程要写时 复制和父进程一样的地址空间 除了进程号...原创 2019-09-19 11:11:41 · 91 阅读 · 0 评论 -
内存管理
kmalloc原创 2019-09-18 19:51:09 · 108 阅读 · 0 评论 -
内核同步锁机制
临界区自旋锁 spin_lock如果调用者调用的自旋锁 锁被其它处理器一直占用 那么就一直等待 等待处理器释放锁spin_unlock 所以不可休眠 所以一般适用于保护较短的代码段 对于多核而言 但对于单核而且启用了内核抢占 则spin_lock起到禁止抢占的作用信号量 sem 如果调用者使用信号量 被其它所占用 那么就休眠 处理器可以去做其它的事情 直到锁被释放 然后唤醒 所以适用...原创 2019-07-28 20:46:47 · 179 阅读 · 0 评论 -
Linux系统调用过程
GNU标准库下载http://mirrors.ustc.edu.cn/gnu/libc/原创 2019-07-28 20:28:17 · 153 阅读 · 0 评论