- 2
- 0
- 约6.3千字
- 约 66页
- 2021-02-15 发布于天津
- 举报
操作系统 8MB 2MB 8MB 4MB 12MB 20MB (b) 异长分区 图 3.4 固定分区划分 固定分区:异长 固定分区:异长 ? 将内存空间划分为若干个长度不同的分 区,以适合于不同大小的进程需要 ? 既提高存储空间的利用率、减少浪费, 又使长进程能装入运行。 ? 但是,确定每个分区的大小也是一件十 分困难的事情。 固定分区 ? 管理简单,只需要建立一张分区使用表,登记 分区的使用情况。(等长分区只需要标明分区 状态是已分配,还是空闲) 分区号 ( 可省略 ) 大小 起始地址 状态 1 20 40 未分配 2 50 60 已分配 3 50 110 未分配 4 100 160 已分配 5 200 260 已分配 固定分区:分配 ? 首先,检索分区使用表,从中找出一个尚未分 配的、能满足大小且内零头最小的分区。 ? 若分区使用表中的分区按从小到大的顺序排列, 则分配时,从表中的第一个表项开始查找,找 到的第一个尚未分配并满足大小的分区即是最 佳的分区。 ? 将分区使用表中该分区的状态修改为已分配。 ? 若找不到大小足够的分区,则系统将拒绝运行 该进程,或采用其它技术进行处理,如覆盖技 术等。 ? 固定分区存在内零头,浪费存储空间: ? 异长分区较等长分区可以一定程度上提 高系统的性能,但并不能彻底解决问题。 分页式划分 (Paging) ? 为了提高内存资源的利用率,可以考虑将分区 长度缩小,减少内零头浪费的空间。 ? 但是,这样做必须有一个前提,即进程可以分 配若干不连续的存储空间。否则,小分区可能 使更多的进程无法装入内存。 ? 分页划分:系统预先将内存空间划分为若干较 小的、固定大小的页框。 15 0 2 1 3 内存 页框号 图 3.5 分页式划分 分页式划分 (Paging) ? 页框较小,有效地减少了内零头的浪费 ? 每个进程平均浪费 0.5 页框大小。 ? 页框大小固定,简化了存储分配。 ? 需要记录内存页框的分配和使用情况:位示图、 空闲页框表或空闲页框链表等。 分页:数据结构 ? 位示图 是一个由 0 、 1 构成的向量,其中每一位 (bit) 表示一个页框的使用状态。一般规定, 0 表 示页框空闲, 1 表示页框已被分配。 ? 假定存储空间被划分为 n 个页框,所有页框依 次编号为 0,1,2, … ,n-1 ,则记录所有页框的使用 状态的位示图形如: 000001110111111111110001111 … 0011111 分页:数据结构 ? 空闲页框表 : 以表格形式记载内存页框 的使用情况。 ? 显然,为每一个空闲页框设置一个表项 是不合理的,这将导致页框表太大。 ? 可以为一组连续的空闲页框设置一个表 项,其中主要包括:首页框号和页框个 数,如表 3.2 所示。 分页:数据结构 表 3.2 空闲页框表 首页框号 页框个数 50 100 220 30 300 80 450 210 分页:数据结构 ? 位示图和空闲页框表都需要占用专门的存储空 间 ? 空闲页框链表 :是将内存中所有的空闲页框通 过其内的链接指针连成一个链表,系统只需要 记录链表头的位置。 ? 为进程分配存储空间时,从链表头开始取所需 的页框,同时更新链表头。 ? 回收进程释放的存储空间时,将新产生的空闲 页框链接到空闲页框链表中。 动态划分与分配算法 ? 静态划分未考虑进程的实际需要。无论是固定 分区,还是分页,都存在不同程度的内零头。 ? 动态划分:根据进程的实际需要,动态地划分 内存空间,并分配给进程,彻底解决了内零头 问题。 ? 系统初始化时,内存用户区就是一个大分区。 随着进程的创建和撤消,内存被动态划分成若 干较小的分区。 动态划分与分配算法 例如, 如图 3.6 ? 有一个 128MB 的内存,其中操作系统自身占用 8MB ,剩下的 120MB 空间供用户进程使用。 ? 依次装入进程 P1 、 P2 、 P3 、 P4 、 P5 、 P6 ,剩 下一个 10MB 的空闲分区。 ? 一段时间之后,进程 P1 、 P3 、 P5 执行结束,释 放出 3 个空闲分区。内存中共有 4 个空闲分区,
原创力文档

文档评论(0)