操作系统课程笔记

操作系统_清华大学(向勇、陈渝)视频地址

虚拟内存

连续内存分配

  1. 内存碎片问题

  2. 分区的动态分配

    1. 第一适配

    2. 最佳适配

    3. 最差适配

  3. 压缩式碎片整理

  4. 交换式碎片整理

  5. 问题

    1. 分配给一个程序的物理内存是连续的

    2. 内存利用率较低

    3. 有外碎片、内碎片的问题

非连续分配

优点

  1. 一个程序的物理地址空间是非连续的

  2. 更好的内存利用和管理

  3. 允许共享代码和数据(共享库等)

  4. 支持动态加载和动态链接

缺点

  1. 如何建立虚拟地址和物理地址之间的转换

    1. 软件

    2. 硬件

  2. 两种硬件方案

    1. 分段(用的较少)

      1. 程序的分段地址空间

      2. 分段寻址方案(段的尺寸可以变)

        1. 段号

        2. 段内偏移

        3. 操作系统建立段表

    2. 分页

      1. 分页地址空间

      2. 分页寻址方案(页的尺寸不可变)

        1. 划分物理内存至固定大小的帧(2的幂)

        2. 划分逻辑地址空间至相同大小的页(2的幂)

        3. 建立转换逻辑地址为物理地址的方案

          1. 页表

          2. MMU/TLB

      3. 页寻址机制

        1. 页映射到帧

        2. 页是连续的虚拟内存

        3. 帧是非连续的物理内存

        4. 不是所有的页都有对应的帧

      4. 页表

    3. 结构:每个运行的程序都有一个页表

      1. 属于程序运行状态,会动态变化

        1. PTBR:页表基址寄存器

      2. TLB:快表

        1. 缓存近期访问的页帧转换表项

          1. TLB使用关联内存实现,具备快速访问性能

          2. 如果TLB命中,物理页号可以很快被获取

          3. 如果TLB未命中,对应的表项被更新到TLB中

            1. 二级/多级页表

            2. 反向页表

        2. 不是让页表与逻辑地址空间大小相对应,而是让页表与物理地址空间大小相对应

        3. 基于页寄存器的方案

      3. 性能问题

        1. 访问一个内存党员需要2次内存访问

          1. 一次用于获取页表项

          2. 一次用于访问数据

        2. 页表可能非常大

        3. 如何处理?

          1. 缓存(Caching):TLB

          2. 间接访问

            交换技术

实现的问题

  1. 交换时机的确定:何时需要发生交换?只当内存空间不够或有不够的危险时换出

  2. 交换区的大小:必须足够大以存放所有用户进程的所有内存映像的拷贝,必须能对这些内存映像进行直接存取

  3. 程序换入时的重定位:换出后再换入的内存位置一定要在原来的位置上吗?最好采用动态地址映射的方法

覆盖与交换的比较

  1. 覆盖只能发生在那些相互之间没有调用关系的程序模块之间,因此程序员必须给出程序内的各个模块之间的逻辑覆盖结构。

  2. 交换技术是以在内存中的程序大小为单位来进行的,它不需要程序猿给出各个模块之间的逻辑覆盖结构。换言之,交换发生在内存中程序与管理程序或操作系统之间,而覆盖则发生在运行程序的内部

虚拟内存技术

  1. 像覆盖技术那样,不是把程序的所有内容都放在内存中,因而能够运行比当前的空闲内存空间还要大的程序。但做的更好,由操作系统自动来完成,无须程序猿的干预

  2. 像交换技术那样,能够实现进程在内存与外存之间的交换,因而获得更多的空闲内存空间,但做的更好,只对进程的部分内容在内存和外存之间进行交换

  3. 基本概念

    1. 在装入程序时,不必将其全部装入到内存,而只需要将当前需要执行的部分页面或段装入到内存中,就可让程序开始执行

    2. 在程序执行过程中,如果需执行的指令或访问的数据尚未在内存(称为缺页或缺段),则由处理器通知操作系统将相应的页面或段调入到内存,然后继续执行程序

    3. 另一方面,操作系统将内存中暂时不使用的页面或段调出保存在外存上,从而腾出更多空闲空间存放将要装入的程序以及将要调入的页面或段

  4. 基本特征

    1. 大的用户空间:通过把物理内存与外存相结合,提供给用户的虚拟内存空间通常大于实际的物理内存,即实现了这两者的分离。

    2. 部分交换:与交换技术相比较,虚拟存储的调入和调出是对部分虚拟地址空间进行的

    3. 不连续性:物理内存分配的不连续,虚拟地址空间使用的不连续

程序的局部性原理

程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域。可表现为: 1. 时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短时期内 2. 空间局部性:当前指令和邻近的几条指令,当前访问的数据和邻近的几个数据都集中在一个较小区域内

Last updated