https://blog.csdn.net/qq_34767784/article/details/105674226
操作系统对内存的划分和动态分配,就是内存管理的概念。
程序的链接:静态链接、装入时动态链接、运行时动态链接;
程序的装入:绝对装入(只适用于单道程序环境,绝对地址)、可重定位装入(静态重定位,相对地址)、动态运行时装入(动态重定位);
CPU中设置一对上、下限寄存器;采用重定位寄存器(或基址寄存器)和界地址寄存器(又称限长寄存器);
多道程序环境下扩充内存的两种方法。
覆盖:用户空间分为固定区和若干覆盖区,不在覆盖区的段能够常驻内存;
交换(对换):程序在内存与辅存之间的交换
交换技术主要是在不同进程(或作业)之间进行,而覆盖则用于同一个程序或进程中。而后覆盖被虚拟内存技术淘汰。
单一连续分配(低地址系统区,高地址用户区,只适用于单用户、单任务的OS)、固定分区分配(最简单多道程序存储管理方式,分区大小可等可不等,有分区说明表,存在内部碎片,无外部碎片);动态分区分配(可变分区分配,分区大小数目可变,存在外部碎片,外碎可以用紧凑技术解决)
动态分区的分配策略:首次适应算法(最好)、最佳适应(空闲分区容量递增分区链)、最坏适应(最大适应,空闲分区容量递减分区链)、临近适应(循环首次适应)
分页思想:把主存空间划分为大小相等且固定的块作为主存的基本单位。
分页管理类似于分区相等的固定分区技术,无外部碎片,块比分区小很多,每个进程平均只产生半个块大小的内部碎片(页内碎片)。
基本概念
进程中的块称为页,内存中的块称为页框(或页帧)。
系统为每个进程建立一张页表;
页表的作用是实现从页号到物理块号的地址映射。
地址变换机构的任务是将逻辑地址转换为内存中物理地址,地址变换是借助于页表实现的。
页式管理只需要给出一个整数就能确定对应的物理地址,这是因为页面大小L是固定的。因此,页式管理中地址空间是一维的。
地址转换过程变慢->访存速率降低;
页表太大->内存利用率降低。
具有快表(局部性原理)的地址变换机构:
为此,引入具有并行查找能力的高速缓冲存储器——快表,也称联想存储器(TLB),主存中的页表称为慢表(Page)。
顶级页表最多只能有一个页面(一定记住),则顶级页表最多可以容纳4KB/4B=1K个页表项,占用地址位数为10位;
分页机制通过硬件机制实现,对用户完全透明。
段式管理方式按照用户进程中的自然段划分逻辑空间。
段内要求连续,段间不要求连续,因此整个作业的地址空间是二维的。
页号与页内偏移对用户透明;段号与段内偏移由用户显式提供,由编译程序完成;
每个进程都有一张逻辑空间和内存空间映射的段表。
在系统中设置了段表寄存器,用于存放段表始址F和段表长度M。
不能修改的代码称为纯代码或可重入代码(它不属于临界资源)。
分段管理的地址空间分为(段号,段内偏移),是二维的。
段页式地址变换:
为了实现地址变换,系统为每个进程建立一张段表,而每个分段有一张页表。
注意:在一个进程中,段表只有一个,而页表可能有多个。
无论是段式管理、页式管理、段页式管理,读者都只需要关注三个问题:1、逻辑地址结构2、表项结构3、寻址过程
1、形成逻辑地址的阶段是链接,完成该变换过程的阶段是装载。
编址空间的大小取决于硬件的访存能力,地址总线宽度决定。
3、 进程正在进行I/O操作时不能换出主存
4、覆盖与交换为了逻辑上扩充主存,节省主存空间。
8、
9、
13、
21、
23、
27、
33、
34、
35、页式存储管理所划分的页面大小必须相同。
36、
37、
38、
41、
45、
48、
49、
快表、页高速缓存以及虚拟内存技术广义上说都属于高速缓存技术,其依赖于局部性原理。
时间局部性(程序中有大量循环操作)、空间局部性(指令顺序执行);
系统提供了部分装入、请求调入和置换功能,给用户感觉好像存在一个比实际物理内存大得多的存储器,称为虚拟存储器。
大小由计算机的地址结构决定,而不是内外存的简单相加;
虚拟存储器特征:多次性、对换性、虚拟性。
因此,虚拟内存的实现需要建立在离散分配的内存管理方式的基础上。
2、 缺页中断机构
请求的页面不在内存发生一个缺页中断;
3、 地址变换机构
选择调出页面的算法;
最佳置换算法(OPT)(栈):最长时间内不被访问的页面;无法实现;
先进先出(FIFO)页面置换算法(队列):优先淘汰最早进入内存的页面,亦即在内存中驻留时间最久的页面。
Belady异常:
3.最近最久未使用(LRU)置换算法(栈)
4.时钟(CLOCK)置换算法
简单CLOCK算法:使用位
CLOCK算法也叫最近未用(NRU)算法;
改进型的CLOCK算法:增加一个修改位
1、驻留集大小
给特定的进程分配多大的主存空间。
固定分配局部置换;可变分配全局置换(最易于实现);可变分配局部置换。
2、调页时机
预调页(运行前调入),请求调页(运行期间调入)
3、从何处调入页面
请求分页系统的外存=存放文件的文件区(离散分配)+存放对换页面的对换区(连续分配方式),对换区的I/O速度比文件区更快。
分为三种方式:
对换区够、对换区不够、UNIX方式
3.2.5 抖动
实例讲解,精彩
3.
缺页中断是访存指令引起的,说明所要访问页面不在内存中,在进行缺页中断处理后,调入所需访问的页后,访存指令显然应该重新执行。
32.
34.增大TLB容量和让页表常驻内存能够加快虚实地址转换;