+ All Categories
Home > Documents > UNIX V6的全貌 - images.china-pub.com

UNIX V6的全貌 - images.china-pub.com

Date post: 29-Oct-2021
Category:
Upload: others
View: 11 times
Download: 0 times
Share this document with a friend
9
2 1.1 什么是 UNIX V6 UNIX V6 由肯·汤普逊(Kenneth Lane Thompson)和丹尼斯·里奇(Dennis MacAlistair Ritchie)开发,由贝尔实验室于 1975 年发布。 因为大部分代码都是用 C 语言完成的,并且公开了源代码,所以包括大学在内的使 用者纷纷将其移植到自己的环境中,UNIX V6 因此得到广泛使用。在移植过程中,有些 开发人员加入了独有的功能,其中一些功能后来也被原始版本所采纳。 UNIX V6 派生出来的产品还有很多,但是本书以其原始版本即在DEC公司的 PDP-11/40 设备上运行的系统内核作为说明对1.2 UNIX 的历史 贝尔实验室在发布 UNIX V6 之后,于 1979 年又发布了 UNIX 7 版(Seventh Edition UnixUNIX V7 )。加州大学伯克利分校于 1978 年发布了以 UNIX V6 为基础的 BSD 的首 个版本。在此之后,UNIX BSD 不断有新版本或派生版本出现。然后又出现了标准化 的动向,制定了 POSIX 标准,意在统一各个操作系统所提供的 API。著名的 Linux 也是将 POSIX 标准作为开发目标的。因此,大多数最新的操作系统都和 UNIX(V6 )有着千丝万 缕的联系UNIX 的历史如图 1-1 所示。 UNIX V6 的全貌 1 第I部分 什么是 UNIX V6
Transcript
Page 1: UNIX V6的全貌 - images.china-pub.com

2

1.1 什么是UNIX V6

UNIX V6由肯·汤普逊(Kenneth Lane Thompson)和丹尼斯·里奇(Dennis MacAlistair

Ritchie)开发,由贝尔实验室于1975年发布。

因为大部分代码都是用C语言完成的,并且公开了源代码,所以包括大学在内的使

用者纷纷将其移植到自己的环境中,UNIX V6因此得到广泛使用。在移植过程中,有些

开发人员加入了独有的功能,其中一些功能后来也被原始版本所采纳。

从UNIX V6派生出来的产品还有很多,但是 本书以其原始版本,�即在DEC公司的

PDP-11/40设备上运行的系统内核作为说明对象�。

1.2 UNIX的历史

贝尔实验室在发布UNIX V6之后,于1979年又发布了UNIX第7版(Seventh Edition

Unix,UNIX V7)。加州大学伯克利分校于1978年发布了以UNIX V6为基础的BSD的首

个版本。在此之后,UNIX和BSD不断有新版本或派生版本出现。然后又出现了标准化

的动向,制定了POSIX标准,意在统一各个操作系统所提供的API。著名的Linux也是将

POSIX标准作为开发目标的。因此, 大多数最新的操作系统都和UNIX(V6)有着千丝万

缕的联系。

UNIX的历史如图1-1所示。

UNIX V6的全貌第1章

第I部分 什么是UNIX V6

Page 2: UNIX V6的全貌 - images.china-pub.com

3

1.2 UNIX 的历史

图片

:Erase

rhead

1,.Infinity0

.(Own.work:.CC-BY-SA-3.0,.GFDL)

�图1 -1 

UNIX

的历史

A�

A 

http

://j

a.w

ikip

edia.o

rg/w

iki/

UN

IX

Page 3: UNIX V6的全貌 - images.china-pub.com

4

第 1章 UNIX.V6 的全貌

第 I 部分 什么是 UNIX V6

1.3 UNIX V6内核

UNIX V6内核提供了这些操作系统所必须具备的如下基本功能:

● 管理运行中的程序(进程)

● 内存管理

● 文件系统

● 文件和周边设备共享 I/O ● 中断

● 支持终端处理

内核向用户提供了经过高度抽象的服务。系统对CPU或磁盘的操作细节被内核或设

备驱动程序隐藏起来,对用户完全透明。

用户程序通过 系统调

用机制访问内核提供的功

能。构成计算机系统的软

件集合如图1-2所示。应

用程序利用UNIX V6提

供的系统内置的用户程

序集(处理用户登录的

程序,或是守护程序等)、

辅助程序(例如ls、cat等)、程序库等进行处理。系统程序等则利用系统调用(调用内

核提供的功能)进行自身的处理。此外,应用程序也可以直接使用系统调用。

内核集中了对系统影响较大的处理,通过限制用户任意执行这些功能,使系统的安

全性和可维护性得以保证。

1.4 构成UNIX V6运行环境的硬件

本节对构成UNIX V6运行环境的硬件进行介绍。这里说明的内容将贯穿以后的各章,

请读者注意理解。

调用程序库函数、执行命令等

应用程序

程序库、系统程序等

内核

系统调用

图1-2 构�成UNIX�V6的软件集合�

Page 4: UNIX V6的全貌 - images.china-pub.com

5

1.4 构成 UNIX.V6 运行环境的硬件

PDP-11

PDP-11系列是由数字设备公司(Digital Equipment

Corporation,DEC)B设计制造的处理装置。本书内容

以PDP-11/40为对象(图1-3)。

PDP-11/40作为一种16位计算机,指令和数据基

本都是以16比特为单位进行处理的。处理器处理数

据的单位称为字(word)。 对 PDP-11/40 而言,�1个

字的宽度为16比特�。

PDP-11/40没有专用的 I/O总线,而是使用一种名

为Unibus的总线用于数据的输入输出,Unibus同时

具有18比特宽的地址总线C。PDP-11/40以及周边设

备的寄存器被映射到内存最高位的 8KB空间,因此

可以采用与操作内存相同的方法操作寄存器。这

种方式被称为 内存映射 I/O(Memory Mapped I/O)

(图1-4)。

Unibus

PDP-11 内存 磁盘 终端

内存

I/O用

地址

8KB

0

设备的寄存器被映射到内存最高位的8KB空间。通过操作内存来达到访问寄存器的目的(内存映射I/O)

图1-4 通过Unibus进行连接的设备

A  http://ja.wikipedia.org/wiki/PDP-11

B 美国计算机企业。于 1998 年被康柏公司(Compaq)收购,随后康柏公司又与惠普公司(Hewlett Packard)合并。

C  Unibus 总线共有 72 条信号线,其中有 18 条用于传输地址(地址总线),另有 16 条用于传输数据(I/O 总线)。 

——译者注

照片:Stefan_Kögl(GFDL)

图1-3 PDP-11/40①

Page 5: UNIX V6的全貌 - images.china-pub.com

6

第 1章 UNIX.V6 的全貌

第 I 部分 什么是 UNIX V6

利用内存映射 I/O,可以用C语言将寄存器的操作写成如代码清单1-1所示的形式。

integ的含义请参见本书的附录。

代码清单1-1 寄存器的操作示例�

1/*寄存器被映射的地址*/

2#defineREG_ADDRESS0170000

3

4struct{

5intinteg;

6};

7

8main(){

9inta;

10a=REG_ADDRESS->integ;/*从寄存器读取数据*/

11REG_ADDRESS->integ=0;/*向寄存器写入数据*/

12}

PSW

PDP-11/40拥有一个被称为处理器状态字(Processor Status Word,PSW)的16位的

寄存器(表1-1)。PSW表示处理器的状态。

表1-1 PSW

比特位 含义

15~14 处理器当前模式(00:内核模式、11:用户模式)

13~12 处理器先前模式(00:内核模式、11:用户模式)

7~5 处理器优先级(7~0)

4 陷入(trap)位

3 N。负位。指令执行结果为负时置1

2 Z。零位。指令执行结果为0时置1

1 V。溢出位。指令执行中发生溢出时置1

0 C。借位位。指令执行中发生进位或借位时置1

处理器模式为00时表示内核模式,为11时表示用户模式A。在对系统调用等进行处理

时,处理器需要首先从用户模式切换到内核模式。内核模式和用户模式所使用的进程的

虚拟地址空间是相互独立的,因此在两种模式间传输数据时,需要了解处理器当前模式

和处理器先前模式。

PSW[3-0]会根据指令的执行结果自动设置。关于处理器优先级和陷入位将在第5章

做详细说明。

A  在一些资料中,“内核模式”也译为“核心态”,“用户模式”也译为“用户态”。 ——审校者注

Page 6: UNIX V6的全貌 - images.china-pub.com

7

1.4 构成 UNIX.V6 运行环境的硬件

通用寄存器

PDP-11具有 r0~r7共8个通用寄存器。其中只有 r6为两个,分别对应用户模式和内

核模式。 在切换PSW的当前模式�时,�r6在硬件上也会自动切换。

UNIX V6通用寄存器的用途如表1-2所示。

表1-2 通用寄存器

寄存器 用途

r0、r1 用于运算、函数的返回值

r2、r3、r4 本地处理

r5 帧指针,环境指针

r6(sp) 栈指针

r7(pc) 程序计数器

上表中的 r5、r6、r7对理解UNIX V6内核尤其重要。

r5称为帧指针或环境指针。在第3章中会做详细介绍。

r6称为栈指针,它指向各进程所拥有的栈的顶端。

r7称为程序计数器。处理器从 r7指示的内存地址读取指令,随后解释并执行该指令。

处理完成后 r7将指向容纳下一条指令的内存地址。

MMU

内存管理单元(MMU,Memory Management Unit)用于地址变换以及访问权限管

理。PDP-11/40以长度为8KB的段(segment)或页(page)为单位,对进程所需的内存

进行管理。试图访问不具备权限的内存时,MMU会引发一个陷入异常(参见第5章)。

MMU通过称为APR的寄存器(页寄存器)对各段进行设定,并将虚拟地址转换为物理地

址。APR和地址变换的详情会在第2章中介绍。

PDP-11/40的MMU具有两个状态寄存器(Status Register)SR0和SR2。SR0用于保存

出错信息和内存管理的有效标志(表1-3)。SR2用于保存目标指令的16位虚拟地址,可

用来确定引起错误的指令(表1-4)。

表1-3 SR0

比特位 含义

15 访问设定错误的页时置1

14 访问由PDR(详细请参见第2章)规定的页长度以外的区域时置1

13 试图向只读区域写入数据时置1

8 维护模式。本书不做详细说明

Page 7: UNIX V6的全貌 - images.china-pub.com

8

第 1章 UNIX.V6 的全貌

第 I 部分 什么是 UNIX V6

比特位 含义

6~5 出错进程的模式(00:内核、11:用户)

3~1 页编号。可用于确定引起错误的内存页

0 置1时MMU对内存的管理有效

表1-4 SR2

比特位 含义

15~0容纳目标指令的16位虚拟地址。当读取指令失败时SR2的值不更新。另外,如果SR0[15-13]的任意1位为1时SR2的值也不更新

内存

PDP-11/40使用的内存被称为磁芯内存(Magnetic Core Memory),当时的论文等有时

将其称为磁芯(Core),本书为了便于读者理解,仍将其称为内存。

内存以8比特(1字节)为单位赋予地址。地址长度为18比特,因此内存容量为

218=256KB。PDP-11/40将周边设备的寄存器映射到内存高位8KB的地址空间。

处理器利用内存中存储的指令和数据进行运算。

块设备

磁盘设备或磁带设备等块设备可以容纳大量数据。文件系统构筑于块设备之上。对

块设备 I/O处理的介绍参见第7章、第8章,对文件系统的详细说明参见第9章、第10章。

块设备的一部分被用做交换空间。为了在有限容量的内存中运行大量程序,内核会

把不需要的数据从内存转移到交换空间,或者将需要的数据从交换空间移回内存。这被

称为交换处理,在第4章中会对此进行详细说明。

行式�打印机

行式打印机用于在纸张上打印数据的设备。对行式打印机的说明请见第12章。

终端

终端是连接系统与用户的装置。用户可以通过终端对系统进行交互式的操作。终端

处理会在第13章中说明。

(续)

Page 8: UNIX V6的全貌 - images.china-pub.com

9

1.6 手册

1.5 代码

UNIX V6源代码对应现在的BSD许可证,用户可以在网上获取代码。本书附录中介

绍了登载UNIX V6源代码的网站 [1]。

1.6 手册�

UNIX V6向用户提供了名为UNIX Programmer’s Manual (UPM)的手册。该手册包

括下述9个章节, 阅读内核代码时需要特�别注意第2章和第4章。如果希望了解可执行程序

(a.out)的格式请参考第5章。本书在希望读者参考UPM的某个章节(比如第2章)时,会

以“UPM(2)”的形式标注。如果在阅读代码时遇到难以理解的内容,也请参考UPM。

(1)手册概要

(2)一般命令

(3)系统调用

(4)C语言库函数等

(5)特殊文件 A、设备驱动

(6)文件格式

(7)游戏等

(8)其他

(9)系统管理命令和守护程序

如果想了解内核以外的、系统内置的用户程序集等内容,请参考上述第1章、第3

章、第5章、第8章。

本书附录中介绍了登载UNIX V6手册的网站 [2]。

A  关于特殊文件的说明请参照 7.1 节。——译者注

Page 9: UNIX V6的全貌 - images.china-pub.com

10

第 1章 UNIX.V6 的全貌

第 I 部分 什么是 UNIX V6

1.7 小结

● UNIX V6由肯·汤普逊和丹尼斯·里奇开发,于1975年由贝尔实验室发布

● UNIX V6可以说是现代操作系统的鼻祖

● UNIX V6的内核提供了系统运行所必需的基本功能

● 内核向用户隐藏了对硬件的操作,以及保证了对系统具有影响的处理的安全性和可

维护性

● 用户程序通过系统调用向内核发出处理请求

● PDP-11/40及周边设备的寄存器被映射到内存的最高位8KB地址空间

● PDP-11/40具有 r0~r7的8个通用寄存器。其中只有 r6又分为两个,分别对应内核模

式和用户模式。理解内核处理时,r5~r7尤其重要


Recommended