【王道操作系统】内存管理

内存管理概念

1.C

2.D

存储保护的作用:保证各道作业在各自的存储空间内运行,互不干扰

实现虚拟内存管理需要请求分页(请求分段、请求段页)等技术的支持,故需要硬件支持,比如页表机制、中断机构、地址变换机构等

3.B

创建和死锁都处于等待资源的状态,可以被换出主存

处于临界段的时候,意味着进程获取了这个资源,但是此时不能确定进程是处于运行状态还是继续状态,所以也是可能被换出主存的

I/O操作是等待一个I/O数据,但是I/O数据是不能长期存储在外存的。而且新来的进程可能也许需要读取I/O数据(从缓冲区拿),或者旧有的数据可能因为某些操作丢失,所以I/O数据需要立即存储。如果一个进程正在进行I/O操作,被换出主存,它的数据就有可能遗失,所以不能换出主存。

4.A

覆盖的思想是一个程序在运行过程中,并不是所有部分都时时刻刻会被用到。所以在主存分配给一个程序的空间中,将其划分为固定区和覆盖区。程序在运行的时候,新调入的部分可以覆盖掉之前的段。打破了一个程序必须全部装入主存才能运行的限制

交换的思想是把处于等待状态的进程从内存移到辅存,把准备好竞争CPU资源的进程从辅存移到内存。

这两者的区别是交换是针对不同进程,覆盖是针对一个程序或进程不同的段

这两者都是从逻辑上扩充主存的容量(节省主存空间)

5.A

分区分配有两种方式:固定分区分配和动态分区分配,相同点是用户程序都要存放在连续的内存空间中。

通过重定位寄存器和界地址寄存器确定程序的物理地址,实现逻辑地址到物理地址的转换

其中界地址寄存器是分区分配内存管理方式的主要保护措施

6.B

最佳适配算法:优先使用可满足需求且最小的空闲分区进行分配

7.C

段页式存储管理需要三次访存。每个进程有一张段表,每个段有一张页表。

8.C

内存保护是操作系统的一个功能,但是也需要硬件机构合作。

比如分区分配内存管理方式需要界地址寄存器的支持,在页式管理机构中有页地址越界保护机制,在段式管理机构中有段地址越界保护机制。

这些都需要操作系统和硬件结构合作,才能实现各道作业在各自的存储空间内运行,互不干扰

9.B

在存储管理方案中,只有可变分区存储管理可以采用覆盖技术。

覆盖技术是指将多个程序或数据存放在同一块物理内存上,而每次只有一个程序或数据处于活动状态。在覆盖技术中,程序或数据通常按逻辑被分成多个较小的模块,这些模块被逐个装入内存,并在不需要时被及时交换出去。

单一连续区存储管理、段式存储管理和段页式存储管理都是静态分区管理方式,其分配的内存空间大小是固定的,不能进行动态的内存调度和覆盖操作。因此,这些管理方式不能采用覆盖技术。

值得注意的是,虽然可变分区存储管理可以采用覆盖技术,但是它并不是覆盖技术的必要条件,因为可变分区管理本身就具有动态内存分配和管理的能力,在某些情况下,可变分区管理也可以不使用覆盖技术来实现程序的动态内存调度。

10.D

11.C

最佳适应算法会寻找容量最小且能满足需求的空间予以分配

12.B

(2,154)代表段号为2,段内偏移为154

逻辑地址--->物理地址 会检查两个东西:段号是否越界,段内偏移是否越界,如果都没有越界,物理地址就是段号对应的内存起始地址加上段内偏移;如果有越界,就会停止寻找物理地址,并产生越界异常

 

13.D

重定位是装入过程的一个行为

重定位分为静态重定位和动态重定位

        静态重定位是在存储空间向地址空间转换的时候,是一次性完成的,在装入的过程中要求分配给它完全的地址空间。在分配完以后,这个地址空间就不再改变了。

        动态重定位是在程序运行的过程中,通过重定位寄存器将程序部分装入

百度百科介绍:

1、静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变,故称为静态重定位。

2、动态重定位:它不是在程序装入内存时完成的,而是CPU每次访问内存时 由动态地址变换机构(硬件)自动进行把相对地址转换绝对地址。动态重定位需要软件和硬件相互配合完成。

14.A

对于可变分区:克服外部碎片可以通过紧凑 (Compaction) 技术来解决,即操作系统不时地对进程进行移动和整理。但这需要动态重定位寄存器的支持,且相对费时。

        即,可变分区程序的位置可能会移动,不适用于静态重定位。

非连续的内存分配也被分为固定分区和可变分区。前者被称为分页,后者被称为分段。

        页式和段式都不能满足静态重定位要求的一次装入,故不适用于静态重定位。

15.A

拼接技术就是紧凑技术,通过合并空闲区,减少碎片空间,同时可以分配给更大的程序

16.

页式存储管理中,逻辑地址分为页号和业内偏移。页的大小为4K,所以业内偏移为12位。

逻辑地址为0,所以页号和业内偏移都是0,页号0对应块号2

所以物理地址为 首地址+业内偏移:4096*2+0=8192

17.B

18.B

19.A

20.C

21.C

页表的大小是固定的,但是段表是人为按照逻辑分配的,不能比较页表和段表的大小,故不能确定

22.B

分页是操作系统实现的,分段是编程人员或者操作人员实现的

23.D

24.A

整个系统中设有一个界地址寄存器和重定位寄存器,在发生程序切换的时候,只需要更改界地址寄存器和重定位寄存器中的内容即可

25.B

分段是用户决定的

26.A

链接分为静态链接和动态链接

静态链接是指连接过程完全在装入之前,链接完成之后就不再拆开,直接形成一个模块装入

动态链接分为在装入的时候动态链接和在执行的时候动态链接。对于已经装入内存的动态链接,就不能再按照物理地址加以区分,只能通过分段,即逻辑上的划分进行连接。

27.B   C

编译和连接过程中的地址都是逻辑地址,而逻辑地址的地址起始编号为0

28.D

可重入代码只需在内存中保存一份,而不需要随着进程频繁地调入调出,从而减少了对换数量、改善了系统性能

29.A

存储管理的代价一般指的是额外占用的空间,对于分页、分段、段页式都需要额外的空间保存页表、段表、段表和页表。

但是分区,无论是可变分区还是固定分区,都是直接划分的,不需要额外的存储空间去记录每个分区的大小,所以代价最小。

30.A

在三个阶段:编译、链接和装入,前两个都是逻辑地址,装入是将逻辑地址转换为物理地址

31.D

32.B

33.B

虚拟存储技术有:多次性、对换性、虚拟性

34.D

对于III,如果先用较小的页面,那么最后在用大的页面的时候产生的内部碎片可能就比较大,所以优先考虑较大的页面

35.B

分页技术中,必须把主存空间划分为大小相等且固定的块

划分页面大小与内存和外存的大小无关,而与时间效率和空间效率相关

划分页面大小与CPU地址结构无关,但是可以根据CPU地址结构来确定页面大小

36.A

方便编程:方便操作人员划分数据段、堆栈段等

信息保护和共享:我们对每个存储空间进行命名,更容易精确地对存储空间进行保护和共享

动态增长及动态链接:动态链接就是连接部分在装入部分之后,此时的链接就是逻辑上的链接,而分段管理就是根据逻辑进行管理和控制

分段管理方式的长度是不确定的,还需要额外记录起始地址、终止地址等,比分页更为复杂

37.C

存储管理就是对内存进行一定的划分,比如分区、分页、分段

方便用户:方便用户找到自己的程序运行

方便提高内存利用率:减少碎片,提高内存利用率

38.B

无论是什么存储方式,对主存的访问都是以字节或字为单位

比如分页管理,最终也是需要根据页号+页内偏移得到具体的地址才能访问

39.B

 40.A

单用户连续分配只允许单用户、单任务程序装入内存,不适合多道程序设计

41.A

分页存储以物理块为单位划分主存

B:动态分区以作业的大小分配

C/D:分段存储以物理段/逻辑记录大小进行分配

42.C

段表也在内存中,故在段式分配中,需要两次访问内存

43.B

44.B

分页存储管理中,作业地址空间是一维的,即单一的线性地址空间,程序员只需要一个记忆符来表示地址。在分段存储分配管理中,段之间是独立的,而且段长不定长而页长是固定的,因此作业地址空间是二维的,程序员在标识一个地址时,既需给出段名又需给出段内地址。

换句话来说,对于分页存储只需给出一个地址,因为知道页内偏移的位数,所以可以确定出页号和业内偏移量。

而对于分段存储,因为短的长度不同,段内偏移也不尽相同,还需要给出段内偏移占多少位

45.A

每个进程都独立拥有一张页表,控制程序部分调入调出

进程的PCB中记录的页表始址和页表长度不会改变,如果页表被调入调出,可能页表始址会改变,导致无法找到页表,从而无法找到对应程序部分所在位置。所以页表应该常驻内存

如果系统采用多级页表存储管理,只有第一级页表需要常驻内存

46.C

47.A

48.B

分段主要方便用户编程,用于管理用户地址空间

分页使用一维存储结构较为简单,用于管理物理存储空间

49.D

50.C

开启快表TLB时,如果命中就只需要一次访存;没命中就需要两次访存

关闭快表TLB时,无论如何都需要两次访存

51.B

 52. A

53.D

54.D

55.

动态分区解决了内部碎片的问题,但也会带来外部碎片问题,可以采用紧凑技术解决,不过消耗较高。

56.

最佳适应算法可以满足

57.

58.

如果提问页表最大占多少个页框?

        因为页框大小<--->页内偏移,即2的12次方

        故页表最大占2的22次方/2的12次方,即1K个页框

 (2)使用无符号右移>>>和按位与&

(3)

页号(Page Number)是虚拟内存地址中用于标识页的部分。

页框号(Page Frame Number)是物理内存地址中用于标识页框的部分。

计算页表项物理地址时:页号要根据虚拟内存地址来划分

        物理地址=页表始址+页号*页表项长度

计算页框号时:要根据物理地址来划分。所以页框号1:00900H,页框号2:00901H

物理地址:页内偏移12位,即一页4K,所以代码页面2起始地址0090 1000H

59.

60. 段式存储管理系统中,先后有两次合法性检查

①段号是否越界

②段内偏移量是否越界

61.题目说明程序可以最大有32页,但是系统只支持16页===>一定是采用了虚拟内存技术,所以这里的分页不是基本分页,而是请求分页存储管理。

此外,用户程序有10页长,而页表只有4页,部分调入===>请求分页存储管理(因为基本分页的页表会全部存储在内存中)

62.物理地址最好用十六进制表示

63.

64.

65.有效存取时间就是平均存取时间

注意:

  

66.

虚拟内存管理

1.B

2.B

3.B

产生缺页中断时,处理完中断返回被中断的那条指令,重新执行。这样就能保证再次访问逻辑地址的时候,可以被访问,从而指令能继续执行下去

4.D

5.B

6.B

7.A

8.C

时间局部性原理指的是:一个指令执行后在一段时间后还会被再次执行。所以指令的相关性应该多一点好

9.B

10.D

11.C

12.D

除了FIFO算法,其他算法都不会导致Belady异常。所以当可供分配的页帧数增加时,缺页终端的次数只可能减少或保持不变,不可能增加!

13.D

14.B

15.C

页面失效次数包括预调页的缺页中断次数

页面淘汰次数不包括预调页的缺页中断次数

16.D

LRU算法需要使用一个寄存器,通过栈这种数据结构做硬件支持,并不特殊

耗费高的原因是需要对所有的页进行排序

17.A

合法位,也叫状态位,记录页是否在内存中

页故障就是缺页中断

18.D

抖动产生的原因是某个进程频繁访问的页面数目远高于可用的物理页帧数目,这和使用的策略没有关系,所有的策略都可能引起抖动

19.C

20.B

21.B

22.C

状态位/合法位:供是否发生缺页中断参考

访问字段和修改位:供置换算法参考

23.D

内存抖动是指频繁地引起主存页面淘汰后又立即调入,调入后又很快淘汰的现象。这是由页面置换算法不合理引起的一种现象,是页面置换算法应当尽量避免的。

24.B

 25.B

26.C

27. C

 28.A

29.C

与虚实地址转换相关的页表很有可能被修改,所以无论是否增大交换区,它都会被放在交换区

30.A

31.A

32.C

33.A

倒推法:从后往前数四个不同的数字,最后那个就是要被淘汰的页号

34.A

求工作集:从某时刻从后往前数窗口大小个数,筛选重复值,就是此时的工作集

35.1)覆盖技术与虚拟存储技术最本质的不同在于覆盖程序段的最大长度要受内存容量大小的限制,而虚拟存储器中程序的最大长度不受内存容量的限制,只受计算机地址结构的限制。另外,覆盖技术中的覆盖段由程序员设计,且要求覆盖段中的各个覆盖具有相对独立性,不存在直接联系或相互交叉访问;而虚拟存储技术对用户的程序段之间没有这种要求。

2)交换技术就是把暂时不用的某个程序及数据从内存移到外存中去,以便腾出必要的内存空间,或把指定的程序或数据从外存读到内存中的一种内存扩充技术。交换技术与虚存中使用的调入/调出技术的主要相同点是:都要在内存与外存之间交换信息。交换技术与虚存中使用的调入/调出技术的主要区别是:交换技术调入/调出整个进程,因此一个进程的大小要受内存容量大小的限制;而虚存中使用的调入/调出技术在内存和外存之间来回传递的是页面或分段,而不是整个进程,从而使得进程的地址映射具有了更大的灵活性,且允许进程的大小比可用的内存空间大。

36.

37.发生缺页中断以后,处理完中断重新执行命令,直接查快表就能查到相应的页

38.上限都是p次,下限都是n次

39.

(1)

 

(2)物理地址是页框号和页内偏移直接拼接,不是相加!

40.物理块数为3时:

        OPT:7/12

        FIFO:9/12

        LRU:10/12

物理块数为4时:

        OPT:6/12

        FIFO:10/12

        LRU:8/12

41.

1)磁盘利用率高,说明页面发生了抖动,内存中分配的页框数不够,导致频繁地发生缺页、调页,需要大量的磁盘I/O。而CPU利用率低,这是因为CPU大量时间都用来等待调页I/O的完成。所以增加并发进程不能提高CPU的利用率。

2)磁盘利用率低,但是CPU已经接近满负荷,这说明目前进程很少发生缺页,内存和磁盘能够承受负荷。但是由于CPU已经接近满负荷,所以增加并发进程对CPU利用率的提升作用不大。

3)CPU和磁盘利用率都很低,说明CPU大量空闲,增加并发进程数能够显著提高CPU利用率。

42.

43.(1)四级页表,页内偏移12位

(2)0.98x(10+100)+0.02x(10+100+100)=112ns

(3)多级页表中,如果采用快表机制,快表命中可以直接计算出最终目标的物理地址,无需再查更低级的页表。没有命中,则需要层层页表去查。

(4)

(5)段页式是段内再分页

44.

45.

46.

47.

(1)21

(2)32

(3)41

48.对于CLOCK算法,各个页面排成一个环形,按装入内存的时间排序;扫描指针默认指向最先装入的页面

 49.(1)50次

      (2)5000次

      (3)10000次

50.(1)

 (2)

(3)

注意细节:

51.

(1)/(2) 

(3)

52.

53.(3)由于页目录号没有改变,所以访问的是同一个二级页表

54.

 


第三章 内存管理 到此结束~

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值