操作系统——存储管理

操作系统——存储管理 

该部分功能:
1、地址映射(逻辑地址——>主存物理地址)
    由操作系统中的装入程序loader来完成(静态或动态<执行时重定位寄存器完成>)。
2、内存分配和回收
3、存储保护(保证用户程序在各自的存储区域内操作互不干扰)
4、提供虚拟存储技术(不受实际物理内存限制,只受cpu位数限制)

单一连续区存储管理
分区存储管理
覆盖和交换技术
页式存储管理
段页式存储管理


一、单一连续存储区管理

1、内存分为: 系统区 和 用户区  ——>应用程序装入到用户区可使用用户区全部空间。
最简单的一种内存管理方式,适用于单用户、单任务的OS.
优点: 易于管理
缺点:同单道程序一样,内存利用率低。

二、分区存储管理
原理 :把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区,每个应用进程占用一个或几个分区。
特点: 适用于多道程序系统 和 分时系统 ——>支持多个程序并发执行。

1、固定分区: 把内存划分为若干个固定大小的连续分区(大小同 或 不同)
采用数据结构: 分区表(分区号、起始地址、长度、占用标识)
优点:易于实现、开销小
缺点:存在内部碎片(分区内未被利用空间)、分区总数固定,限制了并发执行的程序数量。

2、动态创建分区:按照程序申请要求分配。
优点: 没有内部碎片 缺点:有外部碎片(难以利用的小空闲分区)

3、分区分配 与回收算法
分配——首次适应法(主要集中在内存低端,不断划分后容易产生较多小分区)、最佳适应法(找到相差最小的分区,外部小碎片会较多)、最坏适应(基本不留下小的空闲分区)

4、存储保护
用户程序间的相互干扰——界限寄存器保护、 限长寄存器

5、覆盖 和 交换技术
覆盖:一个程序的几个代码段 或 数据段, 按照时间先后占用公共的内存空间。
    较小的内存中运行较大程序,(需要程序员指定覆盖关系)
交换:将暂时不能执行的程序交换到外村,给其他就绪进程让出空间。
     增加并发进程数量,(增加处理器开销)

页式存储管理
 1、引入: 分区存储管理的主要问题是: 碎片问题, 原因: 用户程序是整体装入。
 2、原理:程序地址空间分成大小相等的页面,同时把内存也分成与页面大小相等的 块 。
           内存分配单位: 页面(块) 2的n次方 kB
3、优点: 没有外部碎片,最后一页可能有内碎片但不大; 程序不必连续存放;便于改变程序占用空间大小。
4、缺点: 程序仍需要全部装入内存。
5、普通状态下,访问程序数据要两次访问内存;引入联想寄存器(快表),只需要一次访问内存
改进为 请求页式存储管理

页表表项中 有特征位(标识该页是否在内存)
要访问的页面不存在——缺页中断
页面淘汰算法——FIFO、 LRU、最不常使用、最优算法
关于 “抖动”——频繁产生内外存之间的频繁调度, 原因是 页面淘汰算法不合理、分配给进程的物理页面太少

段式存储管理
 1、原理,把内存视为二维空间,与进程逻辑一致。把程序的地址空间分为若干个段(segment),程序加载时,分配存放各个段所需的物理内存,这些段不必连续;物理内存的管理采用动态分区。
2、程序通过分段划分为多个模块:代码段、数据段、共享段
3、优点: 要多大有多大,没有内碎片
4、缺点:进程全部装入内存

比较
1、分页是系统管理需要、分段是处于用户应用的需要(一条指令肯定不会跨越两个段,页有可能)
2、页大小固定,段大小不固定
3、分页是一维(各个模块链接时必须组织成一个地址空间)、分段式二维(各个段组成一个地址空间)
4、段表比页表小,可以缩短查找时间,提高访问速度。

段页式存储管理(三次访问内存)
分配单位: 段、页
逻辑清晰、且不必连续存放

你可能感兴趣的:(操作系统,存储管理)