原标题:【陈老师华为北研所讲座PPT】从机制与策略探究Linux内核设计之道(4)
解放编译程序,以统一的方式分配逻辑地址。
首先内核通过映射机制把进程的虚拟地址映射到物理地址,在进程运行时,如果内核发现进程要访问的页没有在物理内存时,就发出了请页要求①;如果有空闲的内存可供分配,就请求分配内存②(于是用到了内存的分配和回收),并把正在使用的物理页记录在页缓存中③(使用了缓存机制)。如果没有足够的内存可供分配,那么就调用交换机制,腾出一部分内存④⑤。另外在地址映射中要通过TLB(翻译后援存储器)来寻找物理页⑧;交换机制中也要用到交换缓存⑥,并且把物理页内容交换到交换文件中后也要修改页表来映射文件地址⑦。
在一个布满城市的地图上,要想找到参与的感觉,就是自己也建一点。比如,你自己写的一个驱动程序,不仅仅是以模块的形式加载到内核,还给用户以选择,可以编译到内核中,这时你就可以建立自己的Makefile和Kconfig。
执行是操作系统要解决的核心问题之一,其他问题都是由此引发而出。执行机制在设计上的类似和巧妙,可以使你有豁然开阔之感。
通过fork()创建的进程处于就绪状态,其PCB进入就绪队列。如果调度程序schedule()运行,则从就绪队列中选择一进程投入运行而占有CPU。在进程执行的过程中,因为输入输出等原因调用interruptible_sleep_on()或者sleep_on(),则进程进入浅度睡眠或者深度睡眠。因为进程进入睡眠状态放弃CPU,因此也调用了调度程序schedule()重新从就绪队列中调用一个进程运行。返回搜狐,查看更多
责任编辑: