操作系统--总结(4)--存储器

4.存储器

4.1 存储器的层次结构

CPU寄存器
(高速缓存)
主存
(磁盘缓存)
辅存

传统存储管理:连续分配、离散分配
连续分配:单一连续分配、固定分区分配、动态分区分配
离散分配:分页式、分段式、段页式

4.2 程序的装入和链接

4.3 连续分配存储管理方式

连续分配包括单一连续分配和分区式分配

4.3.1 单一连续分配

4.3.2 固定分区分配

4.3.3 动态分区分配

  • 数据结构
  • 分区分配算法:顺序式搜索算法、索引式搜索算法

    • 1)顺序式搜索算法:
      首次适应算法:把空闲分区链以地址递增的次序链接,从链首开始顺序查找
      循环首次适应算法:不是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找。
      最佳适应算法:以从小到大的顺序形成以空闲分区连,找第一个满足要求的。
      最坏适应算法:挑选最大的空闲去,分割一部分使用。
    • 2)索引式搜索算法
  • 分区的分配与回收

4.3.4 动态可重定位分区分配

4.4 对换

4.5 分页存储管理方式

将用户程序的地址空间分为若干固定大小的区域,称为页或页面,典型的页面大小为1KB。相应地,也将内存空间分为若干物理块或页框,页和块的大小相同。这样可将用户程序的任一页放入任一物理块中,实现了离散分配。

4.5.1 基本方法

1)页面和物理块
分页存储管理,是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame), 也同样为它们加以编号,如0#块、1#块等等。在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。
页面小:内存利用率提高,页表过长,占用大量内存
页面大:使页内碎片增大

2)地址结构

操作系统--总结(4)--存储器

3)页表
页表:在分页系统中,允许将进程的各个页离散地存储在内存的任一物理块中,为保证进程仍然能够正常地运行,即能在内存中找到每个页面所对应的物理块,系统又为每个进程建立了一张页面映射表,简称页表。页表的作用是实现从页号到物理块号的地址映射。

操作系统--总结(4)--存储器

4.5.2 地址变换机构

地址变换机构:从逻辑地址到物理地址的映射
页表:从页号到块号

页表寄存器:存放页表在内存的始址、页表的长度
页表
由页号,找出对应的块号,找出物理地址
1)基本的地址变换机构
操作系统--总结(4)--存储器

地址变换过程:
给出一个逻辑地址,
->自动分为页号和页内地址,比较页号与页表寄存器中的页表长度
->求该页号在内存中的位置:页表始址+页号*页表项长度
->找到内存中的页号,找到对应的物理块号(将块号送入物理地址寄存器中)
->页内地址对应内存中块内地址

2)具有快表的地址变换机构
页表是存放在内存中的,CPU每次存取一个数据时,都要两次访问内存(找内存中的页表:找到页号对应的块号->根据块号再次访问内存读取数据)

快表/联想寄存器:为提高地址变换速度,在地址变换机构中增设一个具有并行查询能力的特殊告诉缓冲寄存器。

地址变换过程:
给出一个逻辑地址,
->自动分为页号和页内地址,(比较页号与页表寄存器中的页表长度)
->将该页号与快表中所有页号比较,若表中有相匹配的页号,直接从快表中读出该页对应的物理块号;如未找到,从内存中找:页表始址+页号*页表项长度,并将该页表项存入快表中,若快表满则置换页表项
->找到内存中的页号,找到对应的物理块号(将块号送入物理地址寄存器中)
->页内地址对应内存中块内地址

4.5.3 两级页表

4.6 分段存储管理方式

引入分段:为了满足用户(程序员)在编程和使用上多方面的要求。
两个方面:
1)通常的程序都可分为若干个段,如主程序段、子程序段A、B、数据段及栈段等,每个段大多是相对独立的逻辑单位。
2)实现和满足信息共享、信息保护、动态链接、信息的动态增长等需要,也都是以段为基本单位的。
分段存储管理方式成为当今所有存储管理方式的基础。

分页和分段的主要区别
1)单位: 页是信息的物理单位,分页是系统管理上的需要,是系统的行为,对用户不可见。段是信息的逻辑单位,包含的是一组意义相对完整的信息,分段目的在于满足用户的需要。
2)大小:也的大小固定且由系统决定,直接由硬件实现。段的长度不固定,决定于用户编写的程序。
3)地址空间维数:分页的地址空间是一维。分段是二维,程序员在标识地址时,既需给出段名,又需给出段内地址。
4)页是为了提高内存利用率,段是为了程序员的方便。

4.7 段页式存储管理方式