Linux
文章平均质量分 97
光看不点赞
这个作者很懒,什么都没留下…
展开
-
Linux内核设计与实现(十)| 页高速缓存和页回写
这个工作,也就是决定缓存中什么内容将被清除的策略,称为缓存回收策略。原创 2022-07-29 23:05:53 · 2159 阅读 · 0 评论 -
Linux内核设计与实现(九)| 进程地址空间(虚拟内存、页表)
这是零页的一个重要用处,而bss段需要的就是全0的内存区域。进程退出时,一般会调用三个相关结束工作的函数,一个是执行常规撤销工作,更新一些统计变量,并且其中会调用第二个函数去减少mm_users的数量,如果该值减少到0,会调用第三个函数减少mm_count的值,如果mm_count也为0了,系统会将mm_struct加入到lab中。虚拟内存区域对应的结构体制定地址空间内连续区间上的一个独立内存范围,这个内存范围会被独立的当做一个内存对象进行管理,每个内存对象都有相同的属性(访问权限等)和相同的操作;...原创 2022-07-27 23:02:18 · 2304 阅读 · 0 评论 -
Linux内核设计与实现(八)| 块I/O层(IO调度程序)
如果在写FIFO队列头,或是在读FIFO队列头的请求超时(也就是,当前时间超过了请求指定的超时时间),那么最后期限IO调度程序便从FIFO队列中提取请求进行服务。依靠这种方法,最后期限IO调度程序试图保证不会发生有请求在明显超期的情况下仍不能得到服务的现象。......原创 2022-07-24 21:13:10 · 2499 阅读 · 0 评论 -
Linux内核设计与实现(七)| 虚拟文件系统
如果我们站在用户角度来看待VFS,文件对象会首先进入我们的视野。原创 2022-07-23 17:16:01 · 2196 阅读 · 0 评论 -
Linux内核设计与实现(六)| 内存管理
内核把物理页作为内存管理的基本单位。尽管处理器的最小可寻址单位通常为字(甚至字节),但是,内存管理单元(MMU,管理内存并把虚拟地址转换为物理地址的硬件)通常以页为单位进行处理。不同体系结构页的大小也不一样,支持的页种类也不一样,大多数32位体系支持4KB的页,64位支持8KB的页。......原创 2022-07-21 00:45:55 · 1949 阅读 · 0 评论 -
Linux内核设计与实现(五)| 内核同步
对于用户空间而言内核中有类似可能造成并发执行的原因。简单的死锁案例编写代码时如何避免死锁SPARC体系结构:低8位的锁(已破译)原子整型的使用原子性与顺序性的比较1.2 原子位操作概述总结2.自旋锁概述2.1 自旋锁方法概述自旋锁与中断处理程序锁什么?死锁读写锁是可以重入的读写锁的API4.信号量概述信号量的特点4.1 计数信号量和二值信号量概述二值信号量计数原创 2022-07-07 16:29:34 · 2071 阅读 · 0 评论 -
Linux内核设计与实现(四)| 中断 & 中断处理(上半部与下半部)
异常网卡例子注意重入和中断程序分类::内核在处理中断处理程序本身不可被中断:—此标志表明这个设备产生的中断对内核饪池有贡献。内核嫡池负责提供从各种随机事件导出的真正的随机数。如果指定了该标志,你可理解为中断处理的时间不确定:该标志是特别为系统定时器的中断处理而准备的。:此标志表明可以在多个中断处理程序之间共享中断线5.中断上下文进程上下文和中断上下文的区别中断处理的要求中断处理程序栈内核的视角下面的几步其实就是引起中断的时候内核在干嘛,恢复到那个时候就行中断、锁和同步的配合禁止和激活原创 2022-07-05 22:18:44 · 3176 阅读 · 0 评论 -
Linux内核设计与实现(三)| 系统调用
以getpid()为例我们看看系统最终如何明确操作:3.1 系统调用号概述3.2 系统调用的性能概述4. 系统调用处理程序概述如何通知内核?返回值两个方法的伪代码检查是否有合法权限,检查特点资源的特殊权限即调用者调用函数来检查自己是否有权力对指定的资源进行操作,举个例子,可以检查调用者是否有权改变其他进程的值。6.系统调用上下文概述注意例子6.3 为什么不通过系统调用的方式实现概述平替方式...原创 2022-07-02 21:31:49 · 2286 阅读 · 0 评论 -
Linux内核设计与实现(二)| 进程调度
时间片策略Linux的策略Linux的优先级范围一般OS中的调度分配:Linux中:虚拟实时记账功能函数update_curr()5.2 进程选择概述挑选下一个任务向树中添加进程从树中删除进程5.3 调度器入口概述优化pick_next_task函数5.4 睡眠与唤醒睡眠概述等待队列:加入等待队列的步骤:唤醒概述两者状态的转换图(一次调度)6.抢占和上下文切换上下文切换所完成的工作:原创 2022-06-30 22:44:07 · 2698 阅读 · 0 评论 -
Linux内核设计与实现(一)| 进程管理
为什么有了IPC(进程间通信)机制?微内核在某些OS的改良Linux与Unix的显著差异内核开发的特点内联函数内核的内存不分页内核为什么要注意同步和并发进程的两种虚拟机制Linux中的进程创建2.2 进程描述符的存放标识进程:PID如何得到文件描述符:进程间状态转换内核经常需要调整某个进程的状态。这时最好使用set_task_state(task, state)函数;2.5 进程上下文概述2.6 进程家族树概述parent指针和children链表进程间的原创 2022-06-29 22:42:53 · 3325 阅读 · 0 评论