操做系统——存储管理

操做系统——存储管理 

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

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


1、单一连续存储区管理

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

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

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

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

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

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

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

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

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

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

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

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