必备的习惯 : 感恩 自律 阅读 锻炼
文章目录
礼? -> 理? 课程? -> 编程? 学术? -> 技术? 理论 实践
分页、分段管理优缺点
- 分段管理中产生的外部碎片也可以用“紧凑”来解决,只是需要付出较大的时间代价
在分段式管理中
- 段号的位数决定了每个进程最多可以分几个段
- 段内地址位数决定了每个段的最大长度是多少
在段页式管理中
- 段号的位数决定了每个进程最多可以分几个段
- 页号位数决定了每个段最大有多少页
- 页内偏移量决定了页面大小、内存块大小是多少
- “分段”对用户是可见,程序员编程时需要显式地给出段号、段内地址。而将各段“分页”对用户是不可见的。系统会根据段内地址自动划分页号和页内偏移量。因此段页式管理的地址结构是一维的
段表、段页
- 每个段对应一个段表项,每个段表项由段号、页表长度、页表存放块号(页表起始地址)组成。每个段表项长度相等,段号是隐含的。
- 每个页面对应一个页表项,每个页表项由页号、页面存放的内存块号组成。每个页表项长度相等,页号是隐含的
- 注意: 在段页式中、与段式存放的不一样,其为段号、页表长度、页表存放块号(页表起始地址),而段式中则为段号,段长、基址。而段页式中的页式与页式管理存放的相同,其为页号、内存块号。
- 一个进程对应一个段表、一个段表可以对应多个段表
段页式逻辑地址转化为物理地址
- 由上图可知,需要访存三次,但是可以引入快表机构,这样仅需要一次访存。
小结
虚拟内存
知识总览思维导图
传统存储管理方式的特征、缺点
- 一次性:作业必须一次性全部装入内存后才能开始运行。这会造成两个问题:①作业很大时,不能全部装入内存,导致大作业无法运行;②当大量作业要求运行时,由于内存无法容纳所有作业,因此只有少量作业能运行,导致多道程序并发度下降。
- 驻留性:一旦作业被装入内存,就会一直驻留在内存中,直至作业运行结束。事实上,在一个时间段内,只需要访问作业的一小部分数据即可正常运行,这就导致了内存中会驻留大量的、暂时用不到的数据,浪费了宝贵的内存资源。
局部性原理
- 时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)
- 空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放的,并且程序的指令也是顺序地在内存中存放的)
高速缓冲技术的思想将近期会频繁访问到的数据放到更高速的存储器中,暂时用不到的数据放在更低速存储器中。
虚拟内存的定义与特征
虚拟内存定义
- 基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。在操作系统的管理下,在用户看来似乎有一个比实际内存大得多的内存,这就是虚拟内存
易混知识点:
- 虚拟内存的最大容量是由计算机的地址结构(CPU寻址范围)确定的
- 虚拟内存的实际容量=min(内存和外存容量之和,CPU寻址范围)
如:某计算机地址结构为32位,按字节编址,内存大小为512MB,外存大小为2GB 则虚拟内存的最大容量为232B=4GB
虚拟内存的实际容量=min(232B,512MB+2GB)=2GB+512MB
虚拟内存主要特征
- 多次性:无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存。
- 对换性:在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换
入、换出。 - 虚拟性:从逻辑I扩充了内存的容量,使用户看到的内存容量,远大于实际的容量
虚拟内存实现
- 虚拟内存技术,允许一个作业分多次调入内存。如果采用连续分配方式,会不方便实现。因此,虚拟内存的实现需要建立在离散分配的内存管理方式基础上。
主要区别: - 在程序执行过程中,当所访问的信息不在内存时,由操作系绕负责将所需信息从外存调入内存,然后继续执行程序。(操作系统要提供请求调页(或请求调段)功能)
- 若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。操作系统要提供页面置换(或段置换)的功能