复习笔记--操作系统下

第八章 内存管理

  • 程序执行步骤:

    • 编译--从C到汇编
      image_1b63jsn3b1hp21pn31h5vig5oi69.png-116.7kB
    • 链接--从汇编到可执行程序
      image_1b63jtt5ghv11ldgiuk1hv11gvnm.png-54.9kB
  • 重定位:为执行程序而对其中出现的地址所做的修改,重定向可以执行的时间有:

    • 在编译链接时
    • 载入时
  • 可执行程序经过编译产生了逻辑地址,逻辑地址和运行物理地址间要地址转换

  • 虚拟地址由用户编写程序时定义的全局地址,逻辑地址是用户定义的局部地址,是虚拟地址的组成部分

  • 逻辑地址空间:在实际应用中,将虚拟地址和逻辑地址经常不加区分,统称为逻辑地址。逻辑地址的集合称为逻辑地址空间

  • 线性地址空间:CPU地址总线可以访问的所有地址集合称为线性地址空间

  • 物理地址空间:实际存在的可访问的物理内存地址集合称为物理地址空间

image_1b63kgrnh155m1dr11g84104pj6n13.png-161.7kB

  • MMU:实现将用户程序的虚拟地址(逻辑地址)->物理地址映射的CPU中的硬件电路

  • 基地址:在进行地址映射时,经常以段或页为单位并以其最小地址(即起始地址)为基值进行计算

  • 偏移量:在以段或页为单位进行地址映射时,相对于基地址的地址值

  • 程序请求的空间=code+data+stack+heap,前面2个固定不变,后面的动态变化,需要预留空间

  • 页面尺寸通常为4K,32位机器,有$2^{20}$个页面

  • 页表项(PTE)是页基本数据结构,页代表的地址,包含对应的页框号,32位地址空间+4K大小页面+页面连续=>$2^{20}$个页表项,每个4字节则要4M内存
    image_1b63o9n5cig44d2ej7hoshgo1m.png-180000000000000000000000000000000000000000000000000000000000000000000000000000000000000.7kB

  • 多级页表时的地址翻译
    进程切换时段表和页表跟着切换
    image_1b63nkgcqae6dns14u51chj1snup.png-116.7kB

  • 段页式
    image_1b63qbhlbd9rh2k1a9a11a515kt23.png-135.5kB

  • Intel x86的内存管理

    • 实模式,内存地址20位,1M,段寄存器(CS,DS,ES,SS)中存储段基址,
    • 保护模式(CS,DE,ES,FS,GS,SS),地址32位,4G,开启分页机制,段选择器存储段描述符表中的索引
    • CR0.PE位=1进入实模式
    • GDT为全局段表,记录OS使用的内存区域的段信息,对所有进程均可用,LDT为局部段表,每个进程的局部空间的所有段描述符集中存放在这张表中,GDTR和LDTR为32位段表基址(线性地址)+16位段表长度,分别指出GDT和LDT的位置
  • 当TI=0表示段描述符在GDT中
    image_1b63rerrq1aalk275oo14j61khd2g.png-78.9kB

    image_1b63rf4nev9d61fo521m22mav2t.png-214.6kB

  • 为1时表示在LDT中
    image_1b63rglatb326ah4o3ilf1tjc3a.png-124.8kB

    image_1b63rgsgt5d1g2la92svj15h83n.png-228.9kB

第九章 虚拟内存

  • 调页,也称惰性交换,以页为单位在内外存之间交换

  • 请求调页,也称按需调页,即对不在内存中的“页”,当进程执行时要用时才调入,否则有可能到程序结束时也不会调入

  • 系统内进程增多=>每个进程缺页率增大=>缺页率增到到一定程度,进程总等待调页完成=>CPU利用率降低=>进程进一步增多=>颠簸现象,解决的根本手段是给进程分配足够多的帧

  • Belady异常现象:对有的页面置换算法,页错误率可能会随着分配帧数增加而增加,栈式算法无这个现象,LRU算法属于此

第十章 I/O设备管理

..

第十一章 磁盘与文件

image_1b642jls310bi1nv6f3f1ldpv0t9.png-16.5kB

image_1b642jtii11shprm93e1ltq1nium.png-12.2kB

  • 基本概念:

    • 扇区:物理盘存储空间基本编址单位,一般为512字节
    • 主引导记录MBR:硬盘的第一个扇区的内容,含引导代码和主分区表
    • 分区:磁盘中可以作为逻辑盘管理的一组扇区集合
    • 可拓展分区:可以继续划分成“分区”的硬盘分区
    • 引导分区:标记有引导标记的硬盘分区,这种分区有引导扇区和引导文件
    • 引导扇区:引导分区的第一个扇区
    • 可拓展分区引导记录:可引导分区中第二个扇区中的内容
  • 磁盘访问延迟 = 队列时间 + 控制时间 + 寻道时间 + 旋转时间 + 传输时间,前两项可以忽略不计,关键在于最小化寻道时间和旋转延迟

  • FCFS磁盘调度,花费时间较长,磁头在长途奔袭

  • SSTF,以最短寻道时间先后移动磁头
    image_1b643q0linl3vbqo3k14ma1bu22a.png-21kB

  • SCAN磁盘调度,扫描/电梯算法,即SSTF+中途不回折
    image_1b6435k5j1en29jucceacrk1s13.png-21.5kB

  • C-SCAN磁盘调度,SCAN+直接移到另一端
    image_1b6438g511uba1a7b6sn16e94fl1g.png-26.7kB

  • C-LOOK磁盘调度,CSCAN+看一看:前面没有就回移
    image_1b643b8961p42dmr1cno1hd61i7u1t.png-33.1kB

新来的磁道请求,C[i+1] < x < C[i]或者x > C[i+1] > C[i]

  • 扇区 = 头+数据区+尾,头尾中包含只有磁盘控制器能识别的扇区号码和纠错码等信息

  • 磁盘寻址:盘面+磁道+扇区,为了花最少的时间访问最多的扇区:磁臂不动,磁盘旋转一周,访问磁头所遇到的所有扇区,让这些扇区的编制邻近:

    • CHS(Cylinder/Head/Sector),外圈磁道比内圈磁道多,故采用线性寻址,即以扇区为单位进行寻址
    • 扇区编号(Logical Block Addressing LBA):按照(C,H,S)将扇区形成一维数组,数组索引就是扇区编号
      image_1b644ej731ncr1j87fvo1ir5mrd2n.png-25.6kB
  • 有一组命令寄存器组,I/O的端口地址为1F0H~1F7H:

    • 1F2H 扇区计数寄存器
    • 1F3H 扇区号,或LBA块地址0~7
    • 1F4H 柱面数低8位,或LBA块地址8~15
    • 1F5H 柱面数高8位,或LBA块地址16~23
    • 1F6H 驱动器/磁头,或LBA块地址24~27
    • 1F7H 状态寄存器  命令寄存器
    • CHS或LBA在磁头寄存器中指定
  • 文件的实现:

    • 物理盘块连续分配,File Header或FCB存放起始盘块和盘块个数,权限等信息
    • 链式分配
    • 索引分配
      image_1b645i5niqoi5sjs4v1p6d1grv3h.png-38.1kB

第十二章 文件系统

  • 文件系统是“抽象盘块”的一层软件,将盘块“变”成文件集

  • 典型分区结构:UNIX分区的基本结构
    image_1b646fqi71evmqqm1ll91lki181o9.png-125.8kB

  • 提高文件系统的效率

    • 磁盘缓存
    • 将某些目录文件的FCB常驻内存
    • 同一目录中的文件inode在一个柱面
    • ...
  • 分区空闲盘块的管理

    • 方法1:空闲位图
    • 方法2:空闲链表
  • RAID的基本思想是冗余,发现错误时拷贝整个磁盘(恢复),每次写两个磁盘,发现错误转向另一个磁盘


MINIX文件系统V1.0的实现

  • 逻辑结构布局示意图
    image_1b6477ehg36b6vp7k21tfr18lbm.png-56.4kB

  • 根据文件名访问文件内容的过程示意图
    image_1b647lquj3c83iaos598k10fo13.png-165.8kB

image_1b647o13mdm3e4r1gtb1p8b1q7r1g.png-154.8kB

原文地址:https://www.cnblogs.com/vachester/p/7083006.html