操作系统导论课后作业-第十七章答案

2024-04-04 09:28

本文主要是介绍操作系统导论课后作业-第十七章答案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

课程作业-第十七章:

17.1首先以标志flag -n 10 -H 0 -p BEST -s 0运行程序来产生一些随机的分配和空闲。你能预测malloc()/free()会返回什么吗?你可以在每次请求后猜测空闲列表的状态吗?随着时间的推移,你对空闲列表有什么发现?

答:

使用以下命令./malloc.py -n 10 -H 0 -p BEST -s 0来模拟内存的随机分配和释放过程。模拟程序设定了一块大小为100的空间,其基地址为1000,头部大小为0,并采用了最优匹配的分配策略。

首先尝试分配一个大小为3的空间,模拟程序返回了起始地址1000,此时内存列表中剩余一个大小为97的空闲块。当释放这块空间后,模拟程序返回0表示释放成功,此时内存列表中包含两个空闲块,大小分别为3和97。

接下来,分配一个大小为5的空间,得到地址1003,此时内存列表更新为两个空闲块,大小分别为3和92。再次释放后,内存列表中出现了三个空闲块,大小分别为3、5和92。

然后,分配一个大小为8的空间,模拟程序返回地址1008,此时内存列表更新为三个空闲块,大小分别为3、5和84。释放后,内存列表中的空闲块数量增加到四个,大小分别为3、5、8和84。

在第四次分配时,尽管存在一个大小为8的空闲块,但模拟程序仍然返回了地址1008,这可能是由于模拟程序的设计或特定规则导致的。释放后,内存列表的状态保持不变。

第五次分配大小为2的空间时,模拟程序返回了地址1000,这意味着它从大小为3的空闲块中分割出了一部分。此时,内存列表更新为四个空闲块,大小分别为1、5、8和84。

最后,在第六次分配中,请求一个大小为7的空间,模拟程序返回了地址1008,并将之前大小为8的空闲块分割为两个块。此时,内存列表中的空闲块大小变为1、5、1和84。

如下图所示:

可以使用带有-c参数的命令./malloc.py -n 10 -H 0 -p BEST -s 0 -c来查看模拟的详细结果。结果显示,模拟过程与之前的分析是一致的。然而,模拟程序在空闲块的管理上并没有实现合并功能,可能会导致随着时间的推移,内存碎片逐渐增多。如下图所示:

17.3如果使用首次匹配(-p FIRST)会如何?使用首次匹配时,什么变快了?

答:

使用命令./malloc.py -n 10 -H 0 -p FIRST -s 0 -c,可以观察到首次分配策略的实际效果。如下图所示:

与BEST分配策略相比,FIRST分配策略在分配内存时,所需搜索的元素数量明显减少。这是因为首次分配策略仅需找到第一个满足需求的空闲块即可,无需像最优分配策略那样每次都要遍历所有空闲块。因此,使用FIRST分配策略时,查找空闲块所消耗的时间将大幅减少。

17.4对于上述问题,列表在保持有序时,可能会影响某些策略找到空闲位置所需的时间。使用不同的空闲列表排序(-l ADDRSORT,-l SIZESORT +,-l SIZESORT-)查看策略和列表排序如何相互影响。

答:

经过对比不同分配策略在不同空闲列表排序方式下的分配情况,发现以下规律:

①对于最优(BEST)和最差(WORST)这样的分配策略,空闲列表的排序方式并不会对其效率产生任何影响。无论空闲块如何排列,这两种分配策略在每次分配时都需要全面遍历所有的空闲块。

②但是对于首次(FIRST)分配策略来说,情况就有所不同。空闲列表的排序方式会直接影响其分配效率。这是因为首次分配策略的核心思路是找到首个足够大的空闲块,因此空闲块的排列顺序对于其分配效率至关重要。

综上所述,分配策略的效率与其具体的执行思路紧密相关,而空闲列表的排序方式则是对部分分配策略效率产生影响的因素之一。

具体的模拟结果如下图所示:

(1)BEST分配策略:

(2)FIRST分配策略:

(3)WORST分配策略:

这篇关于操作系统导论课后作业-第十七章答案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

poj 3104 二分答案

题意: n件湿度为num的衣服,每秒钟自己可以蒸发掉1个湿度。 然而如果使用了暖炉,每秒可以烧掉k个湿度,但不计算蒸发了。 现在问这么多的衣服,怎么烧事件最短。 解析: 二分答案咯。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <c

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

【附答案】C/C++ 最常见50道面试题

文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的`if`语句面试题 3:深入理解`sizeof`与`strlen`的差异面试题 4:解析C与C++中`static`关键字的不同用途面试题 5:比较C语言的`malloc`与C++的`new`面试题 6:实现一个“标准”的`MIN`宏面试题 7:指针是否可以是`volatile`面试题 8:探讨`a`和`&a`

1、简述linux操作系统启动流程

1、简述linux操作系统启动流程 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。开机时将ROM中的指令映射到RAM的低地址空间,CPU读取到这些指令,硬件的健康状况进行检查,按照BIOS中设置的启

操作系统是怎么为不同的程序分配所需的内存空间的

操作系统为不同的程序分配内存空间的过程涉及多个关键步骤,确保每个程序都有其所需的内存资源,同时避免程序之间的冲突。以下是操作系统如何为程序分配内存空间的详细过程: 1. 内存管理的基础概念 虚拟内存:现代操作系统使用虚拟内存机制来为程序提供隔离的内存空间。每个程序运行在其独立的虚拟地址空间中,这使得程序间的内存互不干扰。物理内存:实际的 RAM(随机存取存储器),由操作系统和硬件共同管理。虚拟

C语言程序与设计第四版课后习题 - 1~8章大合集

前言 本文章是一个大合集,按照课后习题的命名方式命名,方便寻找,只需要在目录上点相对应的题号即可在这里插入图片描述 第一章课后习题 1.1 编写一个C程序 题目概述: 请参照本章例题,编写一个C程序,输出一下信息: *****************************Very good!***************************** 代码实现: #define

Java高级Day38-网络编程作业

112.网络编程作业 //1.使用字符流的方式,编写一个客户端程序和服务器端程序//2.客户端发送"name",服务器端接收到后,返回"我是nova"//3.客户端发送"hobby",服务器端接收到后,返回"编写java程序"//4.不是这两个问题,回复"你说啥呢"​​===============//客户端//===============public class SocketT

操作系统安全保护

操作系统安全概述 概念:满足安全策略要求,具有响应安全机制及安全功符合特定安全标准,在一定约束条件下 能抵御常见网络安全威胁,保障自身安全运行及资源安全 安全等级:根据安全功能和安全保障要求分为 用户自主保护级  系统审计保护级 安全标记保护级 结构化保护级 访问验证保护级 操作系统作用: 负责计算系统的资源管理、支撑和控制各种应用程序运行,为用户提供计算机系统管理接口 是构成网络信息