2016,开始阅读Unix&Linux相关。从源码开始吧!
选了《Unix内核源码剖析》: 青柳隆宏 这本书。
第一章 什么是UnixV6
从UNIX V6派生出来的产品还有很多,但是本书以其原始版本, 即在DEC公司的PDP-11/40设备上运行的系统内核作为说明对象。
大多数最新的操作系统都和UNIX(V6)有着千丝万缕的联系。
对 PDP-11/40而言, 1个字的宽度为16比特。
PDP-11/40以及周边设备的寄存器被映射到内存最高位的8KB空间,因此可以采用与操作内存相同的方法操作寄存器。这种方式被称为内存映射 I/O。
PSW
PDP-11/40拥有一个被称为处理器状态字(Processor Status Word, PSW)的 16位的寄存器(表1-1)。PSW表示处理器的状态。
通用寄存器
PDP-11具有r0~r7共8个通用寄存器。其中只有r6为两个,分别对应用户模式和内核模式。在切换PSW的当前模式时,r6在硬件上也会自动切换。
通用寄存器
PDP-11具有r0~r7共8个通用寄存器。其中只有r6为两个,分别对应用户模式和内核模式。在切换PSW的当前模式时,r6在硬件上也会自动切换。
MMU
内存管理单元(MMU,Memory Management Unit)用于地址变换以及访问权限管理。PDP-11/40以长度为8KB的段(segment)或页(page)为单位,对进程所需的内存进行管理。MMU具有两个状态寄存器(Status Register) SR0和SR2。SR0用于保存出错信息和内存管理的有效标志。SR2用于保存目标指令的16位虚拟地址,可用来确定引起错误的指令。
内存管理单元(MMU,Memory Management Unit)用于地址变换以及访问权限管理。PDP-11/40以长度为8KB的段(segment)或页(page)为单位,对进程所需的内存进行管理。MMU具有两个状态寄存器(Status Register) SR0和SR2。SR0用于保存出错信息和内存管理的有效标志。SR2用于保存目标指令的16位虚拟地址,可用来确定引起错误的指令。
内存
内存以8比特(1字节)为单位赋予地址。地址长度为18比特,因此内存容量为218=256KB。PDP-11/40将周边设备的寄存器映射到内存高位8KB的地址空间
块设备
磁盘设备或磁带设备等块设备可以容纳大量数据。文件系统构筑于块设备之上。
第二章 进程
内存以8比特(1字节)为单位赋予地址。地址长度为18比特,因此内存容量为218=256KB。PDP-11/40将周边设备的寄存器映射到内存高位8KB的地址空间
块设备
磁盘设备或磁带设备等块设备可以容纳大量数据。文件系统构筑于块设备之上。
第二章 进程
2.1 进程拥有独立的虚拟地址空间,可以使用虚拟地址空间内的地址(虚拟地址),由MMU转换为实际的内存地址(物理地址)。
2.2 用户模式和内核模式
将用户模式时的虚拟地址空间称为用户空间, 内核模式时的虚拟地址空间称为内核空间。
内核定期将处于休眠状态、重要度较低的进程(所需的数据)会从内存转移到交换空间(swap out,换出),或者将交换空间中已处于可执行状态的进程重新恢复到内存(swap in,换入)。这个处理被称为交换处理。