Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1136953
  • 博文数量: 300
  • 博客积分: 37
  • 博客等级: 民兵
  • 技术积分: 772
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-26 04:46
文章分类
文章存档

2017年(4)

2016年(7)

2015年(19)

2014年(72)

2013年(71)

2012年(127)

分类:

2012-05-30 22:16:53

2 UNIX综述

为了更好地理解UNIX源代码,我们需要首先了解UNIX运行的硬件环境。

2.1 硬件平台

UNIX可以运行在PDP 11/4011/70处理器上。PDP 11/40是数字设备公司(DEC—Digital Equipment Cooperation)在1972年推出的一款16位处理器。其主频为1.28M Hz,最大直接寻址空间达64KB216)。其物理地址空间可被扩展为1822位,从而达到256KB甚至4MB。而现代个人电脑最普通的Intel 32位处理器,都能达到1G以上的主频,直接寻址空间达4G。相比之下,PDP 11/40的性能也许显得有些可怜,但是它在当时却是一个了不起的成就,先进的设计理念使得它的硬件架构和现代处理器并无二致:中断及中断优先级的支持、内核模式和用户模式的双操作模式、虚拟内存、对多个I/O设备的支持、DMA传输、堆栈等。

PDP 11/7011/40的升级版,它也是16位处理器。除了在地址位的扩展、浮点处理和CPU性能上的一些提高之外,它和11/40并没有任何区别。这就保证了PDP11/40的后向兼容性。事实上,整个PDP 11处理器家族都良好地保持着这一点。本书中UNIX的源代码对此是一个很好的证明,代码中对PDP11/70做特殊处理的部分不超过100行。

     

PDP 11/40的所有设备包括CPU都连接到总线(UNIBUS)上,如图2-1所示。总线具有很高的数据传输速率,其最大传输速率达到40Mbit/s(当前计算机前端传输速率可达1033Mbit/s,最新型I/O总线PCI-Express则可达102.4Gbit/s。)。PDP 11/40的总线由56根线组成,所有的数据、地址和控制信息都沿着这56根线传送。CPU和主存、I/O设备之间、I/O设备和主存之间都是通过总线互相通信。总线上设备之间的通信通过主从模式(master-slave)实现。比如,当CPU需要读取下一条指令时,它将地址信息发送至总线上,向总线发出读取主存的命令,这时CPU就是主设备,主存就是从设备。当读取完成后,数据沿总线传送至CPU

当一对主从设备在总线上进行数据传输时,总线被锁定(interlocked),直至数据传送完成,该总线被释放。

       PDP 11/40的数据排列是小数端(little endian),即对单字而言,低字节在前(低地址),高字节在后(高地址)。若整数0x1011位于地址0x1000处,则0x11位于0x10000x10位于0x1001

本书后面章节代码中的数字很多使用8进制来表示,这是因为PDP 11/40芯片对数据是按8进制处理的,包括其指令设计,很多都是8进制格式。

2.1.1 中断和自陷(Trap

1)中断

中断是主存、I/O设备等外部设备向CPU发起的事件通知信号。该信号通知CPU某外设需要获取总线(Bus Request),进行特定任务的处理。该任务包括如下两种:

1)实现一个没有CPU参与的数据传送。比如DMA数据传输。一个例子是:磁盘数据直接传送至CRT显示器,从而实现屏幕的刷新。

2)打断当前程序的执行,强制CPU实现某个服务请求。

PDP 11/40共分有9级中断,优先级分别从07(值越大表示优先级越高)的中断和最高级中断—非处理器请求(NPR—None Processor Request),也就是上述任务(1)。高级中断可以打断低级中断而优先执行。但实际上除了NPR中断外,系统只实现了47级中断,中断优先级30和中断优先级4是相同的,如图2-2所示。

2-2BRBus Request的缩写。Dn代表某个外部设备(Device)。连接在不同的中断请求线BRx上的设备具有该中断请求线的优先级。

    ... ...

2)自陷

除了中断外,PDP 11/40还具有自陷(trap)功能。自陷原理上和中断很相似,也是通过打断当前程序的运行而获优先执行。区别是自陷的优先级永远是7;产生源是CPU自身,比如非法地址访问、非法指令执行等都会产生自陷。而中断的产生源是除CPU外的外围设备,比如磁盘、电传终端(Teletype)等。有一种特殊的自陷是系统访问的接口,用于实现系统调用(openreadwrite等)来访问内核资源。

另外,PSW寄存器中的中断屏蔽位并不能屏蔽自陷的产生,哪怕它的值是7,从这个意义上来讲,自陷可以认为是“第8级中断”。

3)属性列表

当前中断(自陷)的优先级存放在PSW寄存器的bit 75PDP 11/40各种中断(自陷)的一个列表如下:

中断(自陷)产生源

类别(中断/自陷)

优先级

中断向量地址(10进制)

线性时钟(Line Clock

中断

6

100

实时时钟(Realtime Clock

中断

6

104

磁盘

中断

5

220

KL-11/DL-11

中断

4

60

PC-11

中断

4

70

LP-11

中断

4

200

总线错误(bus error

自陷

7

4

非法指令

自陷

7

8

断点

自陷

7

12

I/O自陷

自陷

7

16

供电异常

自陷

7

20

仿真器

自陷

7

24

系统调用

自陷

7

28

奇偶错

自陷

7

114

程序中断

自陷

7

240

浮点运算异常

自陷

7

244

段违例

自陷

7

248

其中,KL-11/DL-11:一种串行接口,用于连接电传终端(tty---Teletype)和CRT显示器等。PC-11:纸带读取/打孔机。LP-11Line Printer,行打印机。

... ...


上一章 概述                         目录                         下一章   虚拟内存


本书在全国各大书店及网城均有销售:
                         
                       



阅读(913) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~