操作系统 第三章
内存的概念
逻辑地址vs物理地址
从写程序到程序运行
链接——把库函数和相关需要的文件链接到一个模块中
装入——放入内存,地址转换
三种装入方式
主要在于什么时候进行逻辑地址与物理地址的转换
绝对装入
在编译或汇编的时候就转换为绝对地址
静态重定位
编译和汇编的时候不转换地址
只有把装入模块放入内存时,才对地址进行重定位,进行转换
可以根据内存的使用情况, 定位到哪些可以放的绝对地址中
动态重定位
在装入内存中,不会立即转换
只有到程序真正要运行的时候才会转换
不需要一次将全部程序装入,可以先装入一部分,如果还需要,再动态分配内存
三种链接方式
内存管理的概念
内存保护
主要是依赖于寄存器记录,和比较
覆盖与交换
覆盖技术
主要是为了解决内存不够的问题
固定区和覆盖区
交换技术
连续分配方式
基本地址变换机构
地址变换:借助页表,实现逻辑地址->物理地址的转换
页表的信息存放在PCB中,如果被调度,则放入页表寄存器中
转换过程
(1)计算页号和页内偏移量
(2)计算是否越界
(3)查询页表,得到内存块号
(4)得到物理地址
例题
总结
页表在内存中,没有被调度的时候在PCB中
具有快表的地址变换机构
什么是快表
主要用于加速对页表的访问,加速地址转换
具有页表的地址转换过程
先去快表中查询是否有对应的页表项,如果没有则才去内存慢表中查找
两种地址转换过程
两级页表
单级页表——如果一个进程很大,会存在页表很大的情况,同时页表需要连续存储于是非常占内存
解决途径一
解决途径二——设置标志位,需要的时候再调入内存
例题
求逻辑地址的地址结构
(1)页内偏移的位数
(2)每个页面可以装多少个页表项
访存分析
总结
基本分段存储管理方式
概念
段表
地址转换
(1)检查是否越界(2次)
(2)段基址+段内地址
分段和分页的对比
优缺点分析
分页不会有外部碎片, 会有内部碎片
分段会有外部碎片,不会有内部碎片
段页式管理方式
先分段,再分页
逻辑地址结构
注意红色的部分!!!
页号决定了这个段可以分成多少个页
段号决定了这个进程被分成多少个段
页内偏移量的位数决定了页面大小也就是内存中块的大小
段表
这里的段表与之前的不同
由段号,页表长度,页表存放块号组成
地址转换
虚拟内存的概念
虚拟内存——扩大内存空间
传统存储管理方式中存在的问题
(1)用不到的持续占用内存
(2)要所有内存一次性装入空间才能运行
虚拟内存的概念
(1) 将部分很快用到或高频用到的保留在内存,用不到的置换到外存中
(2)程序执行中,先查询是否在内存中,不在则从外存调入内存
(3)页面置换
虚拟内存的容量
特性
虚拟内存的实现
(1)请求调页 (2) 页面置换
请求式实现——如果访问信息在内存中没有,则到外存中去把它调到内存中来
如果内存空间不够了,就置换一些不用的到外存
之前的是一次性全都放入内存中去,每个页和段都有在内存中具体的块号,现在是用到了再掉,满了就置换。
总结
请求分页管理方式
页表
内存块号——无或具体位置
状态位——是否在内存中
访问字段——用于页面替换算法
修改位——是否修改,用于对页面替换中,是否需要重新写入外存
外存地址
一个进程有一个页表,存放在进程的PCB中
缺页中断机制
页面不再内存->发出缺页中断->中断处理程序处理中断->进程阻塞->调页成功后唤醒进程->放入就绪队列
调页中如果有空闲块,直接分配内存
没有则,页面置换算法
地址变换机构
先判断是否存在越界异常
然后在快表中查找,如果命中,则直接得到物理地址
如果没有命中,则去慢表中找,找到对应的页表项
如果状态位为0,去外存中,调页到内存中,更改页表项
状态位为1,则输出物理地址
注意调入的页面会直接加入快表,然后查询快表
页面置换算法
页面分配策略
待补充!!!!!
待看!!!!