zoukankan      html  css  js  c++  java
  • 复习笔记--操作系统下

    第八章 内存管理

    • 程序执行步骤:

      • 编译--从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

  • 相关阅读:
    MyBatis 智能标签
    MyBatis入门
    Hibernate 分组查询 子查询 原生SQL
    组件映射
    Hibernate组件映射
    hibernate 中的 lazy=”proxy” 和 lazy=”no-proxy” 的区别
    save(),saveOrUpdate(),merge()的区别
    ThreadLocal
    OID,主键生成策略,PO VO DTO,get和load区别,脏检查,快照,java对象的三种状态
    HIbernate实现增、删、改、查。
  • 原文地址:https://www.cnblogs.com/vachester/p/7083006.html
Copyright © 2011-2022 走看看