操作系统_清华大学

2017年10月14日


1 操作系统结构

不闻不若闻之,闻之不若见之,见之不若知之,指之不若行之;学至于行之而止矣。————荀子《儒效篇》

操作系统的地位

OperatingSys

操作系统的演变

  • 单用户系统
  • 批处理系统
    • 保持多个程序工作在内存当中,并且在各自工作间复用CPU
  • 多道程序系统
  • 分时
    • 定时中断用于工作对CPU的复用
  • 个人计算机:每个用户一个系统
  • 分布式计算:每个用户多个系统

简单结构

  • MS-DOS – 在最小的空间,设计用于提供大部分功能 (1981~1994)
    • 没有拆分为模块
    • 虽然 MS-DOS 在接口和功能水平没有很好地分离,主要用汇编编写

分层结构

  • 将操作系统分为多层(levels)
    • 每层建立在低层之上
    • 最底层(layer o),是硬件
    • 做高层(layer N),是用户界面
  • 每一层仅仅使用更第一层的功能(操作)和服务
  • UNIX操作系统是1972年由Kenneth Thompson和Dennis Ritchie在贝尔实验室设计
  • 设计用于UNIX操作系统的编码例程
  • 高级系统编程语言创建可移植性操作系统的概念

微内核结构(Microkernel)

  • 尽可能将内核功能移到用户空间
  • 用户模块之间的通信使用消息传递
  • 好处:灵活/安全
  • 缺点:性能

外核结构(Exokernel)

  • 让内核分配机器的物理资源给多个应用程序,并让每个程序决定如何处理这些资源
  • 程序能够链接到操作系统库(libOs),实现操作系统的抽象
  • 保护与控制分离

VMM(虚拟机管理结构)

  • 虚拟机管理器能够将单独的机器接口转化为很多虚拟机,每一个虚拟机都是一个原始计算机系统的有效副本,并能够完成所有的处理器指令

x86-32硬件-内存构建

  • 地址是访问内存空间的索引
  • 80386是32位的处理器,一般地址总线有32根,逻辑地址编码采用的地址位数是32位,即可以寻址的物理内存地址空间为2^32=4G字节
  • 物理内存地址空间是处理器提交到总线上用于计算机系统中的内存和外设的最终地址。一个计算机系统只有一个物理地址空间
  • 线性地址空间是在操作系统的虚拟管理之下每个运行的应用程序能访问的地址空间。每一个运行的应用程序都认为自己独享整个计算机系统的地址空间,这样可让多个运行的应用程序之间相互隔离
  • 逻辑地址空间是应用程序上直接使用的地址空间
  • 段机制启动、页机制未启动:逻辑地址 –> 段地址空间 –> 线性地址 = 物理地址
  • 段机制和页机制都启动:逻辑地址 –> 段机制处理 –> 线性地址 –> 页机制处理 –> 物理地址

x86-32硬件-寄存器

  • 通用寄存器
    • EAX: 累加器
    • EBX:基址寄存器
    • ECX:计数器
    • EDX: 数据寄存器
    • ESI:源地址指针寄存器
    • EDI:目的地址指针寄存器
    • EBP:基址指针寄存器
    • ESP:堆栈指针寄存器
  • 段寄存器
    • CS: 代码段(Code Segment)
    • DS: 数据段(Data Segment)
    • ES: 附加数据段(Extra Segment)
    • SS: 堆栈段(Stack Segment)
    • FS: 附加段
    • GS:附加段
  • 指令指针寄存器(EIP)
    • EIP的低16位就是8086的IP,它储存的是下一条要执行执行的内存地址,在分段地址转换中,表示指令的段内偏移地址
  • 标志寄存器(EFLAGS)
  • 控制寄存器
  • 系统地址寄存器,调试寄存器,测试寄存器

CPU是由控制器组成的,控制器控制着计算机的运行,而运算器完成对操作数据的加工处理,一个典型的CPU具有:多个通用寄存器,用来保存CPU运行时所需要的各类数据信息或者运行状态信息;算数逻辑运算单元(ALU),对寄存器中的数据进行加工处理;操作控制器,产生各种操作控制信号,以便在各个寄存器之间数据通路;时序产生器,对各种操作控制信号进行定时,以便进行时间的约束。



2 中断及系统调用

操作系统的启动流程

  • cpu加电稳定后从0XFFFFO读取第一条指令
    • CS:IP = 0xf000:fff0
    • 第一条指令是跳转指令
  • CPU的初始状态为16位实模式
    • CS:IP是16位寄存器
    • 指令指针PC=16*CS+IP
    • 最大地址空间为1M
  • 主引导记录(MBR)
    • 启动代码(446字节)
      • 检查分区表的正确性
      • 加载并跳转到磁盘上的引导程序
    • 硬盘分区表(64字节)
      • 描述分区状态和位置
      • 每个分区描述信息占据16字节
    • 结束标志字:2个字节(55AA)
      • 主引导记录的有效标志
  • 加载程序(bootloader)
    • 从文件系统中读取启动配置信息
    • 可选的操作系内核列表和加载参数
    • 依据配置加载指定内核并跳转到内核执行


3 存储管理