第一章 操作系统引论
知识点
- 操作系统
- 定义:配置在计算机硬件上的第一层软件。
- 作用:作为用户与计算机硬件系统之间的接口;作为计算机系统资源的管理者;实现了对计算机资源的抽象;
- 特征:并发、共享、虚拟和异步。
- 基本特征
- 并发(两个或多个事件在同一时间间隔发生):有效地提高系统中的资源利用率,增加系统的吞吐量。
- 并行:两个或多个事件在同一时刻发生。
- 共享:系统中的资源可供内存中多个并发执行的进程共同使用。
- 虚拟:将一个物理实体变为若干个逻辑上的对应物,使原来只能供一对用户通话的信道变为能供多个用户同时通话的逻辑信道。
- 异步:允许进程的执行“走走停停”,以人们不可预知的方式向前推进。
- 并发(两个或多个事件在同一时间间隔发生):有效地提高系统中的资源利用率,增加系统的吞吐量。
- 主要功能:
- 处理管理功能:进程控制、进程同步、进程通信、调度。
- 存储器管理功能:内存分配、内存保护、地址映射、内存扩充。
- 设备管理功能:缓冲管理、设备管理、设备处理。
- 文件管理功能:存储空间管理、目录管理、文件读写管理和保护。
- 用户与操作系统接口:用户接口(联机,脱机(区别在于是否在主机直接控制下进行),图形)、程序接口
- 现代操作系统的新功能:系统安全、网络功能和服务、多媒体。
- 批处理:对某对象进行批量的处理。
- 单道 / 多道批处理系统
- 概念
- 单道批处理:系统对作业的处理成批进行,但在内存中始终只保持一道作业。
- 多道批处理:用户提交的作业先存放在外存上,排成一个队列,即“后备队列”。然后由作业调度程序按一定的算法,从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。
- 优缺点
- 单道批处理:初步保持了系统的连续运行;但系统中的资源得不到充分利用。
- 多道批处理:资源利用率高、系统吞吐量大;但平均周转时间长、无交互能力
- 概念
- 软 / 硬实时任务
- 硬实时任务:系统必须满足任务对截止时间的要求。(工业和武器控制的实时系统通常执行硬实时任务)
- 软实时任务:也有截止时间,但不严格,即使错过也对系统的影响不大。(信息查询系统和多媒体系统)
- 作业周转时间:作业从进入系统到退出系统的时间总量。
- 系统吞吐量:单位时间(1h)内系统所处理的作业个数。
- 抢占式和非抢占式调度
- 定义
- 抢占式调度:允许调度进程根据某种原则,去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。
- 非抢占式调度:一旦把处理机分配给某进程后,就不会因为时钟中断或任何其他原因去抢占当前正在运行进程的处理机。直至该进程完成,或发生某事件被阻塞时,才把处理机分配给其他进程。
- 优缺点
- 抢占式调度:防止一个长进程长时间占用处理机,确保处理机为所有进程提供更公平的服务,有可能在分时系统中实现人机交互,且能满足实时任务的要求;但抢占方式复杂、需要付出的系统开销大。
- 非抢占式调度:实现简单、系统开销小,适用于多数的批处理系统;但不能用于分时系统和大多数实时系统。、
- 定义
- 微内核:操作系统中最基本的部分
重点题目
某计算机系统,有256KB的主存(不包含操作系统),一个磁盘,一个终端和一台打印机。同时提交的三个作业分别命名为JOB1、JOB2、JOB3。各作业运行时间分别为5min、15min和10min。它们对资源的使用情况如下表所示
解答
第二章 进程的描述与控制
知识点
-
前驱图:用于描述程序执行先后顺序的有向无循环图
示例
错误的图(不允许有循环)
-
程序的执行
-
顺序
- 特征:顺序 (严格按照顺序),封闭(程序独占全部资源),可再现(条件相同结果不变)
-
并发
- 只有相互间不存在前驱关系的程序间,才可能并发执行。
- 特征:间断性(并发执行的程序之间相互制约)、失去封闭性(共享资源)、不可再现性
- 可以提高系统吞吐量和资源利用率。
-
-
PCB:进程控制块,为了每个程序能独立地运行,OS为其配置了一个专门的数据结构,称为进程控制块(PCB)用于描述进程的当前情况以及管理进程运行的全部信息。系统用PCB描述进程的基本情况和活动过程,进而控制和管理进程。
- 作用
- 独立运行基本单位的标志
- 实现间断性运行方式
- 提供进程管理所需信息
- 提供进程调度所需要的信息
- 实现与其他进程的同步通信
- 作用
-
进程
-
定义:
- 由程序段、数据段和PCB三部分构成的进程实体简称为进程
- 创建进程=创建PCB,撤销进程=撤销PCB
- 操作系统进程是进程实体的运行过程,是资源分配和调度的一个独立单位
- 程序的一次执行
- 一个程序及其数据在处理机上顺序执行时发生的活动
- 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
-
特征:动态性、并发性、独立性、异步性
- 凡未建立PCB的程序都不能作为一个独立的单位参与运行,不能参与并发
-
与程序的对比
-
5个基本状态:就绪、执行、阻塞、创建、终止
-
状态转换图(背)
-
-
内核:加在硬件上的第一层软件,通过执行各种原语操作来实现各种控制和管理功能,具有创建、撤消、进程通信、资源管理的功能。
- 支撑功能:中断处理、时钟管理、原语操作
资源管理功能:进程管理、存储器管理、设备管理
- 支撑功能:中断处理、时钟管理、原语操作
-
原语
- 概念:由若干指令组成的,用于完成特定功能的一段程序。是“原子操作”,不可分割、不可中断。在系统态下执行,常驻内存。
- 功能:进程控制(创建、终止、阻塞、唤醒、挂起、激活)
- 创建进程
- 申请空白PCB,为新进程申请获得唯一的数字标识符。
- 为新进程分配其运行所需要的资源。
- 初始化PCB
- 将新进程插入就绪队列(如果就绪队列能接纳的话)
-
临界资源:只能被互斥访问的资源。
-
临界区:每个进程中访问临界资源的那段代码指令。
-
临界区管理的准则:空闲让进、忙则等待、有限等待、让权等待(不一定)
-
信号量:一种解决进程同步和互斥的工具,由操作系统提供的服务,只是可供我们调用。
P、V操作:P—申请 wait(S)、V—释放 signal(S) S表示的资源数目
-
信号量的应用
- 实现前驱关系(伪代码)
P1(){S1; signal(a); signal(b); } P2(){wait(a); S2; signal(c); signal(d); } P3(){wait(b); S3; signal(e);} P4(){wait(c); S4; signal(f); } P5(){wait(d); S5; signal(g); } P6(){wait(e); wait(f); wait(g); S6; } main(){ semaphore a,b,c,d,e,f,g; a.value=b.value=c.value=d.value=e.value=0; f.value=g.value=0; cobegin P1();P2();P3();P4();P5();P6(); coend; }
- 进程互斥
semaphore mutex= 1; process 1: { while(1){ wait(mutex); 临界区; signal(mutex); 剩余区; } } process 2: { while(1){ wait(mutex); 临界区; signal(mutex); 剩余区; } }
-
进程同步(生产者与消费者问题)
- 记录型
int in = 0, out = 0; item buffer[n]; semaphore mutex = 1, empty = n, full = 0; void producer() { do { producer an item nextp; ... wait(empty); wait(mutex); buffer[in] = nextp; in := (in + 1) % n; signal(mutex); signal(full); } while(TRUE); } void consumer() { do { wait(full); wait(mutex); nextc = buffer[out]; out = (out + 1) % n; signal(mutex); signal(empty); consumer the item in nextc; ... } while (TRUE); } void main() { cobegin producer(); consumer(); coend }
- and解决
semaphore mutex=1, empty=n; item buffer[n]; int in=0, out=0; void producer(){ do{ produce an item in nextp; Swait(empty, mutex); buffer[in] = nextp; in = (in+1)%n; Ssignal(mutex, full); }while(true); } void consumer(){ do { Swait(full, mutex); nextc = buffer[out]; out := (out+1) % n; Ssignal(mutex, empty); consumer the item in nextc; }while(true); }
两个wait操作的次序能不能互换?两个signal操作的次序能不能互换?为什么?
wait不能换,否则会产生死锁,signal可以交换。
解题关键:
- 实现前驱关系(伪代码)
-
**线程切换什么时候会引起进程的切换?**属于不同进程的线程之间的切换会引起进程的切换。
-
用户态与系统态
- 系统态又称管态、内核态,具有较高的特权,能执行一切指令,访问所有寄存器和存储区。
- 用户态又称目态,具有较低的特权,仅能执行规定指令,访问指定的寄存器和存储器。
第三章 处理机调度和死锁
-
调度的层次:高中低
- 高级调度:长程调度或作业调度,对象是作业;决定把外存上后备队列中的作业调入内存并创建进程,分配资源;多用于多道批处理系统中。
- 中级调度:内存调度,目的是提高内存利用率和系统吞吐量;将暂时不能运行的进程调到外存等待。
- 低级调度:进程调度或短程调度,对象是进程,其运行频率最高,是操作系统最为核心的部分;决定就绪队列的进程获得处理机。
-
调度的目标
-
处理机系统的共同目标:资源利用率、公平性、平衡性、策略强制执行
-
批处理系统的目标:平均周转时间短、系统吞吐量高、处理机利用率高
周转时间:从提交开始到作业完成的时间。
带权周转时间:周转时间/运行时间
-
分时系统的目标:响应时间快、均衡性
-
实时系统的目标:截止时间的保证、可预测性
-
-
处理机调度的基本概念:对处理机资源进行分配。(种类???)
-
JCB:作业控制块
-
调度的各种算法原理,优缺点
- 先来先服务算法(FCFS)
- 只考虑作业等待时间,按到达的先后次序,选择作业/进程进行调度。(从后备作业队列中调入内存,分配资源和创建进程,再将它放入就绪队列)
- 有利于长作业、CPU繁忙作业,但很不合理。
- 短作业优先算法(SJF)
- 只考虑作业运行时间,作业(运行时间)越短,其优先级越高。
- 必须预知作业的运行时间、对长作业很不利、人机无法交互、不能保证紧迫性作业能得到及时处理。
- 优先级调度算法(PSA)
- 基于作业的紧迫程度,由外部赋予作业相应的优先级。
- 可保证紧迫性作业优先运行
- 高响应比优先调度算法(HRRN)
- 优先权 = (等待时间+要求服务时间) / 要求服务时间 = 响应时间 / 要求服务时间=1+等待时间/要求服务时间
- 实现了较好的折中手段,相应的也增加了系统开销。
- 先来先服务算法(FCFS)
-
选择调度算法
-
准则???
-
周转时间:作业从进入系统到完成的时间总量。
-
带权周转时间:作业的周转时间与系统为它提供服务时间之比。
-
响应时间:从发出请求开始到最后收到响应所需要的时间。
-
-
多级反馈队列调度算法
- 优势:不必事先知道各种进程所需的执行时间,还可以较好地满足各种类型进程的需要,是目前公认的较好算法。
- 调度机制如下:
- 设置多个就绪队列,其中第一个队列优先级最高、执行时间片最小
- 每个队列都采用FCFS算法
- 按队列优先级调度
-
最低松弛度优先(LLF)算法:根据任务的紧急/松弛程度,主要用于可抢占式调度中,松弛度越低优先级越高越先执行。
- 松弛度 = 必须完成时间 - 本身运行时间 - 当前时间
- 其他算法缩写EDF(最早截止时间优先)、
-
优先级倒置
-
概念:高优先级进程(或线程)被低优先级进程(或线程)延迟或阻塞。
-
解决方案:
-
提权,即当高优先级进程被阻塞时,由低优先级进程继承其优先级,保持到低优先级进程退出临界区。
-
进入临界区的进程所占用的处理机不允许被抢。
-
-
-
关于死锁
-
概念:
- 是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,他们都将无法在向前进。
- 如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的。
-
产生死锁的原因:
- 竞争不可抢占型资源
- 竞争可消耗资源
- 推进顺序不当
-
需同时满足4个必要条件:
- 互斥条件:进程互斥使用资源
- 请求和保持条件:申请新资源时不释放已占有资源
- 不可抢占条件(不剥夺条件):一个进程不能抢夺其他进程占有的资源
- 循环等待条件(环路等待):存在一组进程循环等待资源的环形链
-
处理方法:预防死锁、避免死锁、检测死锁、解除死锁(防范程度依次减弱、资源利用率依次提高)
- 预防死锁:通过设置某些限制条件来破坏死锁的四个必要条件中的一个或几个,来预防发生死锁。
- 避免死锁:在动态分配资源的过程中,用某种方法防止系统进入不安全的状态
- 检测死锁:通过设置检测机制,及时检测出死锁的发生,确定有关进程和资源
- 解除死锁:撤销或挂起进程、回收资源,重新分配给阻塞进程,使之转为就绪状态。
-
死锁的检测与解除
-
检测
-
如果资源分配图中无环路,则无死锁
-
有环路且每个资源类中仅有一个资源,则发生了死锁,充要条件
-
若有环路,且涉及的资源类中有多个资源,则环路的存在知识产生死锁的必要条件而不是充要。
-
死锁状态的充分条件:当且仅当状态的资源分配图是不可完全简化的
-
-
解除
- 抢占资源:从其他进程抢占足够的资源给死锁进程
- 撤销进程:终止死锁进程
-
-
银行家算法避免死锁——P 121 页 例题
Avaliable:可用资源个数,Avaliable[j]=k表示现有j类资源k个
Max:最大需求,Max[i,j]=K,表示进程i需要j类资源的最大数目为k
Allocation:已分配,Allocation[i,j]=k,表示进程i已分得j类资源数目为k
Need:还需求,Need[i,j]=k,表示进程i还需要j类资源k个
步骤
-
安全状态:系统能按某种进程推进顺序(P1,P2,…,Pn)为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。
-
不是所有的不安全状态都导致死锁,但系统进入不安全状态后,有可能进入死锁状态。
-
只要系统出于安全状态,便可避免进入死锁。
-
-
若系统无法找到这样一个安全序列,则称系统处于不安全状态。(计算与判断)
重点题目
1.调度算法
解答
2.银行家算法
安全性算法
示例
先假定满足分配
安全性检测
第四章 存储器管理
-
存储器的多层结构
-
存储器管理的基本任务:
- 负责对可执行存储器的分配、回收以及提供在存储层次间数据移动的管理机制。
- 主存的分配和管理
- 提高主存储器的利用率
- “扩充”主存容量
- 存储保护
-
程序处理步骤
-
程序装入方式
- 绝对装入:代码的逻辑地址和物理地址相同,装入程序按照装入模块的地址将程序和数据装入内存,不进行地址的修改。只适合单道程序环境
- 可重定位装入:目标模块的起始地址从0开始,程序中其他地址相对于起始地址计算,装入程序根据内存的当前情况,将装入模块装入内存的适当位置。
- 动态运行时装入:地址转换推迟到程序真正要执行的时候,允许移动位置。
-
程序的链接
- 静态链接:在程序运行之前,先将各目标模块以及所需的库函数,链接成一个完整的装配模块。
- 动态链接:边装入边链接。
-
动态分配算法
- 首次适应(First Fit, FF):空闲分区链以地址递增的次序链接
- 循环首次适应(next fit,NF):从上一次找到的空闲分区的下一个开始查找,直到满足要求
- 最佳适应(best fit,BF):按照容量从小到大排序
- 最坏适应(worst fit,WF):挑一个最大的然后分割一部分
-
动态重定位
-
概念:地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行的。
-
引入原因:碎片“紧凑”后便于移动程序在内存中的位置,而无需对程序做任何修改。
-
实现方式:内存地址=相对地址+重定位寄存器中的地址,移动程序只需修改重定位寄存器中的地址。
-
P144 页 图
-
-
对换
- 概念:把内存中暂时不能运行的进程或者暂时不用的程序和数据换出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据换入内存。
- 类型:整体对换,进程对换,页面(分段)对换
-
分页存储管理方式:
-
连续分配方式的缺点:形成许多碎片,紧凑开销大
-
将用户的地址空间分为若干个固定大小的区域,称为“页”或“页面”,大小为2的幂,典型大小为1KB。属于离散分配。
-
地址结构
A=2170B 则页数为2 页内地址为122
-
页表结构
实现从页号到物理块号的地址映射
页号为作业地址空间的页序号,块号为内存空间的页面序号
-
分页系统的地址变换机构(逻辑地址->物理地址)
- 有效地址转换为页号和页内地址,并以页号为索引去检索页表
- 将页号与页表长度进行比较,如果页号>=页表长度,则产生地址越界中断即越界错误。
- 页表始址与页号和页表项长度的乘积相加,得到页表中的位置和物理块号
- 将有效地址寄存器中的页内地址送入物理地址寄存器的快地址字段
-
*若含有快表又如何?? P151 页
增加了一个具有并行查找能力的高速缓存寄存器,内放置当前访问的页表项,上述第二步改为页号与寄存器里的页号比较,快速查找。
-
多级页表
类似目录,二级页表访问时间增加了两倍。
-
-
分段存储管理方式
-
为了方便用户和程序员,方便编程,信息共享,信息保护,动态增长链接等
-
将用户的地址空间分为若干个大小不同的段,每段可定义一组相对完整的信息如:主程序段,子程序段,数据段。属于离散分配。
-
地址结构
-
表结构
-
分段系统的地址变换过程
- 段表寄存器存放段表始址和段表长度
- 将段号与段表长度比较,若段号大则产生访问越界中断
- 根据段表始址和和段号计算段表项位置,读出在内存中的起始地址
- 检查段内地址是否超过段长,超过则越界中断
- 基地址与段内地址相加即物理地址、
-
分页分段区别
-
段页式
分页系统能有效提高内存利用率
分段能更好地满足用户需要
-
离散和连续分配比较
重点题目
1.分页存储
2.分段存储
4*2048+100
3*2048+569
2048+1100
480+14
越界
越界
第五章 虚拟存储器
-
虚拟存储器
- 概念:具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。逻辑容量由内存和外存容量之和决定,运行速度接近内存
- 作用:让比内存空间更大的程序运行、让更多的用户程序并发执行。
- 特征:离散性、多次性、对换性、虚拟性
-
请求分页中地址变换过程
-
请求分段地址变换过程
-
缺页率
-
概念:进程总的页面访问次数A = 访问页面成功次数S + 访问页面失败次数F (缺页率=F/A)
-
影响因素:页面大小、进程所分配物理块的数目、页面置换算法、程序固有特性
-
-
页面置换算法 —— P174 页
-
最佳置换算法 ( Optimal):淘汰以后永不使用的、最长时间内不再被访问的页面。但由于无法预知,故还无法实现。可获得最低的缺页率
f=9/20
-
先进先出页面置换算法(FIFO):淘汰最先进入内存的页面,可设置替换指针始终指向最老的页面,但算法与进程实际运行的规律不适应。
f=15/20
-
最近最久未使用置换算法(LRU):淘汰最近最久未使用的页面,“向前看”,要求硬件支持。
f=12/20
-
最少使用置换算法(LFU ):淘汰最近时期使用最少的页面,在页表增加访问计数。
-
简单的Clock置换算法 (Clock):近似于LRU算法,为每页设置访问位,来表示该页是否已经使用过,将未使用的页面(0)置换出去。
-
改进的Clock置换算法(Clock):增加因素“置换代价”,同时评估访问位A和修改位M,最近既未被访问(0)、又未被修改(0)的为最佳淘汰页。01、10、11
-
页面缓冲算法(PBA):设置了空闲页面链表和修改页面链表,可显著降低页面换进、换出的频率。
-
-
影响页面换进换出效率的因素:页面置换算法、写回磁盘的频率、读入内存的频率
-
要求:对给定的问题,按各种页面置换算法,写页面调入过程,计算和分析缺页率,并对多种算法的性能作比较分析。
-
抖动:每个进程的大部分时间都用于页面的换进和换出,而几乎不能再去做任何有效的工作,从而导致发生处理机的利用率急剧下降并趋于0的情况。
产生原因:页面淘汰算法不合理,分配给进程的物理页面数太少
-
内存分配管理方式
重点题目
状态位:是否调入内存;访问位:记录访问次数或多久没被访问;修改位:记录是否被修改过
4*1024+(1800-1024)
缺页中断,越界错误
(1)4 8/18 6 10/18
(2)6,7,7
3;FIFO;f=16/20
3;LRU;f=16/20
3;OPT;f=11/20
第六章 输入输出系统
-
块设备:数据的存取和传输都是以数据块为单位的设备。
-
字符设备:数据的存取和传输都是以字符为单位的设备。
-
与设备的无关性:隐藏物理设备的细节,仅靠使用抽象的I/O命令与逻辑设备名来使用设备。
-
对I/O设备的控制方式
- 使用轮询的可编程I/O方式(程序I/O,不断循环测试一个字符是否被输入完,极大浪费CPU资源,少用)
- 使用中断的可编程I/O方式(不必查询I/O设备是否就绪,CPU与I/O并行操作,通过控制线向CPU发送中断信号,百倍提高CPU利用率,以字节为单位,被广泛采用)
- 直接存储器访问方式(DMA、能直接与主存交换数据不占用CPU,进一步减少CPU对I/O的干预,多用于磁盘、以数据块为数据传输单位,数据直接从设备送入内存,仅在开始和结束才需要CPU干预)
- I/O通道控制方式(DMA的发展,一个通道可控制多台设备与内存进行数据交换,对一组数据块的读/写干预,最为高效)
-
中断过程
- 测试是否有未响应的中断信号
- 保护被中断进程的CPU环境
- 转入相应的设备处理程序
- 中断处理
- 恢复CPU的现场并退出中断
-
设备独立性
- 概念:应用程序独立于具体使用的物理设备。
- 实现:在应用程序中, 使用逻辑设备名称来请求使用某类设备;而系统在实际执行时, 还必须使用物理设备名称。
-
设备控制表(DCT)
-
虚拟设备
通过虚拟技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程同时使用, 通常把这种经过虚拟的设备称为虚拟设备。也是一种共享设备
-
假脱机Spooling系统
- 概念:多道程序环境中,用程序模拟外围控制机功能。 输出时把处理机数据快速写入高速磁盘,之后再从高速磁盘输出到外围低速设备; 输入时把外围 I/O 设备数据先读入高速磁盘,CPU 再脱机(CPU做其他事情)从高数磁盘读入数据。 (设置了输入输出井)
- 作用:可将一台物理I/O设备虚拟为多台逻辑I/O设备,允许多个用户共享一台物理I/O设备。
- 特点:提高了 I/O 的速度、将独占设备改造为共享设备、实现了虚拟设备功能
- 组成:输入输出缓冲区,输入输出井,输入输出进程,井管理程序。
- 缓冲( 区?)
- 概念:一个存储区域,可由专门的硬件寄存器或内存组成。改善中央处理器与外围设备之间速度不配的矛盾,凡是数据到达和离去速度不匹配的地方均可采用缓冲技术。
- 作用:
- 缓和CPU与I/O设备间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 解决数据粒度不匹配的问题
- 提高CPU和I/O设备之间的并行性
-
磁盘移臂调度采用的是先来先服务(FCFS):根据进程请求访问磁盘的先后次序进行调度。
优点:公平、简单,且每个进程的请求都能依次地得到处理,不会出现某一进程的请求 长期得不到满足的情况。
缺点:由于未对寻道进行优化,致使平均寻道时间可能较长。
-
磁盘调度算法
-
最短寻道时间优先(SSTF):要求访问的磁道与当前磁头所在磁道距离最近,每次寻道时间最短,但不保证平均寻道时间最短。可能导致某个进程发生饥饿现象(进程饥饿,指当等待时间给进程推进和响应带来明显影响称为进程饥饿)
-
电梯调度算法(SCAN):选择与当前磁头移动方向一致且距离最近的进程。有可能出现饥饿现象。
-
循环扫描算法(CSCAN):可降低饥饿现象,规定磁头单向移动,循环执行。即结束后立即回到起点。
-
NStepSCAN:将磁盘请求队列分成若干个长度为 N 的子队列,磁盘调度将按 FCFS 算法依次处理这些子队列。 而每个队列的处理是按 SCAN 算法,一个处理完毕再处理下一个队列。
-
FSCAN:是 NStepSCAN 算法的简化,只分为两个子队列。一个是由当前所有请求磁盘 I/O 的进程形成的 队列,由磁盘调度按 SCAN 算法进行处理。另一个是在扫描期间,将新出现的所有请求磁盘 I/O 的进程 放入等待处理的请求队列
-
重点题目
1.平均寻道长度计算
45 + 3 + 19 + 21 + 72 + 70 + 10 + 112 + 146 =498
498 / 9 = 55.3
第七章 文件管理
-
文件、记录、数据项的概念和层次关系
-
文件:由创建者定义的、具有文件名的一组相关元素的集合,分为有结构文件和无结构文件。
-
记录:一组相关数据项的集合,用于描述一个对象在某方面的属性。在记录的各个数据项中,能唯一地标识一个记录的一个或几个数据项,称为关键字。
-
数据项:文件系统中最低级的数据组织形式,分为基本数据项(一个对象的某种属性的字符集)和组合数据项(由基本数据项组成)。
-
层次关系图
-
-
文件逻辑结构
-
概念
从用户观点出发所观察到的文件组织形式,即文件是由一系列的逻辑记录组成的,是用户可以直接 处理的数据及其结构,它独立于文件的物理特性,又称为文件组织
-
分类:
-
按照结构:有结构文件(由多个记录构成,记录式文件)、无结构文件(由字符流构成,流式文件)
- 结构文件:有标准格式,各种属性项描述文件的一个实体,分为定长记录,变长记录。例如:各种数据库文件
- 无结构文件:流式文件。无法直接读取查询,只能靠指针移动定位
-
按文件的内容/数据的组织方式:顺序文件、索引文件、索引顺序文件
-
顺序文件:由一系列记录按某种顺序排列(关键字或时间)所形成的文件。
-
索引文件:为可变长记录文件建立一张索引表,为每个记录设置一个表项。
-
索引顺序文件:为一组记录中的第一个记录建立一个索引表项
-
-
-
第八章 磁盘存储器的管理
-
外存组织方式
-
连续组织方式
原理:为每个文件分配连续的磁盘空间。(基本不可能)
优点:
- 顺序访问容易;
- 顺序访问速度快。
缺点:
-
要求为一个文件分配连续的存储空间,从而产生大量碎片;
-
必须事先知道文件的长度;
-
不能灵活地删除和插入记录;
-
不便于动态增长的文件。
-
链接组织方式
原理:为文件分配多个不连续的盘块,再通过每个盘块上的链接指针,将同属于一个文件的多个离散的 盘块链接成一个链表, 由此所形成的物理文件称为链接文件。
优点:
-
消除了磁盘的外部碎片,提高了外存的利用率。
-
对插入、删除和修改记录都非常容易。
-
能适应文件的动态增长,无需事先知道文件的大小。
(1)隐式链接
原理:每个目录项含有指向文件第一个和最后一个块的指针。每个盘块中含有指向下一个盘块的指针。
缺点:只能顺序访问,随机访问效率极低,同时也很不安全,中间链接断开,后面全部都找不到了
(2)显式链接
原理:构建一张链接表,把文件各物理块的指针显式存放,该表在整个磁盘中仅仅有一张,即文件分配表 FAT。链首指针对应的盘块号,作为文件地址填入 FCB 的物理地址字段中
-
-
索引组织方式
将文件和对应的盘块号集中放在一起,访问文件时将该文件所对应的盘块号一起调入内存。 在索引分配中,为每个文件分配一个索引块(表),文件盘块号都在该索引表中。建立文件时,只需要 在建立的目录项中填上指向索引表达指针即可。
(1)单级索引
优点:支持直接访问,不会产生外部碎片。当文件较大时,索引方式要优于链式分配方式。
缺点:每一个文件都需要一个索引表。对于小文件来说,索引分配利用率低,浪费空间建立索引。
(2)多级索引
优点:对大型文件查找迅速。
缺点:随着索引级数增多,所需启动磁盘的次数增加。对小文件来说浪费资源,只适合大型文件。
-
-
文件分配表(FAT)
-
在整个磁盘中仅设置一张,分配磁盘上的物理块
-
表的序号是物理盘块号,从0开始,直至N-1;N为盘块总数。在每个表项中存放链接指针,即下一个盘块号。在该表中,凡是属于某一文件的第一个盘块号,或者说是每一条链的链首指针所对应的盘块号,均作为文件地址被填入相应的FCB的“物理地址”字段中。
-
FAT表原理和大小的计算
-
-
NTFS的新特征
- 使用了64位磁盘地址
- 支持长文件名,单个文件名限制在255个字符以内,全路径名为32767个字符
- 具有系统容错功能
- 能保证系统中的数据一致性
- 提供了文件加密、文件压缩等功能。
-
磁盘组织
-
分区称为卷 。
-
NTFS以簇作为磁盘空间分配和回收的基本单位,又称卷因子。
-
卷因子是物理磁盘扇区的整数倍,是格式化命令时候确定的
-
一个文件占用若干个簇,一个簇只属于一个文件。
-
通过卷因子(簇)与逻辑簇号(卷中所有簇按顺序的编号)的乘积定位数据的物理地址。
-