操作系统第三章 您所在的位置:网站首页 计算机字节长度都是32位吗 操作系统第三章

操作系统第三章

2023-07-25 20:22| 来源: 网络整理| 查看: 265

目录

题目1:

题目2:

题目3:

题目4:

题目5:

题目6:

题目7:

题目8

题目9:

题目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的起始物理地址

先说答案:

代码段长度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:

 

解(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

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

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

题目3:

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

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

题目:

 

解:

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

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

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

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

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

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

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

 

题目4:

 

解(1):

作业长度为5.2KB,而每页1KB,故作业占了6页

根据位示图,从0行0列开始逐行找0的点,由于位示图表示的是盘块是否被占用的情况,那么为0的盘块就可以分配给作业

所以很容易画出页表内容

页号 块号021127228329434535

 

解(2):

分页类似固定分区,但是分页过后的页面,其实已经很小了,但是也会存在内部碎片,也就是内零头;这里的内零头为0.8KB,因为作业5.2KB,占据了6个页面,但是最后一个面只存放了0.2KB的作业,剩下0.8KB是空着的;

解(3):

内存容量为64MB,页面大小为4KB,则内存一共可以分为16*2^10个页面,位示图又是表示这些页面的,故位示图需要

2^14bit来存储这些页面状态,(这里的页面也就是页框,也可以说是物理块,盘块,总之指的是物理意义的盘块)

就需要2^11B=2KB

 

题目5:

解(1):

由于页面大小为4KB,故页内偏移量有12位

1.当访问2362H时,实际上访问的就是2号页,后面12位是页内偏移量嘛,前4位是虚拟页号

先访问快表10ns,但是访问最开始是空的,未命中

再去访问慢表,慢表在内存中,从慢表里面找到了2号页,100ns

此时通过合成的物理地址,再去找真正的页面所在,100ns

故210ns

2.当访问1565H

实际上访问的是1号页,顺序:快表未命中-慢表未命中-产生缺页中断-访问快表-访问真正的地址

时间=220ns+10^8ns

注意:此时的快表里面已经有2号页和1号页了

3.当访问25A5H

访问的是2号页,顺序:快表命中-访问合成后的物理地址=110ns

解(2):

当访问1565H,由于缺页中断,会调入一个页面进驻留集,由于是LUR算法,且刚刚访问过2号页

驻留集此时存放着2号页和0号页,一共就只能存两个,要换就只能换0号页,故1号页放到驻留集中1号页的位置

对应的页框为101H,即页框号,则最终的物理地址合起来就行了:101565H

 

题目6:

已知系统为32位实地址,采用48位虚地址,页面大小为4KB,页表项大小为8B,每段最大为4GB

问:若系统采用段页式存储,则每用户最多可以有多少个段?段内采用几级页表?

解:

每个段的大小为4GB=2^32B,占了32位,而虚地址是48位,故段号占据16位

段号的序号为0~2^16-1,故每个用户最多可以有2^16个段

段内地址32位,又分为页号和页内偏移,页内偏移为12位,则页号20位

一个页面存放2^9个页表项,故一个页面可以表示9位,20/9往上取整为3,故段内采取3级页表

 

题目7:

 

解:

把虚拟地址转换成二进制

0100 0000H=0000 0001 0000 0000 0000 0000 0000 0000 B,标粗部分是页目录号

0111 2048H=0000 0001 0001 0001 0010 0000 0100 1000 B

页目录号都为4,页表号一个为0,一个为264

但问的是进行地址转换共访问多少个二级页表,页目录对应二级二表,故共访问一个二级页表

 

题目8

 

解:

设最大页面大小为2^yB,则一个页面最多存放2^(y-3)个页表项

故每级页表的大小为(y-3)位,4(y-3)+y≤64,则y≤15.2,故y最大可以取15

则系统最大支持的页面大小为32KB,此时的虚拟地址划分为

空闲1位 一级索引12位 二级索引12位 三级索引12位 四级索引12位 页内偏移15位

 

 

题目9:

 

解:

寄存器PDBR用于保存当前进程页目录的起始物理地址

可以根据这个页目录的起始物理地址快速的找到想要的页目录项

目标表项的物理地址=PDBR+页目录号*表项长度

PDBR是为了找让系统能快速找到页表的起始地址而设置的,而页表记录了逻辑地址到物理地址的一个映射关系

不同的进程他们的空间是不相同的,所以进行进程切换,这个页表也应当变化。

或者说变化为另一个进程的页表;

故进程切换时,PDBR会更新为新进程的页目录起始地址(除此之外,还要清空TLB,Cache,因此进程的切换代价较大)

同一进程的线程共享进程的地址空间,因此同一进程的线程切换时,PDBR内容无需更改(TLB,cache内容依然有效,故线程的切换代价小很多)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有