《Professional Linux Kernel Architecture》读书笔记 (1)
2011-08-13 12:59
288 查看
个人觉得读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,虚存的映射是如何实现的。
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,虚存的映射是如何实现的。
相关文章推荐
- Professional Linux Kernel Architecture 笔记 —— 中断处理(Part 2)【转】
- Professional Linux kernel Architecture - 锁与进程间通信
- Linux Kernel Development 读书笔记
- Linux Kernel Development 3rd Edition 读书笔记(1)
- 【读书笔记】【Linux Kernel Development】【linux内核简介】
- 《Understanding the Linux kernel》学习笔记 Chapter 13: I/O Architecture and Device Drivers
- 读书笔记 - Linux Kernel Development
- Linux Kernel Development 3rd Edition 读书笔记(4)
- 《Linux Kernel Development》读书笔记
- [转载]《Linux Kernel Development》读书笔记 - 蔚蓝海岸 - C++博客
- 【读书笔记】【linux kernel development】【从内核出发】
- How SMP schedule work in Linux kernel? (ARM architecture)
- 【读书笔记】【linux kernel development】【进程管理】
- Conceptual Architecture of the Linux Kernel(ZT)
- Linux Kernel Development 3rd Edition 读书笔记(2)
- LKD 3rd 读书笔记——第1章/Linux Kernel Versions
- Linux Kernel Development 3rd Edition 读书笔记(6)
- 《Linux Kernel Development》读书笔记
- Linux Kernel Development 3rd Edition 读书笔记(3)
- Linux Kernel Development 3rd Edition 读书笔记(5)