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

1  Page Register

   分为Address RegisterDescription Register,在“存管系统”起效后使用。

KernelUser态各有8Register,分别完成8页的“物理---逻辑”地址映射。

 

比如,代码中对Address Register有如下的声明:

 

Kernel                                              User

1447    KISA0   =   172340            1451    UISA0 = 177640

1448    KISA6   =   172354            1452    UISA1=177642

 

其实,这些Address Register是连续编址的,比如,以Kernel为例:

KISA0   =   172340            KISA1   =   172342      KISA2   =   172344

KISA3   =   172346            KISA4   =   172350      KISA5   =   172352           

KISA6   =   172354            KISA7   =   172356

由于KISA0KISA6使用较多,故进行了定义。而其他的Address Register也可以通过这KISA0KISA6进行访问。

 

Page Address Register 12bits(称为PAF)有效,记录的是以block32 Words64 bytes)为单位指定地址,

即该逻辑页页首映射到的物理地址。

【思考题】:PDP11-40的存管系统最大支持多大的物理内存?

 

Page Description Register

1)最常用的是ACF1~2bit),如:

           00      不可访问

           01      Read

           02      Write

           11      Read and Write

           

            mov   $6, …        Read and Write

 

2PLF8 ~ 14 bit)该物理page的大小(以block为单位)

           多数情况下为8K,为:

           mov   $77406       4k words Read and Write

 

现在可以对PDP11的物理page有更进一步的了解了。PDP11的物理内存其实是连续的地址空间,所谓的物理page

在某种程度上是一个逻辑上的概念,是通过刚才的Page Register指定的起始地址和长度来指定的。换言之,我们

可以(但最好不要这么做)指定两个overlap的物理page。进一步,我们可以认为物理内存是由许多blocks组成的,

而这些block0开始连续进行编号,每个Block直接对应一段物理内存。因此,通过block号我们可以直接操作

物理内存

 

2. Page 状态 Register——SSR0 SSR2

 

SSR0SSR2SSR1PDP11/40中没有使用)主要用于Page硬件中断处理。

(莱昂氏unix源代码分析导读-4)PDP11/40系统简介(下)_第1张图片

                                                          SSR0

Bits 15~13用来说明中断原因,如:

(1)         违反存取限制;

(2)         Page越界;

(3)         写保护

 

Bit 8——当Bit 0Bit 8置位时,表示进入到“Page control information”状态,此时,SSR0其他Bit均无效。该种状态用于

进行Page状态的监控。

 

Bit 5~6用于说明中断发生时的CPU mode00kernel11user)。

Bit 1~3page Number0~

Bit 0:“存管系统”启动indicator

 

SSR2为内部使用的只读Register,记录每条存取指令的virtual address,我们一般不会直接操作它。

 

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

 

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