操作系统强化
第一章 计算机系统概述
- 操作系统的基本特征
并发、共享、虚拟、异步
- OS的目标和功能
处理机管理、存储器管理、设备管理、文件管理
高内聚 低耦合
- 内核态和用户态的转换
用户态使用trap指令转移到内核态
操作系统初始化过程
中断过程和多重中断过程
系统调用处理过程和CPU状态变化
中断和异常
区分中断和异常的区别(外中断和内中断)
问题点:操作系统初始化过程、中断过程
第二章 进程和线程
- 进程和线程的概念
进程是资源分配的基本单位、线程是CPU调度的基本单位
- 进程和线程的组成
进程控制块(PCB):进程创建后,常驻内存,包含PID,进程控制管理信息,CPU状态信息,恢复现场的信息,时间片,资源分配信息等
程序段(CPU调度执行的代码)
数据段(加工后称为程序段)
线程控制块TCB
- 进程的状态与转换
3状态模型和5状态模型
3状态:就绪、运行、阻塞
5状态:创建、就绪、阻塞态、运行态、终止态
就绪只缺少CPU,阻塞缺少其他资源(除CPU之外的)
引起进程状态转换的事件
就绪——〉执行 获得CPU
执行->阻塞 io阻塞
创建->就绪 除CPU外的资源分配完毕
阻塞->就绪 申请到io资源
运行->就绪 时间片使用完毕 被高优先级抢占
- 进程控制
原语:不可再分的基本单位
父子进程的关系:子进程的虚拟地址空间是父进程的副本(不是子集 相互隔离的),父子进程可共享io设备
进程创建的过程:分配pid pcb 内存 io等资源 初始化pcb的内容
进程的终止的操作:根据pid 找到pcb 回收io资源 终止该进程以及子孙进程,删除pcb
进程的阻塞和唤醒:
阻塞:申请io资源失败时,使用阻塞原语将该进程从执行态变为阻塞态,将该进程PCB插入对应事件等待队列
唤醒:所需要的io操作已完成或所期待的数据已到达时,使用唤醒原语(wakeup)将该进程从阻塞变成就绪
- 进程通信
共享存储、消息传递、管道通信
管道通信:管道是一个特殊的文件,理解为buffer,大小固定,采用读者-写者模式管理该buffer,由父进程创建,从而实现子进程与父进程间的通信。
父进程与子进程之间的通信:
管道(Pipe)、命名管道(FIFO)、共享内存(Shared Memory)、消息队列(Message Queue)、信号(Signal)
独立进程之间的通信:
套接字(Socket)、共享内存(Shared Memory)、消息队列(Message Queue)、信号(Signal)、文件(File)、命名管道(FIFO)
- 线程
线程的基本概念:最基本的CPU执行单元
线程3状态模型和切换
线程控制块TCB
线程和进程的区别:
CPU调度是以进程为基本单位,故同属于一个进程的线程切换 并不会引起CPU调度
进程切换和线程切换哪些会引起CPU调度?
资源分配是以进程为单位
线程的实现方式:
用户级线程: CPU不感知,线程切换不需要转换到内核空间,线程切换在用户控制下 CPU调度以进程为单位,存在线程阻塞,不能发挥多CPU的优势。
内核级线程:线程管理在内核空间中实现,能发挥多CPU的优势,避免线程阻塞,线程切换速度快(线程的调度在内核),但同一进程的线程切换需要从用户态转移到和心态,系统开销大
组合方式:
多线程模型
- CPU调度调度和切换的时机
创建新进程、进程终止或异常结束、因io阻塞、io唤醒、高优先级、时间片等
不能进行调度:处理中断的过程中、原子操作
- 性能计算
CPU利用率:有效工作时间 / 有效工作时间 + CPU空闲等待时间
系统吞吐量:
周转时间、平均周转时间、带权周转时间、平均带权周转时间
等待时间
响应时间
- 进程切换操作和前后CPU模式变化
CPU模式包含用户态和核心态
上下文切换实际上就是PCB信息切换的过程
上下文切换在内核态
用户态和内核态之间的切换称为模式切换
- 调度算法
先来先服务FCFS
短作业优先SJF:存在饥饿现象
高响应比优先调度:等待时间 + 要求服务时间 / 要求服务时间
优先级调度: 抢占式和非抢占式,静态优先级和动态优先级,优先级的设定:系统>用户,交互>非交互,IO>计算
时间片轮转:
多级反馈队列:队列间采用优先级调度,各队列使用FCFS和时间片轮转
- 临界区和临界资源的区别
临界区:访问临界资源的那段代码
临界资源:一次仅允许一个进程使用的资源称为临界资源
- 同步和互斥的关系
同步表示确定前后执行关系,直接制约关系
互斥
- 临界区互斥必须遵循的规则
空闲让进
忙则等待
有限等待
让权等待 (进程不能进入临界区 应立即释放处理器)
14. 实现互斥的方法
软件实现
单标志法:交替进入临界区 需要由另外一个进程唤醒 若该进程不再进入临界区 则另一个也无法进入 违背空闲让进
双标志先检查:违背忙则等待
双标志后检查:违背空闲让进,会出现饥饿现象 违背有限等待
peterson算法:综合1和3的算法思想,使用flag[]解决互斥访问问题,利用turn解决饥饿问题 ,未遵循让权等待
硬件实现:
中断屏蔽方法 使用关中断 临界区 开中断
硬件指令 TestAndSet指令 使用ts给资源上锁 结束后 解锁
硬件指令 Swap
未遵循让权等待,会导致饥饿现象
互斥锁:使用硬件实现,存在忙等现象
信号量:PV操作
整型信号量 未遵循让权等待
记录型信号量 使用链表存储等待资源的进程 解决让权等待
- 利用信号量实现同步和互斥
确定进程数
分析同步和互斥关系
编写步骤
确定信号量和初始值
对缓冲区一般需要互斥访问
生产者和消费者问题:
生产者和消费者对缓冲区的访问是互斥的
只有生产了数据,消费者才能消费,故存在同步关系
读者写者问题:
对buffer的访问需要两个互斥信号量,一个mutex = 1
和 empty = N
哲学家进餐 (一次性将所有资源全部拿走 否则释放资源)
吸烟者问题
- 管程
实现共享资源同步互斥的操作管理的一组数据结构
x.wait 将该进程插入到因x条件阻塞的队列中
x.sign 唤醒x队列的进程
- 死锁的定义
多个进程相互等待对方手里的资源而形成的僵局
- 死锁和饥饿的区别
死锁是成环型等待,饥饿是独自等待
- 死锁产生的必要条件
互斥条件
不可剥夺
请求并保持 进程至少保持了一个资源 但又请求一个新的资源请求,该资源被其他进程占有
循环等待条件 存在一个资源循环等待链
- 死锁的处理策略
死锁预防 破坏4个必要条件 (事先预防策略)
避免死锁 资源分配 防止进入不安全状态 银行家算法 (事先预防策略)需要事先知道所有资源请求
死锁的检测 :
不需要事先知道所有资源请求
资源分配图 找孤点 化去其请求边和分配边(怎么找孤点?)
死锁定理:s状态的资源分配图是不可完全简化的
死锁的解除:资源剥夺、撤销进程、进程回退
第三章 内存管理
- 内存管理
内存管理实际上就是os对内存的划分和动态分配
内存空间的分配和回收、地址转换、内容空间扩容(虚拟技术)、存储保护(越界判断)
- 编译、链接和装入
编译:生成目标模块
链接:将目标模块组合在一起形成一个完整的装入模块
装入:将装入模块装入内存
装入可分为绝对装入(逻辑地址和物理地址一致)、可重定位装入(将逻辑地址在装入时全部修改为物理地址)、动态运行时装入(在运行时才将相对地址转为绝对地址 设置一个重定位寄存器)
链接的方式:
静态链接:运行前,将所有模块链接成一个完整的装入模块,不再拆开,需要修改个模块的相对地址(每个模块都是从0开始的相对地址)
装入时动态链接:在装入内存时,边装入边链接,所有的的库在加载时就被解析好,程序执行时,所有的链接都已完成
运行时动态链接:在程序执行时需要某目标模块时,才对它进行链接,并不是一开始就将所有模块都链接装入内存,所以节省内存空间
- 逻辑地址和物理地址
故逻辑地址在链接阶段生成 不是装入阶段! 装入阶段会生成对应的物理地址了
编译后的所有模块都是从0地址开始编址,使用相对地址(逻辑地址),用户程序和程序员只知道逻辑地址
地址重定位:逻辑地址转换为物理地址,操作部件MMU
- 内存的保护
保护各进程内存空间互不影响
在cpu中设置一对上下限寄存器表示该进程的内存空间的上下界(物理地址),在地址转换过程中判断是否越界
使用界地址寄存器(表示进程最大的逻辑地址)判断是否越界,再加上重定位寄存器转换为物理地址
- 内存共享
实现进程通信的一种方式IPC,多个进程可以同时读写同一块物理区域(读写时,需要使用同步机制解决数据不一致性)
- 连续分配方式
单一连续分配: 系统区和用户区,用户区内仅有一道用户程序,独占空间
固定分区分配:将用户区划分为多个分区,分区的大小相等或不等,使用分区使用表管理,(分区内部存在内部碎片)
动态分区分配:根据进程的实际需要分配内存,分区的大小正好等于进程所需要的,但是会产生很多外部碎片,外部碎片可通过紧凑技术克服,需要设置重定位寄存器,分区的回收通过空闲分区链,可将相邻空闲分区整合为一个大的分区,
- 动态分区分配算法的比较
首次适应:按地址递增次序排列,顺序找第一个满足大小(性能最好)
邻近适应(循环首次适应):从上次结束的位置继续往下查找
最佳适应:按照容量递增 顺序找到第一个满足大小 产生很多外部碎片
最坏适应:按照容量递减排列,找第一个最大
- 对空闲分区链的管理
快速适应
伙伴系统
哈希算法
- 分页管理
产生页内碎片,不产生外部碎片
逻辑地址A = 页号 + 页内偏移量
先根据页表基址寄存器查找页表的首地址(物理地址),并根据页表长度判断判断该页号是否越界
页表在内存中,访问页表需访存1次,页表的页号不占存储空间,内部所存储的为页框号,因此可计算页表可存储多少个页框号,设页的大小为4K,页框号占16位,按字节编址,4K/2B = 所包含的页框号数量
在虚拟分页中:
页表项 = 页框号 + 有效位 + 修改位 + 访问位 + 权限位 + 缓存控制等
故大小不一定为2B
取出页表中页号所对应的页框号,拼接上页内偏移量即为所求物理地址
多级分页:页目录号 二级页号 页内偏移
仅将当前所需要的页表项掉入内存,其余仍然在磁盘上,故页表基址寄存器存放的为页目录的起始物理地址。
根据页目录号得到二级页表的物理地址,将其调入内存,再根据二级页号查找到对应页框号
- 带TLB的分页管理
利用局部性原理,TLB和cache属于同层级,不在内存中,故访问TLB不需要访存,
逻辑地址 = 标记 + 行号 + 页内偏移量 (TLB采用组相连映射)
TLB访问过程:根据行号找到对应行找,依次比较该行内的各个标记取出页框号
- 分段管理
段号 + 段内偏移
根据段表基址寄存器找到段表的起始地址,再根据段表长度判断是否越界
段表项大小是一致的,故段号不占空间
根据段表的起始地址找到段表中对应的段号,取出该段的基址,再和段内偏移拼接得到物理地址
- 段页式管理
先分段,再分页
逻辑地址 = 段号 + 页号 + 页内偏移
根据段表基址寄存器找到段表的起始地址,由段表长度判断该段号是否越界
找到段号对应的段表项,取出页表的基址
由页表基址找到对应的页号,取出对应页表项中的页框号
页框号 + 页内偏移 = 物理地址
- 传统存储管理的缺点,虚拟存储采用哪些方法解决这些问题?
传统存储管理具有一次性,驻留性的特点,作业全部是一次性的装入内存后才开始运行,并且常驻内存
虚拟存储器采用装入 请求 置换解决
仅装入当前进程所必需的资源,在运行过程中所需资源不在内存则请求该资源调入内存,若当前进程分配的资源已满,则将近期不使用的换出内存
虚拟存储的内存空间是连续分配还是非连续分配?
非连续分配
建立在离散分配的内存管理
- 页表项的字段有哪些
基本信息: 页号(隐藏)类似于数组的下标、页框号(外存地址)
额外:存在位(是否在内存中) + 访问位(用于页面替换算法)+ 修改位
- 驻留集大小和内存内配策略
驻留集表示内存分配给该进程页框号的集合,当所分配的集合已满,则需要使用页面替换算法,换出一页,将请求页换入
页框集合分配和替换策略:
固定分配局部置换
可变分配局部置换
可变分配全局置换
为什么没有固定分配全局置换?思考这么一个场景,固定分配3个页框,每次页面替换仅换入1页 其余均空闲
- 页面置换算法有哪些?什么是Belady异常?哪些算法会导致Belady异常?
最久不使用算法(最佳置换算法OPT):换出以后都不会使用的页面或者以后最久不使用的页面,根据集合向后看
先进先出(FIFO):各个页面置换算法运行过程,按照先进先出策略进行,替换时,淘汰集合的第一个(队列的第一个) 会出现Belady现象 增大集合 缺页次数不减反增
最近最久未使用(LRU):根据各页使用的集合向前看,
时钟Clock算法:首次装入或访问 访问位为1,替换时选择0淘汰,并指向淘汰页的下一页
改进时钟clocl: 访问位0 修改位1 优先级 00、01、10、11
先选00 再找01(同时修改访问位为0)
- 抖动和工作集是什么?抖动和Belady的区别?
抖动:刚换下页面,又即将要被访问 (最少使用算法(LRU)、先进先出(FIFO)、以及最不久未使用(LFU))
工作集:集合中分配的页框号(不重复)
Belady是说缺页次数不减反增(FIFO、随机置换)
- 缺页率的计算
缺页次数 / 访问总次数
- 地址翻译
逻辑地址->物理地址 物理地址的访问
逻辑地址、TLB,页表, 物理地址、cache,内存
- 区分磁盘交换区和文件区
交换区用于内存管理(存放临时不活跃的内存页面)、文件区用于文件数据的长期访问和存储
交换区的io速度大于文件区
- 缺页异常的处理过程
根据页号访问对应页表的页表项,查看存在位为0,发生缺页异常,进行缺页中断,关中断、保存断点和现场信息、引入中断服务程序到PC中、开中断、执行中断服务程序、将对应页调入内存内存中,分配页框号,还需判断驻留集是否已满,如果已满,则需要使用页面置换算法换出一页。
- 文件控制块(FCB)有哪些内容
文件控制块的目的是为了管理文件
包含内容:文件名,文件大小,inode节点,文件访问控制权限,类型,文件状态(打开or关闭),指针
- 如何进行精简目录?目录项的结构?什么是索引结点?
FCB和索引节点都是用于管理文件的数据结构
目录实际上是FCB的集合或者是文件名+索引节点的集合
目录项 = 文件名 + inode节点(索引节点)
索引节点根据所处位置不同,分为磁盘索引节点,当需要调入内存时,将磁盘索引节点复制到内存中,并加上额外的信息称为内存索引节点
索引节点数据结构的内容:类型、权限、所有者、物理地址信息(直接索引和间接索引)、文件长度、链接计数(共享文件硬链接)、存取时间
45. 文件删除的过程?链接计数器的变化?
用索引文件管理的系统下
1️⃣ 通过目录根据文件名找到对应的inode节点
2️⃣ 链接计数器-1
3️⃣ 如果链接计数器为0 文件数据可以被释放 删除对应目录项 并清除inode中的数据块指针
4️⃣ 如果链接计数器不为0 仅删除目录的条目 不释放inode和数据块
- 文件的打开和关闭过程?多进程同时打开文件分析?
使用open系统调用(传入文件名),查找文件描述符,确定文件的位置和属性,访问权限检查,加载inode,更新系统打开文件表,再更新进程打开文件表插入一条目,其实是一个指针,指向系统打开文件表的对应的条目,最后返回文件描述符(文件句柄)。
使用close系统调用,os根据文件描述符查找对应的进程打开文件表项,根据进程打开文件表指向系统打开文件表的指针,对系统打开文件表对应的表项的引用计数减一,进程打开文件表直接删除对应表项,系统打开文件表则需要根据引用计数器是否为0再进行删除操作
⚠️:区分系统打开文件表的引用计数器和inode节点中的引用计数器
系统打开文件表中的引用计数与 inode 节点中的引用计数是相互关联的。系统打开文件表的引用计数反映了某个文件在各个进程中被打开的次数,而 inode 的引用计数则反映了文件系统中有多少个目录项指向该文件
在文件关闭时,两个引用计数都会被更新。关闭时,系统打开文件表的引用计数减一;如果没有其他进程在使用该文件(文件共享),inode 的引用计数也会减一,如果引用计数变为零,才会释放 inode。
- 进程打开文件表和系统打开文件表的区别?进程打开文件描述符有什么用?
系统打开文件表:
定义:系统打开文件表是全局的,管理着所有当前被打开的文件。每个打开的文件在此表中都有一个对应的条目。
内容:每个条目包含文件的 inode 指针、文件位置偏移量、文件状态(如只读、可写等)以及引用计数。
进程打开文件表:
定义:每个进程都有自己的进程打开文件表,记录该进程打开的文件的信息。
内容:包含指向系统打开文件表中相应条目的指针,以及进程对文件的状态信息(如文件描述符)。
- 文件名和文件描述的关系、区别和使用场景?
文件名作为文件的制定标识符,通常用于查找
使用open系统调用传入的就是文件名,随后返回一个文件描述符,读写操作(read,write)都是使用文件描述符
- 文件关闭和删除区别?文件删除后,系统打开文件表中仍然有该文件的内容,还能通过文件描述符访问该文件的内容吗?什么时候才算真正删除文件?
文件关闭会删除进程打开文件表对应的表项,系统文件打开表对应表项的引用计数器-1,但不会删除删除文件
文件删除仅将对应inode节点的引用计数器-1,如果引用计数器为0,则释放该文件的所占磁盘资源,删除文件后,文件系统会标记该文件所占用的空间为可用,但数据本身可能仍然存在,直到被新数据覆盖。
如果一个文件被删除,但仍然有进程打开了该文件,那么文件的内容依然可以通过该进程的文件描述符访问。文件的实际数据仍然存储在磁盘上,只是文件系统不再将其列为可用或可见。
真正删除文件:当所有打开该文件的进程都已关闭文件,且没有其它程序持有该文件的文件描述符。在物理层面,文件的存储空间被新的数据覆盖。此时,原文件的数据就无法再恢复。
- 系统打开文件表中的某文件项的内容会在什么情况下被删除 ?
1️⃣ 所有对该文件访问的文件描述符都已关闭 也就是引用计数器为0
2️⃣ 系统重启
- 文件访问控制表的结构
权限 ✖️ 拥有者 (矩阵)
- 文件分配磁盘块的方法
如何给一个文件分配对应的磁盘块(物理结构)
连续分配:在磁盘中选择一组连续的磁盘块分配给一个文件,读取文件速度快,但在回收之后,会出现较多的外部碎片
链接分配:为解决外部碎片问题,可将各磁盘块通过指针链接起来,故可选择不连续的磁盘块,在访问时速度稍低于连续分配,由于链的原因,故访问某个磁盘块,需要读取前面所有磁盘块,增加磁盘的读写次数
索引分配:给每个文件设置一个索引表,索引表的内容为分配给该文件的磁盘块
53. 各分配目录项和表项的信息
连续分配:
目录项的信息:起始磁盘块号 + 盘块数
链接分配:
目录项的信息:起始盘块号 结束盘块指针
隐式链接链表项的信息:盘块内容和指向下一盘块号的指针
显示链接FAT的信息:FAT在整个磁盘中只有一个,内容包含盘块号以及指向下一盘块的的指针,目录中只有起始盘块号,根据起始盘块号去FAT中查找对应的盘块和下一盘块号
目录项的信息:索引表的磁盘号
索引分配中索引表的信息:所有磁盘块号
54. FAT的作用,所包含信息有哪些,位于哪个位置
FAT在整个系统中只有一张,在操作系统启动时加入内存中,包含盘块号和下一盘块号,下一盘块号为-1表示该盘块为最后一个盘块,若为-2,表示该盘块为空闲盘块
- 索引分配多级索引和混合索引文件大小计算和根据某地址计算访问磁盘次数
确定一个盘块的大小,一个索引表项的大小,可以得到一个盘块可容纳多少个索引表项。 索引表项可以为直接盘块地址,也可以为一个间接索引表或二级索引表
读取索引表盘问磁盘,直接地址需要访问磁盘一次,读取一级间接索引表再读取对应磁盘号2次...
文件大小 = 直接地址所拥有的盘块数 + 一级索引盘块数 + 二级索引
- 绝对路径和相对路径
绝对路径是根目录开始的完整路径 /home/user/file.txt
相对路径相对于当前目录的路径 ./file/text.txt
- 基于无环图目录实现文件共享
基于inode节点中的引用计数实现
- 文件共享中硬链接和软链接的原理以及引用计数值的分析
硬链接:多个文件名(目录项)指向同一个文件的inode,共享原始文件相同的数据块,可表现为不同的文件名,影响原始文件的引用计数
软链接:它是一个特殊类型的文件,它包含一个路径名,指向另一个文件或目录,内容是一个指向原始文件的路径,而不是直接指向 inode,不影响原始文件的引用计数
此时有一个文件F1,为它建立软链接F2,硬链接F3,此时删除F1,则F2和F3的引用计数分别为多少
创建文件 F1:F1 的引用计数为 1(即文件系统中的 inode 引用计数为 1)。
创建软链接 F2:F2 仅仅是一个指向 F1 路径的引用,它本身不会增加 F1 的引用计数。软链接有自己的 inode 和引用计数,但它不会影响目标文件 F1 的引用计数。因此,F2 的引用计数为 1。
创建硬链接 F3:F3 与 F1 指向同一个 inode,因此 F1 和 F3 共享相同的数据块。硬链接会增加原始文件的引用计数,因为它们指向相同的数据内容。因此,F1 和 F3 的引用计数都为 2,因为它们指向相同的 inode。
删除文件 F1:F2 的引用计数为 1(软链接的引用计数不受 F1 删除的影响,但指向的目标文件已经被删除,变成悬挂链接)。F3 的引用计数为 1(硬链接仍然存在,引用计数减少后,F3 成为唯一的引用)。
- 文件系统层次架构有哪些
IO控制层、基本文件系统、文件组织模块、逻辑文件系统
- IO控制层下的驱动程序和IO控制器的功能和区别?
驱动程序将输入的命令翻译成底层的特定指令,控制接收这些指令使IO设备与系统交互。
- 文件系统的整体布局,整个磁盘是如何分区的?各分区如何管理?
主引导记录(MBR)
文件系统的结构:、引导块、超级块、空闲空间管理等
| 引导区 | 分区表 | 主分区1 | 主分区2 | 主分区3 | 主分区4 | 扩展分区 | | | | | | | | | | | | | | | | 逻辑分区1 | | | | | | | | 逻辑分区2 | | | | | | | | 逻辑分区3 |
- 磁盘空闲空间的管理方法
空闲表法:基于连续分配,空闲盘块表的内容,第一个空闲盘块表,空闲盘块数
空闲链表法:
盘块链和盘区链,盘区是将多个盘块合并为一个盘区
位示图法:用二进制的一位表示一个盘块
成组链接法:空闲表和空闲链表不是大文件系统,将空闲盘块分组,记录每组的第一个盘块号和盘块数,组成链表
- IO控制方式有哪些?
程序轮训方式:CPU不断轮训IO控制器状态寄存器,询问数据是否准备好
中断方式:CPU向IO控制器发出IO指令,CPU转去执行其他进程,数据准备好时,IO控制器发出中断信号,CPU在中断周期相应
DMA方式:数据不经过CPU,而是在内存和IO控制器之间开辟一条通路传输数据,适合大数据传输,CPU仅在开始和结束参与,其余时间不干预,实现IO设备和CPU并行
- 中断处理程序执行时请求进程的状态
当进程发出IO命令时,CPU会暂停当前进程的执行,保存进程的上下文(PC,PSW),引出中断服务程序,将请求进程的状态改为阻塞态,执行中断服务程序,根据中断号查找对应中断向量,定位到对应的中断处理程序并执行(读取数据,发送信号等),IO完成时会发送中断完成信号,CPU在中断周期相应信号,并将阻塞的进程恢复为就绪态
- 键盘接收数据的中断过程分析
1、 用户按键,生成对应的键码,放入控制器的数据寄存器中 2、控制器发出中断请求信号 3、CPU在中断周期相应中断 4、数据读取 5、恢复进程执行
- DMA方式的工作流程
1、预处理,设置起始参数,初始内存地址(MAR),设置传送字节数(DC) 2、传送数据 3、后处理
总线优先级高于CPU
- IO子系统各层的排序和功能
- 用户层软件:产生IO请求
- 设备独立性软件:映射、保护、分块、缓冲、分配
- 设备驱动程序:设置设备寄存器、检查状态
- 中断处理程序:保护现场、恢复现场
- 硬件
设备独立性软件所包含的内容
磁盘IO操作中各层的处理过程
设置磁盘高速缓冲区的目的
单缓冲和双缓冲
设备控制表的作用
逻辑设备和物理设备的映射
逻辑设备表
假脱机计数(SPOOLing)
设备驱动程序的功能和特点
磁盘容量的计算
如何将蔟号转换为物理地址
物理地址的解析
新磁盘安装操作系统的过程?
磁盘物理格式化和逻辑格式化的过程?
磁盘存取时间计算
磁盘调度算法有哪些
先来先服务算法
最短寻道时间优先算法
SCAN算法:确定当前磁头的位置,磁头移动的方向,一次访问从磁头的位置到最大磁头位置间的请求,然后调转磁头移动方向,重复上述过程。
C-SCAN算法:类似于SCAN算法,只是在到达最大磁头位置时,会回到起始位置0,继续扫描
C-LOOK算法:不用到达最大磁头位置,而是当前访问的最大磁头位置后再逆转方向。
减少延迟时间的方法
提高磁盘IO速度的办法