内容简介:逻辑地址:用户程序经编译后,每个目标模块以0为基地址进行的顺序编址,它不是主存中的真实地址,是相对基地址而言的。物理地址:主存中各存储单元的地址,从统一的基地址进行的顺序编制,是主存中的真实地址,存储空间:是地址的集合。
逻辑地址:用户程序经编译后,每个目标模块以0为基地址进行的顺序编址,它不是主存中的真实地址,是相对基地址而言的。
物理地址:主存中各存储单元的地址,从统一的基地址进行的顺序编制,是主存中的真实地址, 可以寻址 并实际存在,物理地址又称绝对地址
存储空间:是地址的集合。
分区存储管理
固定分区存储管理
预先把可分配的主存储器空间分割成若干个连续区域,每个区域的大小可以相同,也可以不同,存储管理需设置一张“主存分配表”,例如:
当标志位为0 的时候代表没有被占用,如果某一个分区分配给一个作业后,则在状态标志栏里填上占用该分区的作业名。
特点: 存储空间利用率不高,但是分配简单
可变分区存储管理
根据作业的大小来划分分区,要装入一个作业时,根据作业的需要的主存量查看主存中是否有足够的空间,按需分配,分区的个数也是随机,可以避免空间浪费,但是管理起来,稍微复杂。
具体过程:
当一个新的作业要求装入,必须找一个足够大的空闲区,把该作业装入该区,如果找到的空闲去大于作业需求量,则作业装入后把原来的空闲区分成两部分,一部分给作业,另一部分变成较小的空闲区。当该作业撤离时,如果 归还区域和其他空闲区相邻,则可以合成一个较大的空闲区
主存分配表:已分配区情况表,未分配区情况表
如图:当要装入长度为30K的作业时,先从未分配的情况表中找到长度为36K的空闲区,此时在已分配区添加一条新的条目记录30K的分配,标记作业,然后在未分配表中修改之前长度36K的空闲区的起始地址,长度。作业撤离的时候,将分配区情况表中的标志置为空,将回收的分区以及相邻空闲的分区一起登记到未分配情况表。由于分区的个数不定,则表格最好用链表
分区存储管理的放置策略
-
首次适应算法
目的:尽量减少查找时间
具体做法:把空闲区按地址从小到大排列在未分配表,每次按照顺序查找未分配表,把最先找到的满足需求的地址最小的那个空闲分区作为分配对象,这种算法有利于大作业的装入,但是回收的时候,必须移动表格中的登记(重新插入新的记录,保持从大到小)
特点:简单,保证有大的空闲分区,保证大作业的执行
-
最佳适应算法
目的:尽可能不把大的空闲区分割成小的分区,保证大作业的需要
方法: 从空闲区挑选一个能满足作业要求的最小分区 ,这样可以保证不去分割一个更大的区域,使得装入大作业比较容易,但是如果所要求的略大,则分割后的剩下空闲区就太小,以至于无法使用。
具体做法:把空闲区按从小到大排序,从最小的区开始查找,一直到能满足要求的区为止。回收的时候,也要对表格重新排序。
特点:比较费时,麻烦
-
最坏适应算法
目的:让中,小作业比较好装入
具体做法:挑选一个最大的空闲区分割给作业使用,可以让剩下的空闲区不至于太小,这种分配算法把空闲区从大到小排序,回收的时候,也要对表格重新排序。
移动技术
当未分配表中找不到一个足够大的空闲区来装入作业的时候,可以采用移动技术把主存中的作业改变存放区域,
空闲分区的合并方案:
-
调度到某个作业时,系统中的每个空闲分区的尺寸都比它所需要的存储量小,但是空闲区的总存储量大于它的需求,于是进行存储区的合并
-
只有作业运行完毕归还他所占用的存储分区,系统就进行空闲分区合并
一般采用第一种方案。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 系统解读 Kafka 的流和表(二):主题、分区和存储
- VMware 扩容 Fedora 虚拟机磁盘后调整分区并拉伸文件系统
- Linux 中获取硬盘分区或文件系统的 UUID 的七种方法
- db2 定义分区表和分区键
- HBase漫谈 | HBase分区过多影响&合理分区数量
- 大数据开发学习之Hive的静态分区与动态分区
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux多线程服务端编程
陈硕 / 电子工业出版社 / 2013-1-15 / 89.00元
本书主要讲述采用现代C++ 在x86-64 Linux 上编写多线程TCP 网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。这是在Linux 下以native 语言编写用户态高性能网络程序最成熟的模式,掌握之后可顺利地开发各类常见的服务端网络应用程序。本书以muduo 网络库为例,讲解这种编程模型的使用方法及注意事项。 本......一起来看看 《Linux多线程服务端编程》 这本书的介绍吧!