《Professional Linux Kernel Architecture》读书笔记 (1)
2011年08月13日 12:59:38 StevenCoder 阅读数:1195 标签: linux读书linux内核任务调度tablesystem 收起
个人分类: OS
个人觉得读Linux内核架构是理解操作系统最好的方式,于是在实习之余开始读这本书。估计要很久才能读完。这是上周的笔记。
1. 当Linux在中断模式的情况下,内核没有权限访问用户的内存空间。
2. 对于32bit的操作系统,每个进程眼中的虚存都是4G,64位的会小于2的64次方,大约用其中的47位。。。因为用的字长越多,映射寻址时越慢。
3. 虚存往往大于实际内存。虚存和实际内存都切分成很多大小相同的pages。两个进程的虚存可能共享实际内存中的同一个Page。虚存的page中可能有一些没有对应内存中Page。
4. 实际的内存页 也叫 page frames. In contrast, 而虚存的页叫做 page 。
5. 海量数组处理: 如果需要的数组很大,但数组对应的distinct 值却没有那么多,可以把数组切成多个。例如数组长度本为1000,可以切成三层,每层长度为10的三个数组。缺点是访问多级数组比访问一个数组要慢。.
6. 在内核的抢占调度模型中,system call 是不能被一般进程抢占的。但可以被中断暂停。中断具有最高的优先级。
7. Copy on Write方法: 即在需要修改时才进行实际数据的copy。例如Linux 中 在fork时,父进程的所有资源需复制给新建的子进程,而现在linux使用Copy on Write, 即fork时只复制page table(即一张映射表),所以父子进程的page table 指向同一块 physical pages,但只读,当父子进程中的任何一个需要write或update 这块physical pages时,再进行physical pages copy。
8. 由于fork 现在使用 Copy on Write,vfork已经没有效率的优势,一般不用了。
9. 在linux进程调度中,不用复杂的时间片机制,所有进程按其等待时间构建红黑树上,最左边的结点就是等待时间最长的,也就是下一个被调度到的。
总结
Linux的任务调度如果除去优先级等等,还是采用了较简单直接的方法。
Copy On Write和多级数组是通用的高效数据处理方法。
终于搞清楚虚存的定义。想知道如果是share-memory,虚存的映射是如何实现的。