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

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

相关文章

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

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

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

作业提交过程之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(随机存取存储器),由操作系统和硬件共同管理。虚拟