(莱昂氏unix源代码分析导读-2) PDP11/40系统简介(上)

                      独臂人道:“不错,你好好瞧着。你那本拳经刀谱,前面缺了两页,所以你总是说瞧不懂。那缺了的两页,就在这人身上 

1.   地址管理

PDP11最大的特点是其UNIBUS系统,CPU对所有设备的访问都通过单一总线来完成。因此,所有设备都具有统一的编址规则。也就是说,所有设备,包括MemoryRegister、外设、Device Register等都具有统一的地址。外设、Device Register等编址在高地址空间上。

 

PDP-11总线为16位,故其虚存空间为64K。但是,PDP-11可配置256K物理内存。为有效使用物理内存空间,使用“Page”将虚存空间映射到物理空间。每个page 8K字节,每个程序拥有8virtual Page,分别映射到8个物理Page上。

 

具体来说,PDP11有两种内存管理模式:

1)“存管系统关闭”

     系统初启时,处于此种状态。此时,系统自动将virtual地址空间的前7page映射到物理空间的前7page,但virtual地址空间的第8page会被映射到物理地址的最后一个page——以访问外设。

 

2)“存管系统开启”

     此种状态下,针对KernelUser模式,各有8Page address register来进行映射。每个Address Register对应一个virtual Page,记录的是该page对应于物理地址空间的首地址(以block——64字节为单位)。

 

具体方法如下:

1)根据virtual地址计算出逻辑页和页内偏移;

2)物理地址 =该页的Address Register的数值*64 +页内偏移

 

【注】:需要注意的是,很多情况下,源代码中使用Segment来表示Page。但是,segment有时又用作程序的分段,如textdatabss。所以,这里使用page的话,更清晰,更容易理解。

 

【思考题】:我们想把虚存地址中前6Page映射到物理内存的前6Page

请问:前6Address Register的值应该设置为多少呢?

 

2.指令寻址

莱昂氏书中对各种编址方式进行了详细的讲解,唯一需要提一下的是:

1)自动减一(加一)方式,如:

         mov -(r1), r2

2)变址方式,如:

         clr 2(r0)

它们“变化”的单位是不同的。

 

对(1),它减去的一是一个Word;

                【注】:PDP-11还有一套基于Byte的指令,其特点是在正常的指令名后加一个“b”用来结尾,如movb等等。这套指令在源码中使用较少。 

而(2)中的2,是2个Bytes。

 博客地址:http://blog.csdn.net/cszhao1980/article/details/7567586

 

你可能感兴趣的:(unix,user,byte,代码分析)