计算机操作系统(第四版)第四章存储器管理—课后习题答案

news2024/11/23 19:23:59

def97529fc2749abb16a1327969450e3.png

e5fda00ed99249c595a3af1fbe04db02.png

992767c3f72c43d4bd35a08461a5b13c.png  

1.为什么要配置层次存储器?

(1)设置多个存储器可以使存储器两端的硬件能并行工作。
(2)采用多级存储系统,特别是Cache技术,这是一种减轻存储器带宽对系统性能影响的最佳结构方案。
(3)在微处理机内部设置各种缓冲存储器,以减轻对存储器存取的压力。增加CPU中寄存器的数量,也可大大缓解对存储器的压力。

2.可采用哪几种方式将程序装入内存?它们分别适用于何种场合?

(1)首先由编译程序将用户源代码编译成若干目标模块,再由链接程序将编译后形成的目标模块和所需的库函数链接在一起,组成一个装入模块,再由装入程序将装入模块装入内存;
(2)装入模块的方式有:绝对装入方式,可重定位方式和动态运行时装入方式;
(3)绝对装入方式适用于单道程序环境下;
(4)可重定位方式适用于多道程序环境下;
(5)动态运行时装入方式也适用于到多道程序环境下。

3.何谓静态链接?静态链接时需要解决两个什么问题?

静态链接是指在程序运行之前,先将各自目标模块及它们所需的库函数,链接成一个完整的装入模块,以后不再拆开的链接方式。

将几个目标链接装配成一个装入模块时,需解决以下两个问题:

将相对地址进行修改。即将除第一个模块外的相对地址修改成装入模块中的相应的相对地址。

变换外部调用符号。即将每个模块中所用的外部调用符号,都变换为相对地址。

4.何谓装入时动态链接?装入时动态链接方式有何优点?

这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。
优点:便于修改和更新;便于实现对目标模块的共享。

5.何谓运行时动态链接?运行时动态链接方式有何优点?

运行时动态链接是将对某些模块的链接推迟到程序执行时才进行链接,也就是,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。

优点:凡是在执行过程中未被用过的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅能加快程序的装入过程,而且可节省大量的内存空间。

6.在动态分配方式中,应如何将各空闲分区链接成空闲分区链?

在每个分区的起始部分,​设置一些控制分区分配的信息,​以及用于链接各分区所用的前向指针; 在分区尾部设置一个后向指针,​​通过前后向链接指针,​将所有空闲分区链成一个双向链。当分区分配出去后,把状态位由​“0 改” 为 “1 。” 

7.为什么要引入动态重定位?如何实现?

在动态运行时转入的方式中,作业装入内存后的所有地址仍然都是相对逻辑地址。而将相对地址转换为绝对(物理)地址的工作被推迟到程序指令要真正执行时进行。为使地址的转换不会影响到指令的执行速度,必须有硬件地址变换机构的支持,程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。
地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行的,故称为动态重定位。当系统对内存进行了“紧凑”,而使若干程序从内存的某处移至另一处时,不需对程序做任何修改,只要用该程序在内存的新起始地址去置换原来的起始地址即可。

8.什么是基于顺序搜索的动态分区分配算法?它可分为哪几种?

依次搜索空闲分配分区链上的空闲分区,去寻找一个其大小能满足要求的分区,就是基于顺序搜索的动态分区分配算法。
分为四种:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。

9.在采用首次适应算法回收内存中,可能出现哪几种情况?应怎样处理这些情况?

1、回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收分区分配新表项,而只须修改其前一分区F1的大小。
2、回收区与插入点的后一个空闲分区F2相邻接,此时应将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲分区的首址,大小为两者之和。
3、回收区同时与插入点的前、后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和。
4、回收区既不与F1邻接,又不与F2邻接。这时应为回收区单独建立一新表项,添写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置。

10.什么是基于索引搜索的动态分区分配算法?它可分为哪几种?

我们把空闲分区按照某种属性(通常是大小)分类,把每一类都链接起来形成一个链表,建立一个表把每类链表的相关信息写进去以供索引,按照这个数据分配空闲分区的算法叫做基于索引搜索的动态分区分配算法。
它分为快速适应算法、伙伴系统、哈希算法。

11.令buddyk(x)为大小2k、地址为x的块的伙伴系统地址,试写出buddyk(x)的通用表达式。


bf93abd5cdda44d9a5b1790773453184.png

 

12.分区存储管理中常用哪些分配策略?比较它们的优缺点。

分区存储管理中的常用分配策略:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。
首次适应算法优缺点:​保留了高址部分的大空闲区,​有利于后来的大型作业分配;​低址部分不断被划分,留下许多难以利用的小空闲区,每次查找都从低址开始增加了系统开销。
循环首次适应算法优缺点:​内存空闲分区分布均匀,​减少了查找系统开销; 缺乏大空闲分区,导致不能装入大型作业。
最佳适应算法优缺点:​每次分配给文件的都是最适合该文件大小的分区,​内存中留下许多难
以利用的小空闲区。
最坏适应算法优缺点:​剩下空闲区不太小,​产生碎片几率小,​对中小型文件分配分区操作有利;存储器中缺乏大空闲区,对大型文件分区分配不利。

13.为什么要引入对换?对换可分为哪几种类型?

一方面,在内存中的某些进程由于事情尚未发生而被阻塞运行,但它却占用了大量的内存空间,甚至有可能出现内存中所有进程都被阻塞,而无可运行之进程,迫使CPU停止下来等待的情况;另一方面,却又有着许多作业,因内存空间不足,一直驻留在外存上,而不能进入内存运行。为此引入对换。
整体对换和页面(分段)对换。

14.对文件管理区的目标和对对换空间管理的目标有何不同?

对文件管理区的主要目标是提高文件存储空间的利用率,然后才是提高对文件的访问速度。
对对换空间管理的主要目标,是提高进程换入和换出的速度,然后才是提高文件存储空间的利用率。

15.为实现对换,系统应具备哪几方面的功能?

对对换空间的管理、进程的换入、进程的换出

16.在以进程为单位进行对换时,每次是否都将整个进程换出?为什么?

在选择换出进程后,在对进程换出时,只能换出非共享的程序和数据段,而对于那些共享的程序和数据段,只要还有进程需要它,就不能被换出。

17.基于离散分配时所用的基本单位不同,可将离散分配分为哪几种?

分页存储管理方式、分段存储管理方式、段页式存储管理方式。

18.什么是页面?什么是物理块?页面的大小应如何确定?

将进程的逻辑地址空间分成若干等分,同时相应的把内存也分成若干等分,前者产生的分组叫做页面,后者产生的分组称为物理块或页框。页面的大小应选择适中,应该是2的幂,通常为1K~8K,根据分配算法灵活变化。

19.什么是页表?页表的作用是什么?


在分页系统中,允许将进程的各个页离散地存储在内存的任一物理块中,为保证进程仍然能够正确地运行,即能在内存中找到每个页面所对应的物理块,系统又为每个进程建立了一张页面映像表,简称页表。
页表的作用是实现从页号到物理块号的地址映射。

20.为实现分页存储管理,需要哪些硬件支持?

动态重定位技术、虚拟存储技术、多道程序设计技术。

21.在分页系统中是如何实现地址变换的?

利用地址变换机构实现从逻辑地址到物理地址的转变换,通过页表来实现从页号到物理块号的变换,将逻辑地址中的页号转换为内存中的物理块号。

22.具有快表时是如何实现地址变换的?

首先,以前转换过程中查找过的页表项会被记录在快表之中。在每次需要访问逻辑地址中的数据的时候,都会根据页号先到快表中查看有没有对应的匹配项,如果有就直接得到相应的物理块号而不需要进过利用始址、页号和页表项长度计算后去内存中查表。得到物理块号后依然是送到物理地址寄存器中和页内地址结合形成最后的物理地址。

23.较详细地说明引入分段存储管理是为了满足用户哪几方面的需要?

方便编程、信息共享、信息保护、动态增长、动态链接。

24.在具有快表的段页式存储管理中,如何实现地址变换?

在 CPU 给出有效地址后,由地址变换机构自动将页号​​P 送入高速缓冲寄存器,并将此页号与高速缓存中的所有页号比较,​​若找到匹配页号,​表示要访问的页表项在快表中。​可直接从快表读出该页对应物理块号,​送到物理地址寄存器中。​如快表中没有对应页表项,​则再访问内存页表, 找到后, 把从页表项中读出物理块号送地址寄存器;同时修改快表,将此页表项存入快表。但若寄存器已满,则​OS 必须找到合适的页表项换出。

25.为什么说分段系统比分页系统更易于实现信息的共享和保护?

分页系统的每个页面是分散存储的,为了实现信息共享和保护,页面之间需要一一对应,为此需要建立大量的页表项;而分段系统的每个段都从0编址,并采用一段连续的地址空间,在实现共享和保护时,只需为要共享和保护的程序设置一个段表项,将其中的基址与内存地址一一对应就能够实现。

26.分页和分段存储管理有何区别?

(1)页是信息的物理单位,分页是为了实现离散分配方式,以削减内存的外部零头,提高内存的利用率。段则是信息的逻辑单位,它含有一组相对完整的信息。
(2)页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机械硬件实现的,因而在系统中只能有一种大小的页面;而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对原程序进行编译时,根据信息的性质来划分。
(3)分页的作业地址空间是一维的,而分段作业地址空间则是二维的。

27.试全面比较连续分配和离散分配方式。

(1)连续分配是指为一个用户程序分配一个连续的地址空间,包括单一和分区两种分配方式。单一方式将内存分为系统区和用户区,最简单,只用于单用户单任务操作系统;分区方式分固定和动态分区。
(2)离散分配方式分为分页、分段和段页式存储管理。分页式存储管理旨在提高内存利用率,分段式存储管理旨在满足用户(程序员)的需要,段页式存储管理则将两者结合起来,具有分段系统便于实现、可共享、易于保护和动态链接等优点,又能像分页系统很好解决外部碎片及为各段可离散分配内存等问题,是比较有效的存储管理方式。

 

 

 

 

 

 

 

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

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

相关文章

《Java8实战》第5章 使用流

上一章已经体验到流让你从外部迭代转向内部迭代。 5.1 筛选 看如何选择流中的元素:用谓词筛选,筛选出各不相同的元素。 5.1.1 用谓词筛选 filter 方法,该操作会接受一个谓词(一个返回boolean 的函数)作为参数&am…

MySQL数据库:聚合函数、分组查询、约束、默认值设置、自增属性

一、聚合函数 1.聚合函数 在MySQL数据库中预定义好的一些数据统计函数。 2.count(*) 功能:统计结果条数。 3.sum(字段名) 功能:对指定字段的数据求和。 4.avg(字段名) 功能:对指定字段的数据求平均值。 5.max(字段名) 和 min(字段名) …

正则化的基本认识

正则化(一) 拟合与欠拟合(二) 正则化的目的(三) 惩罚项(3.1)常用的惩罚项:(3.2)L-P范数:(3.3)L1与L2的选择:(一) 拟合与欠拟合 欠拟合: 是指测试级与训练集都…

docker目录映射

docker 常用命令 docker ps // 查看所有正在运行容器 docker stop containerId // containerId 是容器的ID docker ps -a // 查看所有容器 $ docker ps -a -q // 查看所有容器ID docker stop $(docker ps -a -q) // stop停止所有容器 docker rm $(docker ps -a -q) // remove删…

受害者有罪论——如何反驳

目录 一、那些「受害者有罪论」的说法 二、「受害者有罪论」的潜台词 三、如何反驳 反驳1:让受害者有罪论者感同身受 反驳2:说理 反驳3: 直接指出结论的错误 反驳4:与对方无关,不用多费唇舌 四、罪犯就是罪犯&…

golang-gin框架入门

基础 快速入门 gin完整支持路由框架支持全局异常(错误)处理内置渲染高可扩展 组件 在gin框架中四个基本组件是: Engine:是web server的根数据结构,也是基础容器;它包含复用器、中间件和配置设置。类似S…

GC 垃圾回收算法、垃圾回收器及 JVM 调优【JVM知识点-resu】

JVM知识点 详情请见:垃圾回收算法、垃圾收集器详情请见:JVM调优 1 GC垃圾回收算法 众所周知,Java的内存管理是交由了JVM,那么程序时时刻刻都在产生新对象,为了避免内存溢出,此时必然会涉及到垃圾回收&…

【MySQL数据库原理】Python3.7 中连接 MySQL 数据库

目录 1、安装mysql-connector-python2、连接 MySQL 数据库3、修改数据库1、安装mysql-connector-python 要在 Python 中连接 MySQL 数据库 “test”,可以使用 “mysql-connector-python” 包。首先,确保已经安装了该包。可以使用 pip 命令进行安装: pip install mysql-con…

[abc复盘] abc297 20230409

[atc复盘] abc297 20230409 一、本周周赛总结A - Double Click1. 题目描述2. 思路分析3. 代码实现B - chess9601. 题目描述2. 思路分析3. 代码实现C - PC on the Table1. 题目描述2. 思路分析3. 代码实现D - Count Subtractions1. 题目描述2. 思路分析3. 代码实现E - Kth Takoy…

Spring 04 -SpringAOP开发

SpringAOP开发SpringAOP1 原理2 动态代理2.1 JDK动态代理2.2.2 Cglib动态代理2.2.3 **JDK动态代理和Cglib动态代理**3 SpringAOP3.1 AOP专业术语3.2 环境搭建3.3 基于XML配置3.4 基于注解配置2.5 通知类型面向切面编程,在不修改源代码的情况加,对类功能实…

人工智能中的顶级会议

当搭建好了AI领域的知识架构,即具备了较好的数学、编程及专业领域知识后,如果想在AI领域追踪前沿研究,就不能再只看教材了。毕竟AI领域的发展一日千里,教材上的知识肯定不是最新的。此时,应该将关注的重点转向AI领域的…

JavaWeb - Web网站的组成,工作流程以及开发模式

一. Web Web:全球广域网,也称玩万维网(www Wrold Wide Web),就是能够通过浏览器访问的网站学习Web开发,其实就是要使用Java这门语言来开发这样的Web网站,这也是现在Java语言最主流的企业级应用方式。使用Java语言开发…

Nginx基本配置 Nginx服务基础Nginx访问控制Nginx虚拟主机

本章结构 Nginx服务基础 Nginx访问控制 Nginx虚拟主机 原理: 关于Nginx 一款高性能、轻量级Web服务软件 稳定性高 系统资源消耗低 apache多线程或多进程实现连接(多线程比多线程稍微好些,切换资源浪费少) Nginx单线程 对HTTP并发…

自己动手写CPU——第二篇

1 ori指令说明 ori是进行逻辑 或 运算的指令,其指令格式如下所示 从以上的指令格式,我们可以直到,这是一个I类型指令,ori指令的指令码是 6‘b001101,所以当处理器发现正在处理的指令的高6bit 是 001101 的时候&#x…

vue3 css相关知识与动态style

scoped 当 <style> 标签带有 scoped attribute 的时候&#xff0c;它的 CSS 只会影响当前组件的元素&#xff0c;和 Shadow DOM 中的样式封装类似。 <style scoped lang"scss"> </style> 注意 &#xff1a; 作用域样式并没有消除对 class 的需求…

DN-DETR源码学习记录

DN-DETR是在DAB-DETR的基础上完成的&#xff0c;DN-DETR的作者认为导致DETR类模型收敛慢的原因在于匈牙利匹配所导致的二义性&#xff0c;即匈牙利算法匹配的离散性和模型训练的随机性&#xff0c;导致ground-truth的匹配变成了一个动态的、不稳定的过程。举个例子&#xff0c;…

字节青训营(前端)打卡day01_计网

计算机网络概论 1.前沿和课程介绍 自顶向下、自底向上 网络分层、网络协议、网络应用、HTTP123、CDN GPT. 计算机网络的发展历程可以分为四个阶段&#xff1a;单机、局域网、广域网、互联网 2.蟹堡王帝国 顾客&#xff1a;客户端 分店&#xff1a;服务端 小区转发点&…

【FFmpeg】编码器流程分析

目录1 编译2 调用关系2.1 第一帧没有获取到码流&#xff0c;第二帧获取到一帧码流2.2 送帧为NULL&#xff0c;刷新编码器获取剩余的全部码流3 总结4 感受1 编译 参考文件doc/examples/encode_video.c&#xff0c;使用x264作为编码器&#xff0c;需要先安装x264&#xff0c;编译…

如何用ChatGPT写毕业论文?

老早之前就听说有同学用ChatGPT写论文了 但是一直不觉得人工智能够真的替代人类 正好最近毕业论文开始降重了&#xff0c;超高的重复率愁得我快睡不着了 刷微博突然看到这个有关ChatGPT的问题。 出于好奇的我决定先来试试这个ChatGPT到底能不能帮我解决降重问题哈哈哈 点击…

shell脚本基础之处理脚本输入

处理输入命令行参数读取参数读取脚本名测试参数特殊参数变量参数统计获取所有参数移动变量处理选项查找选项处理简单选项分离选项和参数处理带值的选项getopt 命令命令格式在脚本中使用getoptgetopts命令脚本选项标准化获取用户的输入基本的读取超时隐藏式读取文件中读取在此之…