操作系统学习02

  1. 非连续内存分配:分页(主流方式),分页地址空间与分页寻址方案
    分页与分段的区别:段的大小可变,页大小不变
    建立方案,转换逻辑地址为物理地址(Pages to frames):页表,MMU/TLB
    帧(物理内存)划分物理内存至固定大小的帧(大小是2的次幂):帧号+帧内偏移操作系统学习02_第1张图片 地址计算的实例:
    操作系统学习02_第2张图片
    页(逻辑内存)划分逻辑地址空间至相同大小的页:
    页内偏移的大小=帧内偏移的大小
    操作系统学习02_第3张图片
    页寻址机制:页表由操作系统提前建立操作系统学习02_第4张图片
    操作系统学习02_第5张图片

  2. 页表概述、TLB(转换后备缓冲区)
    resident bit为0则相应的物理内存不存在,为1则对应的物理帧存在(因为不是所有页都有对应的帧)
    操作系统学习02_第6张图片
    分页机制的性能问题:
    访问一个内存单元需要两次内存访问:一次获取页表项,一次用于访问数据。
    页表可能非常大:64位的机器,每页1024字节,一个页表会很大
    因为很大,页表不能放在CPU当中,而放在内存中。

     处理方法:
     	缓存(caching)
     	间接(Indirection)访问
    
     缓存:TLB(Translation Look——aside Buffer)
     	缓存近期访问的页帧转换项。TLB使用associative memory实现,有快速访问的性能。如果TLB命中,物理页号可以很快被获取,如果未命中,对应的表项被更新到TLB中。TLB在CPU中
     	![在这里插入图片描述](https://img-blog.csdnimg.cn/680e1c456409409b9fa9ed89e2d53fc2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56a55rSL5Y2a,size_20,color_FFFFFF,t_70,g_se,x_16)
    
  3. 非连续内存分配:页表:二级,多级页表
    二级页表:
    一级页表存放的是以及页表的起始地址,二级页表存放帧地址。
    这种方式使得不存在映射关系的页表项不需要占用内存值(若一级中不存在(resident bit==0)则二级不需要保留空间)
    操作系统学习02_第7张图片
    多级页表:
    时间换空间,时间开销增大,空间开销减小。
    时间开销可以通过之前的TLB机制缓解。

操作系统学习02_第8张图片

  1. 非连续内存分配:页表:反向页表
    大地址空间问题:前向映射页表变得繁琐。
    不是让页表与逻辑地址空间的大小相对应,而是让页表与物理地址空间的大小相对应。逻辑(虚拟)地址空间增长速度快于物理地址空间。

    基于页寄存器(Page Registers)的方案:消耗内存很小
    操作系统学习02_第9张图片
    操作系统学习02_第10张图片
    基于关联内存(associative memory)的方案:
    操作系统学习02_第11张图片
    基于哈希(hash)查找的方案:
    操作系统学习02_第12张图片

  2. 虚拟内存:
    虚拟内存的起因
    理想中的存储器:更大、更快、更便宜的非易失性储存器
    实际上的存储器:操作系统学习02_第13张图片
    程序只能在内存中执行,那么我们希望能想办法利用到磁盘的空间。

    5.1. 覆盖技术:
    在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。
    原理:操作系统学习02_第14张图片
    例子:
    将没有相互调用关系的BC放在同一个分区操作系统学习02_第15张图片
    操作系统学习02_第16张图片只用了100k,比上图要更高效。

    缺点:
    由程序员来把大的程序划分为若干个小的功能块,并确定各模块的覆盖关系,费时费力;覆盖模块从外存装入内存,实际上是以时间延长来换取空间节省

    5.2. 交换技术:
    目标:多道程序在内存中时,让正在运行的程序或者需要运行的程序获得更多资源。
    方法:可将暂时不能运行的程序送到外存,从而获得空闲内存空间;操作系统把一个进程的整个地址空间的内容保存到外存中,而将外存中的某个进程的地址空间读到内存中。换入换出内容大小为整个程序的地址空间。
    问题:
    1. 交换时机的确定:因为交换会产生很多额外开销。只有当内存不够或者有不够危险时换出
    2. 交换区的大小:必须足够大以存放所有用户进程的所有内存映射像的拷贝,必须能对这些内存映像进行直接存取。
    3. 程序换入时的重定位:换出后再换入不一定在同一处地方。要采用动态地址映射的方法

     覆盖与交换的比较:
     ![在这里插入图片描述](https://img-blog.csdnimg.cn/f6706635ef5147a49e0615be8381445c.png)
    

    5.3. 虚存技术:
    目标:操作系统学习02_第17张图片
    程序的局部性原理:程序在执行过程中的一个较短时间,所指向的指令地址和指令的操作数地址,分别局限于一定的区域,表现为:
    时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问一个集中在一个较短的时间内
    空间局部性:当前指令和邻近的几条指令,当前访问的数据和邻近的及格数据应该集中在一个较小的区域内。
    程序的局部性原理时实现虚拟内存技术的前提。

    虚存技术基本概念:在页式或者段式内存管理的基础上实现:
    操作系统学习02_第18张图片
    虚存技术基本特征
    操作系统学习02_第19张图片

虚拟页式内存管理:

操作系统学习02_第20张图片
操作系统学习02_第21张图片
页表表项:
操作系统学习02_第22张图片
后备存储:
操作系统学习02_第23张图片
操作系统学习02_第24张图片

你可能感兴趣的:(leetcode,算法,职场和发展)