第1页:第四章 存储器管理封面
第四章 存储器管理:本页为《计算机操作系统》课件封面,标注课程名称与英文名称 Operating Systems,并列出 WINDOWS、UNIX、LINUX 等常见操作系统类型。
第2页:4.4基本分页存储管理方式
4.4基本分页存储管理方式
- 为什么要引进分页技术?
- 分区管理要求每道程序必须装入到内存连续的存储空间中
- 当系统空闲区的长度小于用户要求时就无法分配
- 内存利用率不高
- 基本分页存储管理(纯分页存储管理)
- 不具备页面对换功能
- 不支持虚拟存储器的功能
第3页:4.4.1页面与页表
4.4.1页面与页表
- 页面
- 分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页
- 为各页加以编号,从0开始,如第0页、第1页等
- (物理)块或页框(frame)
- 把内存空间分成与页面相同大小的若干个存储块
第4页:分页式存储管理基本原理
分页式存储管理基本原理
- 以页为单位进行内存分配,并按进程的页数多少来分配
- 逻辑上相邻的页,物理上不一定相邻
第5页:页面大小
页面大小
- 页面的大小应选择适中
- 页面大小应是2的幂
- 页面若太小
- 导致进程的页表过长,占用大量内存
- 还会降低页面换进换出的效率
- 如果选择的页面较大
- 会使页内碎片增大
第6页:分页地址结构
分页地址结构
- 2.地址结构
- 分页地址中的由系统分成的逻辑地址结构如下
- 每页的大小为212=4 KB
- 地址空间最多允许有1 M页
- 若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按下式求得
第7页:分页地址结构练习
分页地址结构练习
- 练习
- 设一个逻辑地址空间有8个页面,每页大小为1024B,现将它映像到32块物理块的内存上。试问
- (1)逻辑地址要用多少位表示:______________
第8页:页表
页表
- 3.页表
- 页表是操作系统为每个进程建立的,记录了进程页面在主存中对应的物理块号
第9页:页表与地址长度练习
页表与地址长度练习
- 练习
- 一台机器有48位虚地址(逻辑地址,相对地址)和32位物理地址,若页长为8KB,问页表共有多少个页表项?内存可分为页框数(块数)?答:逻辑地址48位--》逻辑地址空间大小248,页长8KB--》逻辑地址空间可分为页面数:248/213=235--》页表共有235个页表项32位物理地址--》内存空间232页长8KB=213--》内存可分为页框数(块数):232/213=219
第10页:页面的保护
页面的保护
- 提供附加的保护措施,对存储在块中的内容加以保护
- 通常的办法是在页表中增加一些标志位,用来指出该页的信息可读/写、只读、只可执行及不可访问等
- 指令执行时进行核对此信息。例如,要想向只读块写入信息则指令停止执行,产生中断信号。作业1的页表块号标志页号12E013E114W28R3块号标志页号2E03W18R2作业2的页表
第11页:4.4.2地址变换机构
4.4.2地址变换机构:4.4.2地址变换机构1.基本的地址变换机构页表始址寄存器物理地址逻辑地址CPU主存01pb页表pddbp表项在页表中的位置=页表始址+页号*页表项长度+。
第12页:地址变换例题:页面1KB
地址变换例题:页面1KB
- 例:设页面大小为1KB,机器的地址长度为16位。作业2的进程在CPU上运行,执行指令Mov r1,[2500]页表始址寄存器页号p页内位移d00001001110001000910152500=
- ②+页地址转换过程物理地址逻辑地址
第13页:快表的引入
快表的引入
- 页表是驻留在内存的某个固定区域中
- 取一个数据或指令至少要访问内存两次以上
- 一次访问页表以确定所取数据或指令的物理地址
- 另一次是根据地址取数据或指令
- 这比通常执行指令的速度慢了一倍
- 解决这个问题的一种方法
- 把页表放在一个特殊高速缓存中
- 快表(“联想寄存器”)
- 用以存放当前访问的那些页表项
第14页:具有快表的地址变换机构
具有快表的地址变换机构:2.具有快表的地址变换机构p’页表地址越界页表长度比较P>=1pp’...快表页表始址+P’d物理地址页表寄存器页号p页内位移d逻辑地址。
第15页:4.4.3两级和多级页表
4.4.3两级和多级页表
- 若CPU具有32位地址,规定页面4KB
- 使用232逻辑地址空间的分页系统
- 每个进程的逻辑地址空间有1兆个页组成232/212= 220
- 每个进程页表中的页表项可达1兆
- 若表项占用1个字节,则每个进程需要占用1MB连续内存空间存放页表
第16页:两级页表的实现方法
两级页表的实现方法
- 两级页表
- 可以采用下述两个方法来解决这一问题
- (1)采用离散分配方式来解决难以找到一块连续的大内存空间的问题
- (2)只将当前需要的部分页表项调入内存
- 其余的页表项仍驻留在磁盘上,需要时再调入
第17页:两级页表的内存分布示意
两级页表的内存分布示意:页表…………0第0块内存第1块第3块11M第0页第1页第1块第3块011023外层页表。
第18页:两级页表的页表结构
两级页表的页表结构:1.两级页表第1011块。
第19页:两级页表的逻辑地址结构
两级页表的逻辑地址结构
- 逻辑地址结构
- 若页表项应有1兆个,在采用两级页表结构时
- 对页表进行分页,使每页中包含210(即1024)个页表项,最多允许有210个页表分页
第20页:两级页表的地址变换机构
两级页表的地址变换机构:具有两级页表的地址变换机构页表物理地址外部页表寄存器P1逻辑地址P2d外部页表bd外部页号外部页内地址页内地址。
第21页:4.5基本分段存储管理方式
4.5基本分段存储管理方式
- 4.5基本分段存储管理方式4.5.1分段存储管理方式的引入1)方便编程
- 用户程序划分
- 按程序自身的逻辑关系划分为若干个程序段
- 每个程序段都有一个段名和长度,且有一个段号
- 段号从0开始,每一段段内也从0开始编址
第22页:分段管理的引入:信息共享
分段管理的引入:信息共享
- 分段存储管理方式的引入2)信息共享
- 分页系统中的“页”只是存放信息的物理单位(块)
- 并无完整的意义,不便于实现共享
- 段却是信息的逻辑单位
- 由此可知,为了实现段的共享,希望存储管理能与用户程序分段的组织方式相适应。3)信息保护
- 对信息的逻辑单位进行保护
第23页:分段管理的引入:动态增长
分段管理的引入:动态增长
- 分段存储管理方式的引入4)动态增长
- 特别是数据段,在使用过程中会不断地增长
- 事先又无法确切地知道数据段会增长到多大
- 与动态分区不同的是
- 分段方案中,一个程序可以占据多个分区
- 这些分区不要求是连续的5)动态链接
- 当运行过程中需要调用某段时,才将该段(目标程序)调入内存并进行链接
- 动态链接也要求以段作为管理的单位
第24页:4.5.2分段系统的基本原理
4.5.2分段系统的基本原理
- 4.5.2分段系统的基本原理1分段
- 作业的地址空间被划分为若干个段
第25页:分段系统的逻辑地址结构
分段系统的逻辑地址结构
- 逻辑地址结构
- 在该地址结构中,允许一个作业最长有216=64K个段
- 每个段的最大长度为64KB
- 内存分配
- 以段为单位分配内存,每一个段在内存中占据连续空间
- 内存随机分割,需要多少分配多少
- 但各段之间可以不连续存放
第26页:段表
段表
第27页:分段系统的地址变换机构
分段系统的地址变换机构:3.地址变换机构控制寄存器段表始址段表长度2100段号段长基址物理地址8292越界?段表逻辑地址0125008K段号位移。
第28页:段表地址变换练习
段表地址变换练习:练习。
第29页:分页和分段区别:信息单位
分页和分段区别:信息单位
- 4.分页和分段的主要区别
- (1)页是信息的物理单位
- 分页是为实现离散分配方式
- 以消减内存的外零头,提高内存的利用率
- 没有外部碎片
- 页框中有内部碎片
- (1)段是信息的逻辑单位
- 含有一组其意义相对完整的信息
- 目的是为了能更好地满足用户的需要
- 没有内部碎片
- 有外部碎片
第30页:分页和分段区别:页的大小
分页和分段区别:页的大小
- 4.分页和分段的主要区别
- (2)页的大小固定且由系统决定
- 由系统把逻辑地址划分为页号和页内地址两部分
- 由机器硬件实现的
- 在系统中只能有一种大小的页面
- (2)段的长度却不固定
- 决定于用户所编写的程序
- 通常由编译程序在对源程序进行编译时,根据信息的性质来划分
第31页:分页和分段区别:地址空间
分页和分段区别:地址空间
- 4.分页和分段的主要区别
- (3)分页的作业地址空间是一维的
- 单一的线性地址空间
- 程序员只需利用一个记忆符,即可表示一个地址
- (3)分段的作业地址空间是二维的
- 程序员在标识一个地址时,既需给出段名,又需给出段内地址
第32页:作业1:分页存储管理计算
作业1:分页存储管理计算
- 作业1、某用户空间共32个页面,每页1KB,主存16KB。试问
- (1)逻辑地址的有效位是多少位;物理地址需要多少位?
- (2)假定某时刻系统为用户的第0,1,2,3页分别分配的物理块号为5,10,4,7,试将逻辑地址0A5CH变换为物理地址。2、在一分页存储管理系统中,逻辑地址长度为16位,页面大小为4096字节,现有一逻辑地址为2F6AH,且第0、1、2页依次存在物理块10、12、14号中,问相应的物理地址为多少?
第33页:作业3:基本分段地址计算
作业3:基本分段地址计算:作业3、某基本分段存储管理中采用如下表所示的段表。请计算[1,10], [2,500], [3,400], [4,20], [5,100]的内存地址,其中方括号内的第一元素是段号,第二元素是段内地址。内存起始地址段的长度段号21966003330141901002123758031954964。
第34页:虚拟存储器的引入
虚拟存储器的引入
- 3.虚拟存储器的定义
- 仅须将那些当前要运行的少数页面(段)先装入内存便可运行
- 程序在运行时,如果它所要访问的页(段)已调入内存,便可继续执行下去
- 如果程序所要访问的页(段)尚未调入内存,则
- 利用请求调页(段)功能,将它们调入内存
- 如果此时内存已满,无法再装入新的页(段),则还须再利用页(段)的置换功能
第35页:虚拟存储器的定义
虚拟存储器的定义
- 虚拟存储器
- 是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统
- 其逻辑容量由内存容量和外存容量之和所决定
- 虚拟存储技术是被广泛地应用于大、中、小型机器和微型机中
第36页:4.6.2虚拟存储器的实现方法
4.6.2虚拟存储器的实现方法
- 4.6.2虚拟存储器的实现方法1.请求分页系统
- 在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。2.请求分段系统
- 在分段系统的基础上,增加了请求调段和分段置换功能后所形成的段式虚拟存储系统。3.段页式虚拟存储管理
第37页:4.6.3虚拟存储器的特征
4.6.3虚拟存储器的特征
- 4.6.3虚拟存储器的特征1.多次性
- 指一个作业被分成多次调入内存运行2.对换性
- 对换性是指允许在作业的运行过程中进行换进、换出3.虚拟性
- 虚拟性是指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量
- 虚拟性是以多次性和对换性为基础的
- 多次性和对换性又必须建立在离散分配的基础上