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

news2024/12/24 8:58:28

内存管理概念

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.

 


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/674605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【五子棋实战】第1章 项目架构与开发思路

【五子棋实战】第1章 项目总览 前言 ## 项目技术栈 ## 项目可配置性 博客目录 项目预览 项目代码获取 项目架构 ## 架构&#xff1a;前端页面 算法接口 ## 前端页面 ## 算法接口 开发思路 前言 五子棋是一种古老而受欢迎的棋类游戏&#xff0c;本博客将介绍如何使用…

Matplotlib-直方图、箱型图

1. 直方图 hist函数来创建一个直方图。下面是对各个参数的解释&#xff1a; x&#xff1a;要绘制直方图的数据序列。bins&#xff1a;指定直方图的边界范围和间隔。这里使用range(40, 110, 6)表示边界从40到110&#xff0c;间隔为6。facecolor&#xff1a;直方图的填充颜色。…

unity UGUI源码分析(4)Text与TextMeshPro

这一篇博客用于分析Text的内容的更新机制&#xff0c;并分析text mesh pro。 首先我们分析Text的文字是如何渲染出来的。 PupulateWithErrors方法会根据字符串生成顶点数据。其实Text会根据所给定的字符串生成相关的图集&#xff0c;然后对图集进行采样就可以渲染出文字了。由…

【五子棋实战】第3章 算法包装成第三方接口

【五子棋实战】第3章 算法包装成第三方接口 使用Flask开放接口 ## 定义接口输入 ## 开放接口、跨域配置、数据解析 数据预处理 ## 数据检查与异常捕获 ## 预处理数据 ## 定义接口输出 开启接口 继续学习下一篇实战&#xff01; 我们在上一章实现了博弈树负值极大alpha…

最适合入门的100个深度学习实战项目

&#x1f6a8;注意&#x1f6a8;&#xff1a;最近经粉丝反馈&#xff0c;发现有些订阅者将此专栏内容进行二次售卖&#xff0c;特在此声明&#xff0c;本专栏内容仅供学习&#xff0c;不得以任何方式进行售卖&#xff0c;未经作者许可不得对本专栏内容行使发表权、署名权、修改…

Linux系统安装nginx+入门笔记

安装过程 1.加载wget命令 yum install wget 2.拉取安装包 wget https://nginx.org/download/nginx-1.16.1.tar.gz 3.解压安装包 tar -zxvf nginx-1.16.1.tar.gz 4.执行这个命令自动配置一下 5.编译安装 make make install 6.查看nginx安装的位置 whereis nginx 7.…

基于Python的反爬虫技术的研究设计与实现

博主介绍&#xff1a;擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例…

链表刷题(4~8)

目录 反转链表 返回中间节点 倒数k个节点 链表分割 判断回文 反转链表 单链表刷题时我们遇到过一个反转链表&#xff0c;那时我们采用的是头插的方式达到反转的效果&#xff0c;那能不能把指针反过来呢&#xff1f;答案是可以的。 这里用三个指针是为了记录后面节点的数据&…

SpringBoot+Vue 的智慧养老系统(Java 项目,附源码,数据库)

作者&#xff1a;程序员徐师兄 个人简介&#xff1a;7 年大厂程序员经历&#xff0c;擅长Java、微信小程序、Python、Android等&#xff0c;大家有这一块的问题可以一起交流&#xff01; 各类成品java毕设 。javaweb&#xff0c;ssh&#xff0c;ssm&#xff0c;springboot等等项…

Jira 8.4.1在Windows环境下的安装和配置

一. Jira安装的环境准备 1.JDK1.8的下载和安装 Jira的运行是依赖java环境的&#xff0c;也就是说需要安装JDK并且要是1.8以上版本。(网上搜一下教程) 2.MySQL数据库的下载和安装(网上搜一下教程) 数据库版本&#xff1a;MySQL5.6&#xff0c;版本太高有时会出现连接不到的…

从双目标定到立体匹配:pyton实践指南

文章目录 前言标定立体匹配文章已经同步更新在3D视觉工坊啦&#xff0c;原文链接如下&#xff1a; 前言 立体匹配是计算机视觉中的一个重要领域&#xff0c;旨在将从不同角度拍摄的图像匹配起来&#xff0c;以创建类似人类视觉的3D效果。实现立体匹配的过程需要涉及许多步骤&a…

华为OD机试真题B卷 Java 实现【统计每个月兔子的总数】,附详细解题思路

一、题目描述 有一种兔子&#xff0c;从出生后第3个月起每个月都生一只兔子&#xff0c;小兔子长到第三个月后每个月又生一只兔子。 例如&#xff1a;假设一只兔子第3个月出生&#xff0c;那么它第5个月开始会每个月生一只兔子。 一月的时候有一只兔子&#xff0c;假如兔子都…

dvwa靶场通关(七)

第七关&#xff1a;SQL Injection&#xff08;sql注入&#xff09; low 我们输入 1,出现报错信息&#xff0c;根据报错信息可知&#xff0c;查询语句是单引号闭合的字符型 接着判断字段数 1 order by 3# 报错 1 order by 2# 正常 所以字段数就是2 利用联合查询爆出数据库名…

农村小子背井离乡北漂的这些年

人生虽不尽人意、生活也并不完美、可生活依旧很美 1. 写在前面 由于工作变动及其他种种原因吧&#xff0c;很长的一段时间内没有再去写文章。始于2019年初夏&#xff0c;止于2020年初冬&#xff0c;再次落笔于2023年的夏季。恰好今天是端午节&#xff0c;祝大家端午安康 白驹过…

springboot第28集:springboot一些概念

DataScopeAspect 数据过滤处理 此切面在执行带有ControllerDataScope注解的方法之前进行数据权限过滤。首先获取当前登录用户&#xff0c;然后判断当前用户是否为超级管理员。如果不是超级管理员&#xff0c;则获取权限字符&#xff0c;默认使用上下文中的权限字符。接下来&am…

【计算机组成原理】2、二进制和十六进制转换,进制相减、内存地址偏移计算与容量计算

文章目录 一、进制转换1.1 二进制转十六进制1.2 十六进制转二进制 二、进制相减2.1 十六进制 三、内存地址偏移计算3.1 根据首末地址&#xff0c;求存储容量3.2 根据末地址 和 存储容量&#xff0c;求首地址 一、进制转换 1.1 二进制转十六进制 因 2 4 16 2^416 2416&#…

leetcode300. 最长递增子序列(动态规划-java)

最长递增子序列 leetcode300. 最长递增子序列题目描述解题思路代码演示: 二分法改进(N * logN)动态规划专题 leetcode300. 最长递增子序列 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/longest-increasing-subsequenc…

C++标准输出

C将输入和输出看作字节流&#xff0c;输入时&#xff0c;程序从输入流中抽取字节&#xff0c;输出时&#xff0c;程序将自己插入到输出流中&#xff0c;流充当了程序与流源或流目标之间的桥梁&#xff0c;也就是说C通过流与硬件&#xff0c;文件相关联&#xff0c;流赋予了C程序…

[数字图像处理]第六章 彩色图像处理

第六章 彩色图像处理 引言 ​ 彩色图像处理可分为两个主要领域&#xff1a;全彩色处理和伪彩色处理。在第一类中&#xff0c; 通常要求图像用全彩色传感器获取&#xff0c;如彩色电视摄像机或彩色扫描仪。在第二类中&#xff0c;问题是对一种特定的单色灰度或灰度范围赋予一种…

设计模式之装饰者模式笔记

设计模式之装饰者模式笔记 说明Decorator(装饰)目录装饰者模式示例类图快餐类炒饭类炒面类装饰者类鸡蛋类培根类测试类 说明 记录下学习设计模式-装饰者模式的写法。JDK使用版本为1.8版本。 Decorator(装饰) 意图:动态地给一个对象添加一些额外的职责。 结构: 其中&#x…