+-
unix内核源码剖析【1. unix v6历史】

一、参考

Unix内核源码剖析

二、名词解释

PSW, processor status word, 处理器状态字

三、正文

3.1 为什么要阅读源码?

可以将操作系统看做是一种软件(集合),它对包括硬件和软件在内的计算机系统的各个组成部分进行管理,并且为用户提供了便于使用的操作界面,内核作为操作系统的核心部分,提供计算机系统必备的功能,通过阅读并且理解内核源代码,可以:
(1)对计算机系统的全貌有更加深入的了解
(2)让操作计算机成为一种令人愉快的体验
(3)加深对于知识的理解
(4)提升技术人员自身的水平

3.2 为什么选择了UNIX V6?

(1)代码行数约为1万行
(2)充实的资料
(3)网罗了操作系统的基本功能
UNIX V6基本上实现了构成操作系统的大部分基本功能,目前最新的操作系统的大部分都是以它为基础发展而来的,线程、网络、GUI、多核支持、虚拟机等等这些UNIX V6不具备的功能在近些年的操作系统中得以实现,这些功能当中有很多其实是以UNIX V6实现的功能为基础的
(4)简化的设计
(5)便于读者对系统有完整的了解
(6)有模拟器可供参考

3.3 unix历史

1975年,Kenneth Lane ThompsonDennis MacAlistair Ritchie在贝尔实验室发布了UnixV6, 接着, 1979年又发布了UNIX_V7,加州伯克利大学在1978年基于UNIX_V6发布了首个BSD版本,在此之后,UNIX和BSD不断有新的版本或者派生版本发布,然后,又出现了标准化的动向,指定了POSIX标准,意在统一各个操作系统所提供的API,著名的Linux也是将POSIX标准作为开发目标,因此,绝大多数的操作系统都和UNXI_V6有着千丝万缕的联系。

3.4 内核

3.4.1 内核可以做什么?

UNIX v6的内核提供了下面的功能:

(1)管理运行中的程序(进程)
(2)管理内存
(3)管理文件系统
(4)文件和周边设备共享IO
(5)中断
(6)支持终端处理

3.4.2 用户程序如何使用内核?

image.png
(1)如上图,用户程序可以直接通过系统调用机制(调用内核提供的功能)访问内核提供的功能;
(2)或者,用户程序利用UNIX V6提供的系统内置的用户程序集(处理用户登录的程序或者守护程序等等)、辅助程序(例如: ls, cat等等)、程序库等进行处理,这些系统程序再利用系统调用访问内核功能;

3.5 硬件

3.5.1 PDP-11/40

PDP-11/40是一种16位计算机,指令和数据基本都是以16位(bit)位单位进行处理的,处理器处理数据的单位称为字(word),1个字的占位为16bit

没有专用的IO总线,使用一种称为Unibus的总线用于数据的输入输出,具有18bit宽的地址总线

PDP-11/40以及周边设备的寄存器被映射到内存最高位的8KB空间,可以采用和操作内存相同的方法操作寄存器,称为内存映射IO (memory mapped IO)
image.png

image.png

借位位,指令执行中发生进位或者借位时候置为1
溢出位,执行执行中发生溢出时候置为1
零位,指令执行结果为0时候置为1
负位,指令执行结果为负值时候置为1
处理器模式:内核模式用00表示, 用户模式用11表示

在对系统调用进行处理时候,处理器需要首先从用户模式切换到内核模式,内核模式和用户模式使用的进程的虚拟空间是相互独立的,因此在内核、用户模式之间传输数据时候,需要了解处理器当前、先前模式

PSW寄存器,0-3位借位位、溢出位、零位、负位,硬件根据执行结果自动设置

image.png

r6称为栈指针,指向各进程所拥有的栈的顶端
r7称为程序计算器,处理器从r7指示的内存地址读取指令,随后解释并执行该指令,处理完后r7将指向容纳下一条指令的内存地址。