操作系统第三章-内存管理-大题汇总(预计10月底完结)

题目1:

某计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4B,请回答下列问题

(1)若使用一级页表的分页存储管理方式,逻辑地址结构为

页号(20位)  页内偏移量(12位)

问:页的大小是多少字节?页表最大占用多少字节?

先说答案再分析:

页的大小=页内偏移量的大小=2^12B=4KB

页表项个数=2^20

页表占用字节=(2^20)*4B=4MB

分析:

页的大小为什么等于页内偏移量的大小?

这个应该很好理解吧,寻址的时候,需要页号和页内偏移量,类比楼层和房间,我要找3楼的1号房;

那么3楼一共有多少房间呢?房间号加起来就是房间数,就得到总共有多少房间。

页表项个数为什么等于页号个数?

页表是干嘛的呀?配置页表过后,通过查页表,就能找到每页在内存中的物理块号,页表的作用是实现从页号到物理块号的地址映射。现在题目告诉了页号是20位的,其实就是2^20物理块,因为20位就对应这么多物理块;而我们的页表中的一个页表项就可以代表一个物理块,那么就需要2^20个页表项。

 

(2)采用(1)中的分页存储管理方式,一个代码段的起始逻辑地址为0000 8000H, 其长度为8KB被装载到从

物理地址0090 0000H开始的连续主存空间中。页表从主存 0020 0000H 开始的物理地址处连续存放,如下图所示(地址大小自下向上递增)。请计算处该代码段对应的两个页表项的物理地址,这两个页表项中的页框号,以及代码页面2的起始物理地址

操作系统第三章-内存管理-大题汇总(预计10月底完结)

先说答案:

代码段长度8KB=2个页

逻辑地址0000 8000H  转换为二进制0000 0000 0000 0000 1000 0000 0000 0000 0000 B,由于采用的是(1)中的分页存储管理方式,故后12位是页内偏移量,则代码段对应的两个页号为00008H,00009H

8号页表项物理地址=0020 0000H +8*4=0020 0020H 

9号页表项物理地址=0020 0000H +9*4=0020 0024H

页框号代表真正的物理地址,而页框大小和页面大小是4KB,12位,逻辑地址和物理地址都是32位的

那么页框号就是20位的,已知页框号1的物理地址 0090 0000H,就有页框号1=00900H,而连续存放这个条件

就能得到页框号2=00901H

物理地址3指向的是代码页面2的起始位置,所以页内偏移量是没有的,直接补上3个0

物理地址3=0090 1000H


题目2:

操作系统第三章-内存管理-大题汇总(预计10月底完结)

操作系统第三章-内存管理-大题汇总(预计10月底完结)

 

解(1):

如果左边是段式存储管理,3对应的段号是12,再加上他的段内偏移量586,都598了;而段长由于没给出,我们通过看左图发现,当左图是段式存储管理的时候,12~598都应该是3号段的内容,可是1号段和4号段也在3号段里面(从上到下给段表项排序0,1,2,3,4),所以矛盾了撒,故左图是分页存储管理

解(2):

页式存储管理的物理地址计算:

由于逻辑地址的3号页对应物理地址的12号页框,且页框大小=页面大小=2^11,则地址变换=12*2048+586=24576

段式存储管理的地址变换和分页不一样,=段内基址+偏移量=4000+586=4586

因为页表里面存放的是页号块号,所以查到页号还要和页面大小乘一下

段表里面存放的是基址,段长,故基址+偏移量就为物理地址了嗷


题目三:

在做题目之前,先搞清楚一个知识点:

操作系统第三章-内存管理-大题汇总(预计10月底完结)

主存是内存的一部分,不能把主存就当做是内存,和解题其实没啥关系,但是复习阶段应该清楚;

题目:

操作系统第三章-内存管理-大题汇总(预计10月底完结)

操作系统第三章-内存管理-大题汇总(预计10月底完结)

 

解:

页面大小1KB,则页内偏移10位

由于用户的编程空间为32位,故页号的位数为6位

主存空间为16KB,则页框号的位数为5位,这也是下面逻辑地址页号为什么是6位,物理地址为什么是5位的原因

把三个逻辑地址转为2进制

0AC5H=0000 1010 1100 0101 B            页号为2,映射到物理块号4,故物理地址01 0010 1100 0101

1AC5H=0001 1010 1100 0101 B            页号为6,在用户表里面没找到6号页,会缺页中断

3AC5H=0011 1010 1100 0101 B            页号为14,用户程序一共才0~9号页,14号页超过了界限,会产生越界中断