操作系统概念-内存管理

2024-09-06 02:32

本文主要是介绍操作系统概念-内存管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1请说明内部碎片和外部碎片的区别:

答:内部碎片(internalfragment),通常是指将内存以固定大小的块进行分配,采用这种方案,进程所分配的内存可能比所需的大,

多出来的未被使用的内存叫做内部碎片。

外部碎片(externalfragment),通常是指随着进程移进移出内存,内存的空闲空间被分割成小片段,当所有的总的可用内存之和可以满足分配请求,但是却不连续,就出现了外部碎片问题。

页式虚拟存储系统存在内部碎片,段式虚拟存储系统存在外部碎片(需解释此处)

相关知识点:1分页

分页(paging)允许进程的物理地址空间是非连续的,

基本实现方法是将物理内存分成固定大小的帧(frame),把逻辑内存分成固定的页(page),且页的大小等于帧。


如果逻辑地址空间共有2^m,每页的大小是2^nbyteor word), 则逻辑地址的高

m-n位表示页码,低n位表示页内的偏移量。

分页技术不会产生外部碎片,但是有内部碎片,现在,页的大小一般为4-8KB


注意用户进程一般情况是不能访问非它所占用的内存的,它无法访问其页表所规定的之外的内存,那么这是怎么做到的呢?

每个进程都有自己的页表。通常有一位与页表中的每一个条目相关联,有效-无效位,当该位有效,表示相关的页在此进程的逻辑地址空间内,也就是说该页被分配了帧。如果无效位,就表示该页不在此进程的逻辑地址空间内,由此可以捕捉到非法的地址。

由于操作系统管理物理内存,它必须知道内存中所有帧的分配情况,由此,操作系统维持着一个帧表,每个条目对应一个帧。表示该帧是否被占用,如果占用,被哪个进程的哪个页占用。










页码在TLB中被查找到的百分率成为命中率,假如查找TLB20ns,访问内存100ns,如果hit,则需要时间100ns,如果没有hit,则需要时间20+100+100= 220ns, assume 命中率80%,则有效内存访问时间0.8* 120 + 0.2 *220 = 140ns.






2考虑下列生成二进制的过程,编译器被用来生成单个单元的目标代码,链接器被用来将多个目标单元合并成一个程序二进制,链接器如何改变指令和数据到内存地址的绑定?需要什么信息从编译器传递给链接器,以协助完成链接器的内存绑定:

答:不会。以后再答


3如果有内存块100KB500KB200KB300KB,和600KB,(按顺序),首次适应算法,最佳适应算法,最差适应算法各自将怎样放置大小分别为212KB417KB,112KB426KB的进程,哪一种算法的内存利用率高:

答:

first-fit:

212KB-> 500KB

417kb-> 600KB

112kb-> 288KB(500KB- 212KB = 288KB)

426kb-> wait

best-fit:

212KB-> 300KB

417KB-> 500KB

112KB-> 200KB

426KB-> 600KB

worst-fit:

212KB-> 600KB

417KB-> 500KB

112KB-> 388KB(600KB- 212KB = 388KB)

426Kb-> wait:

best-fitis best way in allocating memory.


相关知识:以上三种方法都属于动态存储分配问题

1首次适应算法:分配第一个连续的足够大的内存块,查找可以从头开始,也可以从上次首适应结束时开始,一旦找到足够大的内存块,就停止查找。

2最佳适应:分配最小的连续的足够大的内存块。

3最差适应:分配最大的连续的足够大的内存块。

模拟结果显示,首次和最佳均好于最差适应,但是首次和最佳差不多。




4假设一个将页表放在内存中的分页系统:

a如果一次内存访问需要200ns,访问一页内存要用多长时间。

b如果加入TLB,并且75%的页表引用发生在TLB,内存的有效访问时间是多少,(假设在TLB中查找页表项的占用零时间,如果页表项在其中。)

答:a: 200ns + 200ns = 400ns

b0.75*200ns + 0.25 * 400ns = 250ns.


5为什么时常将分页和分段在同一个方案里面结合使用:

答:将分段和分页结合,获取分页和分段的好处,又一定程度避免单独分页和分段的坏处。

相关知识点:

在页式存储系统中,一个存在的问题是,页表的条目太大,且供用户使用的逻辑地址是连续的,导致大型程序缺乏逻辑结构。用户希望他们的程序是由若干段构成的。当一个进程被调用时,它的各个段被调用内存并且构造段表。

段式管理的内存分配和释放:

1当进程要求调入某一段时,内存中有足够的空闲区满足条件,采用和动态内存管理方法(前面有提到)分配内容(注意此时产生外部碎片)。

2内存中没有足够的空闲区满足该段的内存要求。就置换出一段时间内不会被CPU访问的段。


分段式的好处

段的逻辑独立性使其易于编译、管理、修改和保护,也便于多道程序共享。

段长可以根据需要动态改变,允许自由调度,以便有效利用主存空间。

方便编程,分段共享,分段保护,动态链接,动态增长



因为段的长度不固定,段式虚拟存储器也有一些缺点:

主存空间分配比较麻烦。

容易在段间留下许多碎片,造成存储空间利用率降低。

由于段长不一定是2的整数次幂,因而不能简单地像分页方式那样用虚拟地址和实存地址的最低若干二进制位作为段内地址,并与段号进行直接拼接,必须用加法操作通过段起址与段内地址的求和运算得到物理地址。因此,段式存储管理比页式存储管理方式需要更多的硬件支持。

一个C编译器可能会创建如下段:

1代码2全局变量34每个线程采用的栈5标准的C库函数。

编译时链接的库可能被分配不同的段,加载程序装入这些段,并分配段号。

逻辑地址:

<segment-number,offset>.


6试说明为什么使用分段比使用纯分页更容易共享一个可重入模块:

答:在纯分页的系统中,所谓共享就是将多个进程的页表项指向相同的帧,这很困难,首先1页与帧的对应操作对用户进程其实是透明的。2被共享的部分不一定刚好是一个完整的页面大小,这样就包含了本不该包含的信息,不利于保密

在分段的系统中,多个进程的段表的相应表项都指向可重用模块的统一物理副本。因为段表中有存储段的长度,所以可以防止越界。多道程序设计,要防止一个进程读取数据时,另一个进程修改共享模块的数据和代码。


7某系统采用分页存储管理方式,拥有逻辑空间32页,每页2K,拥有物理内存1M

1写出逻辑地址的格式

2若不考虑访问权限,进程的页表项有多少项,每项至少有多少位?

3如果物理空间减少一半,页表结构应做怎么样的调整。

1<page-number, offset> page-number = 5 offset = 11

232 ,每项至少有9

3如果物理空间减少一半,页表项数目不变,逻辑地址

<page_number,offset> page_number = 5 offset = 11

每项至少是8位。










8请描述段页式管理系统:

为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理、存储保护相地址变换等。另外,由于一个段又被划分成了若干页,每个段又必须建立一张页表以把段中的虚页变换成内存中的实际页面。显然,与页式管理时相同,页表中也要有相应的实现缺页中断处理和页面保护等功能的表项。另外,由于在段页式管理中,页表不再是属于进程而是属于某个段,因此,段表中应有专项指出该段所对应页表的页表始址和页表长度。

在段页式管理系统中,要对内存中指令或数据进行一次存取的话,至少需要访问三次以上的内存:

第一次是由段表地址寄存器得段表始址后访问段表,由此取出对应段的页表在内存中的地址。第二次则是访问页表得到所要访问的物理地址。第三次才能访问真正需要访问的物理单元。这将使CPU的执行指令速度大大降低。为了提高地址转换速度,设置相关的寄存器保存当前最常用的段号->页表,页表->页号等。

这篇关于操作系统概念-内存管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140747

相关文章

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo