汽车夜视仪:页式存储管理解析

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 08:56:53

页式存储管理是把主存储器分成大小相等的许多区,每个区称为一块,与此对应,编制程序的逻辑地址也分成页,页的大小与块的大小相等。

(1)、地址转换:绝对地址 = 块号 * 块长 + 块内地址

(2)、计算块号公式:块号 = 字号 * 字长 + 位号

例题:

(1)、某页式存储管理系统中,地址寄存器长度为24位,其中页号占14位,则主存的分块大小是210字节。

(2)、采用页式管理方式,把主存分成大小为128字节的相等长度的块。有一个用户把一个128*128的数组置成初值“0”,在分页时把数组中的元素每一行放在一页中。假定分给用户可用来存放数组信息的工作区只有一块(即只能存放数组中的一行元素)。用户编制了两种实现数组的初始化的程序如下:

a)、var A:array[1..128] of array[1..128] of integer;

                                    for  i := 1 to 128

                                                      do for j := 1 to 128

                                                                        do A[i][j] := 0;

b)、var A:array[1..128] of array[1..128] of integer;

                                    for  j := 1 to 128

                                                      do for i := 1 to 128

                                                                        do A[i][j] := 0;

试计算分别运行这两个程序时,在实现数组初始化的过程中两种方式各会产生多少次缺页中断?

分析:a)、第一行不是缺页中断装入:127次缺页

                      第一次是缺页中断装入:128次缺页

          b)、第一行第一列元素不是缺页中断装入:(128*128 -1)次缺页

                        第一行第一列元素是缺页中断装入:(128*128)次缺页

    (3)、某系统采用页式存储器管理策略,拥有逻辑空间32页,每页2KB,拥有物理空间1MB.

                          a)、写出逻辑地址的格式

该系统得逻辑空间为32页,即25页,故逻辑地址中页号必须用5位来描述,而每页2KB,因此页内地址必须用11位来表示。这样可以得到它的逻辑地址格式

    b)、若不考虑访问权限等,进程的页表有多少项?每页至少有多少位?

        每个进程最多有32个页面,因此进程的页表项最多为32项,若不考虑,访问权限等,则页表项中只需给出页所对应的物理块块号,1MB的物理空间可分为29内存块,故每个页表项至少有9位。

                            c)、若物理空间减少一半,页表结构应相应做怎样的改变?

                              如果物理空间减少一半,则页表中页表项数不变,每项长度减少一位

 

      (4)、假定某页式管理系统,主存为64kb,分成16块,块号为0,1,2,3…15. 设某作业有4页,其页号为0,1,2,3,被分别装入主存的2,4,1,6块,试问:

        a)、该作业的总长度是多少字节?

          分析:逻辑空间分成页,物理空间分成块,页 = 块

          每块的长度 =64/16 = 4kB  = 每页的长度

          作业有4页,故作业的总字节数 = 4*4 = 16 KB = 240字节

      b)、写出该作业每一页在主存中的起始地址

          因为页号为0,1,2,3,装入主存的2,4,1,6块,则:

                                                                       

页号

块号

起始地址

0

2

8kB

1

4

16KB

2

1

4KB

3

6

24KB

      c)、若给出逻辑地址[0,100]、[1,50]、[2,0]、[3,60], 请计算出相应的内存地址

           逻辑地址[0,100]的内存地址:4K * 2 + 100 = 4 * 1024 * 2 + 100 = 8296

              逻辑地址[1,50]的内存地址:16K  + 50 = 16384 + 50 = 16434

              逻辑地址[2,0]的内存地址:4096

            逻辑地址[3,60]的内存地址:24636