计算机系统 内存管理,计算机操作系统题库之内存管理(三)

虚地址即程序执行时所要访问的内存地址。

[v_act]错

对 [/v_act]

虚地址通常指的是逻辑地址,而程序执行所要访问的内存地址指的是物理地址!!!

交换可以解决内存不足的问题,因此,交换页实现了虚拟存储。

[v_act]错

对 [/v_act]

如果对换是以整个进程为单位的,便称之为“整体对换”或“进程对换”。

这种对换被广泛地应用于分时系统中,其目的是用来解决内存紧张问题,并可进一步提高内存的利用 率。

而如果对换是以“页”或“段”为单位进行的,则分别称之为“页面对换”或“分段 对换”,又统称为“部分对换”。

这种对换方法是实现后面要讲到的请求分页和请求分段式 存储管理的基础,其目的是为了支持虚拟存储系统。

为了使程序在内存中浮动,编程时都使用逻辑地址。因此,必须在地址转换后才能得到主存的物理地址。

[v_act]错

对 [/v_act]

如果通过MMU转换是把虚拟地址转化为物理地址,但是也可以不通过MMU转化,直接给出物理地址。ARM编程的时候可以这样,x86不清楚,所以是错的。

虚拟存储的实现是基于程序局部性原理,其实质是借助外存将内存较小的物理地址空间转化为较大的逻辑地址空间。

[v_act]错

对[/v_act]

虚拟存储的实现是基于程序局部性原理,其实质是借助外存将内存较小的物理地址空间转化为较大的逻辑地址空间

虚存容量仅受外存容量的限制。

[v_act]错

对 [/v_act]

虚存容量受两方面限制:1、指令中表示地址的 字长 ;2、外存的容量

即取两者中的MIN

虚存容量=min(内存容量+外存容量,2^N)(N为计算机的地址总线的长度)

早期的Unix操作系统,没有提供虚拟存储器,为了使容量有限的内存能支持较大的规模的程序,系统除采用正文段共享和自我覆盖技术外,主要采用了程序对换技术来扩充存储容量,使其具有类似于虚拟存储器的作用。

[v_act]错

对[/v_act]

gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

静态页式管理可以实现虚存。

[v_act]错

对 [/v_act]

静态页式管理是一次性为要求内存的进程分配足够多的页面,无法将外存的空间利用起来实现虚存

用可变分区法可以比较有效的消除外部碎片,但不能消除内部碎片。

[v_act]错

对 [/v_act]

可变分区法依据进程的要求为进程灵活地分配空间,通俗的理解可以是量体裁衣,对每一个人都进行量体裁衣的话,有可能就会导致剩下的空间无法满足下一个进程的请求,因此概述为可以消除内部碎u,不能消除外部碎片。

gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

系统中内存不足程序所需大小,程序就无法执行。

[v_act]错

对 [/v_act]

操作系统存在虚拟内存,能够把一部分优先级较低的程序保存到系统硬盘

把作业装入内存时随即进行地址变换的方式称为( )。

[v_act]静态重定位 [/v_act]

什么是动态链接?用何种内存分配方法可以实现这种链接?

[v_act]动态链接就是指当程序运行到需要调用某一模块时,再去链接。

对于未使用的模块就可以不必链接。采用段式内存分配方法可以实现这种动态链接。 [/v_act]

为什么静态重定位后的程序在内存中不能移动?为什么动态重定位的程序在内存中可以移动?

[v_act]静态重定位后的程序在内存中不能移动的原因如下:静态重定位后的程序的代码发生了变化,由原来逻辑地址的程序已经变为物理地址的程序,按物理地址的方式运行,因此不能再进行移动。

动态重定位的程序在内存中可以移动的原因如下:动态重定位是在程序运行过程中由硬件进行地址变换,变换的结果存放在内存地址寄存器中。

程序代码并没有发生变化,仍然是逻辑地址的代码,按逻辑地址的方式运行。

因此,在内存中移动程序代码之后,仅需要根据代码新的起始位置,重新设定基地址寄存器的值。 [/v_act]

设某进程分得的内存页面数为m ,其需访问的页面个数为p其中有n个不相同的页面,对于任意置换算法,求:

(1)页面失效次数的下限。

(2)页面失效次数的上限。

[v_act]设某进程分得的内存页面数为m,其需访问的页面个数为p,其中有n个不相同的页面,对于任意转换算法(1)下限是n(2)上限是p

说明:因为页面序列中有n个不同的页号,这n个页面肯定是通过页面失效中断装入内存的,故失效数的下限是n;因为页面序列的长度是p,即使每个页面都失效,其次数也不会超过p,故上限是p。 [/v_act]

虚存管理与实存管理的根本区别是什么?

[v_act]根本区别就在于,虚拟管理允许部分装入和部分对换,而实存管理不允许这样做。

所谓”部分装入”,指的是一道应用程序不是全部装入内存以后才开始执行而是只装入其中一部分,甚至一点都不装入就开始运行,然后在运行的构成中根据需要逐步的装入其余部分;

“部分对换”,指的是当内存已满而又有新的将”部分”需要装入时,要把已在内存的某一”部分”换出去,以腾出空间存放新来者。

部分装入和部分对换的结果是可以用较小的内存运行较大的程序。

实存管理则不同,它所要求的是整体装入。 [/v_act]

就虚存回答以下问题: (1)虚存的应用背景是什么? (2)虚存的可行性是什么? (3)实现虚存的主要技术是什么? (4)虚存可以有多大?

[v_act]1、虚存的应用背景是用小内存运行大程序。这里的”大程序”是指比整个内存用户空间还要大的程序,它可以是一道程序,也可以是多道程序之和。

2、虚存的可行基础是程序运行的局部性原理。

3、实现虚存的主要技术是部分装入、部分对换、局部覆盖、动态重定位。

4、从原理上讲,虚存空间就是CPU逻辑地址所给出的空间。例如,逻辑地址是25位,则虚存空间就是225=32MB;但实际的虚拟存储器的容量还要受辅存和内存空间之和的限制,实际的虚存容量不能超过这两个物理空间之和。 [/v_act]

考虑一个有快表的请求分页系统,设内存的读写周期为1ns,内外存之间传送一个页面的平均时间为5000ns,快表的命中率为80%,页面失效率为10%,求内存的有效存取时间。

[v_act]内存的有效存取时间EAT(Efficent Access Time)也叫平均存取时间AAT(Average Access Time),其计算公式如下:EAT=1ns×80%+2ns×10%+(5000ns+2ns) ×10%=0.8ns+0.2ns+500.2ns=501.2ns [/v_act]

在采用首次适应算法回收内存时,可能会出现几种情况,该如何处理?

[v_act]1、回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收分区分配新表项,而只须修改其前一分区F1的大小。

2、回收区与插入点的后一个空闲分区F2相邻接,此时应将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲分区的首址,大小为两者之和。

3、回收区同时与插入点的前、后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和。

4、回收区既不与F1邻接,又不与F2邻接。这时应为回收区单独建立一新表项,添写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置。 [/v_act]

主存空间信息保护有哪些措施?

[v_act]保存主存空间中的信息一般采用以下措施:

① 程序执行时访问属于自己主存区域的信息,允许它既可读,又可写;

② 对共享区域中的信息只可读,不可修改;

③ 对非共享区域或非自己的主存区域中的信息既不可读,也不可写。 [/v_act]

怎样对内存进行分区?

[v_act]对内存空间的划分是可以静态的,也可以动态的;可以是等长的,也可以不等长。

静态划分是指系统运行之前就将内存空间划分成若干区域,通常,分配给进程的内存可能比进程实际所需的区域长。

动态划分是在系统运行过程中才划分内存空间。

这样,系统可按进程所需要的存储空间大小为其分配恰好满足要求的一个或多个区域。

等长分区是将存储空间划分为若干个长度相同的区域。

不等长分区则是将存储空间划分若干个长度不同的区域。 [/v_act]

虚存储器的含义是什么?

[v_act]虚存储器有两层含义,一是指用户程序的逻辑地址构成的地址空间;

二是指当内存容量不满足用户要求时,采用一种将内存空间与外存空间有机地结合在一起,利用内外存自动调度的方法构成一个大的存储器,从而给用户程序提供更大的访问空间。[/v_act]

一个分页存储器的页表存放在内存。 (1)若内存的存取周期为0.6ms,则CPU从内存取一条指令(或一个操作数)需多少时间? (2)若使用快表且快表的命中率为75%,则内存的平均存取周期为多少?

[v_act]一个分页存储器的页表存放在内存

1、因为页表放在内存,故取一条指令(或一个操作数)须访问两次内存,所以需0.6ms×2=1.2ms的时间。

2、这里家假设访问快表的时间忽略不计,命中快表时,取数只要一次访问,故此时的平均存取周期为0.6ms×0.75+1.2ms×(1-0.75)=0.75ms [/v_act]

在请求分页系统中,某用户的编程空间为16个页面,每页1K,分配的内存空间为8K。假定某时刻该用户的页表如下图所示,试问:

(1)逻辑地址084B(H)对应的物理地址是多少?(用十六进制表示)

(2)逻辑地址5000(十进制)对应的物理地址是多少?(用十进制表示)

(3)当该用户进程欲访问24A0H单元时,会出现什么现象?

页号 块号

0 3

1 7

2 4

3 1

4 12

5 9

6 61

7 20

[v_act]

1、答:104B(H)

2、答:13192

3、答: 24A0(H)的页号为9,而其页面当前不在内存,所以会发一个缺页中断,请求系统调页。 [/v_act]

逻辑地址=页号*页面大小+页内地址

物理地址=块号*块大小(也就是页面大小)+页内地址

页号=逻辑地址/页面大小=084B(H)/1K=2,对应块号为4,

页内地址=逻辑地址 mod 页面大小==084B(H)mod 1K=75,

物理地址=4*1K+75=104B(H)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值