平衡复习重点。
大致内容
一.中断、异常、系统调用
二.进程、调度、进程的状态转换、PCB
三.虚拟页式存储管理、页面置换算法
四.文件的逻辑结构、物理结构,文件的目录、FCB、文件操作
五.磁盘、I/O方式
文件物理/逻辑结构
1、文件的逻辑结构只与文件的格式有关(如 .mp3 等后缀)。文件的逻辑格式(用户角度)与文件系统无关。
文件的逻辑层面的索引结构:从文件的格式来看,从用户的视角。
2、文件的物理结构与文件系统格式有关,同一文件在不同的文件系统下的保存方式不一样。但任何一种文件格式放到不同的文件系统,被拆分成若干个块,这些块在不同文件系统中的物理存储就会出现区别。块的大小由文件系统规定。例如FAT文件系统下,文件的索引方式为文件分配表(类似静态链表);UFS文件系统下,文件的索引方式为混合索引(inode结点,包括直接索引、一级间接索引、二级间接索引等等)
3、文件在磁盘中的存放方式取决于文件系统的格式,而文件系统的格式决定文件在磁盘中的物理结构,用户视角看是连续存放,但实际上可能是离散存放。
打开文件的过程(简陋版)
本例文件系统UFS为例。
①当双击 word.exe 后,操作系统在虚拟内存中进行分区,创建一个进程,同时建立进程对应的PCB,进程等待调度。
(从虚拟内存视角看好像是为该文件分配了一块连续的存储空间,而实际上在物理内存中它一定会被分页,即离散存放。)
(文件在运行过程中它的视角看到的是虚拟内存,而不是物理内存;当物理内存不够用时,就采用页面置换算法进行页面置换,将不用的页面暂时淘汰,需要使用的页面替换进来。)
②open(“D/xxx/宝典.doc”)系统调用,需要指明该文件的存储路径。
③根据路径一级一级查文件目录(目录由若干的目录项组成,即FCB,保存了文件物理结构的相关信息),最终查到目标文件对应的FCB,而FCB中保存了文件的物理结构相关的信息,本例中为该文件的索引结点编号(UFS文件系统)。
④获取索引节点。索引节点连续存储,且有固定位置。假设为2,再根据起始地址和大小,打开对应索引节点的信息,读入内存。
(索引结点在系统中的某个固定的位置开始(所有索引结点的起始位置相同),采用连续存储的存储方式(每个索引结点的大小相同,类似数组),且操作系统知道这些索引结点的起始位置,即操作系统可以根据索引结点的编号找到该文件的索引结点,并根据该索引结点将该文件相对应的数据读入内存)
⑤根据索引节点信息,映射到文件的逻辑块所存放的物理块的位置。通常前半部分,后半部分分别调入。所以会出现转圈圈的情况。
操作系统根据读入的该文件的索引结点(inode,采用混合索引方式)就可以找到其的数据部分(所有)分别存放在哪些物理块中(操作系统可以找到该文件的所有数据,但是通常情况下不需要一次将其全部读入,按需要读入)
⑥操作系统使用read调用读入需要的数据
自用总结
(一)操作系统的基本概念
- 操作系统是指控制和管理整个计算机系统的硬件和软件资源,合理的组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。
- OS是计算机系统中最基本的系统软件。
- 特征:并发、共享、虚拟、异步
- 操作系统作为用户与计算机硬件系统之间的接口。
- 命令接口(联机命令接口/交互式命令接口、脱机命令接口/批处理命令接口)。
- 程序接口:由一组系统调用/广义指令组成。只能通过用户程序间接使用。
- 裸机:没有人任何软件支持的计算机。
- 扩充机器/虚拟机:覆盖了软件的机器。
(二)操作系统的发展历程
- 手工操作阶段(无OS)
- 批处理阶段(单道批处理系统、多道批处理系统):缺乏交互性
- 分时操作系统
- 实时操作系统
- 网络操作系统和分布式计算机系统
- 个人计算机操作系统
(三)程序运行环境
- 1.CPU运行模式
- 内核模式/核心态/管态/内核态、用户模式/用户态/目态
- 操作系统内核:时钟管理、中断机制、原语、系统控制的数据结构及处理
- 2.中断和异常的处理
- 按中断事件来源划分
- 中断/外中断(硬件):与当前指令无关,如IO结束中断、时钟中断
- 可屏蔽中断 INTR
- 不可屏蔽中断 NMI ,如 紧急的硬件故障、电源掉电
- 内部异常/内中断:来自CPU执行指令内部的事件。
- 故障(fault):指令执行引起的异常。如 非法操作码、除数为0、运算溢出、缺页故障
- 自陷(trap):用户态下调用OS内核程序。如 条件陷入指令
- 终止(abort):出现使得CPU无法继续执行的硬件故障。如 控制器出错、存储器校验错
- 异常不能被屏蔽,一旦出现,立即处理。
- 故障异常和自陷异常属于软件中断(程序性异常),终止异常和外部中断属于硬件中断。
- 由访管指令 (trap指令)引起的内中断就是“访管中断”。
- 中断/外中断(硬件):与当前指令无关,如IO结束中断、时钟中断
- 处理
- Step 1:执行完每个指令之后,CPU都要检查当前是否有外部中断信号
- Step 2:如果检测到外部中断信号,则需要保护被中断进程的CPU环境(如程序状态字PSw、程序计数器PC、各种通用寄存器)
- Step 3:根据中断信号类型转入相应的中断处理程序(进入内核态)
- Step 4:恢复原进程的CPU环境并退出中断,返回原进程继续往下执行
- 按中断事件来源划分
- 3.系统调用
- 用户程序可以执行 陷入指令/访管指令/trap指令 来发起系统调用,请求OS提供服务。
- 用户进入核心态的方式
- (1) 系统调用这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。
- (2) 异常当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
- (3) 外围设备的中断当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
- 这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。
- “用户态→核心态”是通过中断实现的,由硬件完成。并且中断是唯一途径。
- “核心态→用户态”的切换是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”。
- 传递系统调用参数 → 执行陷入指令(用户态)→ 执行系统调用相应服务程序(核心态)→ 返回用户程序
- 4.程序的链接与装入
- 5.程序运行时内存映像与地址空间
(四)操作系统结构
- 分层法:只能调用紧邻的低层。层0为硬件。便于调试,易扩充维护。
- 模块化:模块-接口法。内聚性高,耦合度低。
- 宏内核
- 微内核:消息传递机制
- 外核
(五)操作系统引导
- ①CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)
- ②将磁盘的第一块 —— 主引导记录读入内存,执行磁盘引导程序,扫描分区表,找到活动分区起始地址
- ③从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
- ④从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成“开机”的一系列动作
(六)虚拟机
- 同义术语
- 虚拟机管理程序/虚拟机监控程序/Virtual Machine Monitor/Hypervisor
部分文字参考于