第一章 操作系统概述
1、概念:操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理组织和调度计算机的工作和资源分配,是最基本的系统软件。
2、操作系统的目标与应用环境有关。
3、操作系统的四个目标:方便性、有效性 、可扩充性、开放性。
4、操作系统的三个作用:
可将这些资源分为四类:处理机、存储器、I/O设备以及文件(数据和程序)。
- 处理机管理是用于分配和控制处理机;
- 存储器管理主要负责内存的分配与回收;
- I/O设备管理是负责I/O设备的分配(回收)与操纵;
- 文件管理是用于实现对文件的存取、共享和保护。
5、操作系统的发展∶批处理—>分时一>实时—网络和分布式
- 批处理(缺点∶没有交互能力)
单道批处理:处理完一个作业后,紧接着处理下一个作业,以减少机器的空闲等待时间一>顺序性(CPU 大量时间在空闲等待 I/O)缺点是,系统中的资源得不到充分的利用。
多道批处理(失去封闭性)一>制约性、间断性、共享性
-
优缺点如下:(1) 资源利用率高。 (2) 系统吞吐量大。(3) 平均周转时间长。(4)、无交互能力。
-
多道批处理系统需要解决的问题:(1) 处理机争用问题。(2) 内存分配和保护问题。(3) I/O设备分配问题。(4) 文件的组织和管理问题。(5) 作业管理问题。(6) 用户与系统的接口问题。
-
特点∶ 多道、宏观上并行,微观上串行。
- 分时系统∶ (以时间片为单位)允许多个用户以交互的方式使用计算机。
特点∶多路性、交互性、独立性、及时性 。
注:分时系统能较快、及时接收并处理命令,快速响应用户。
分时系统中,时间片一定时,用户数越多,响应时间越长。
- 实时系统∶系统能够及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有的实时任务协调一致的运行。
特点∶ 及时性、可靠性。
实时系统的类型:
(1) 工业(武器)控制系统。
(2) 信息查询系统。
(3) 多媒体系统。
(4) 嵌入式系统。
实时任务的类型:
(1) 周期性实时任务和非周期性实时任务。
(2) 硬实时任务和软实时任务。
- 网络(网络资源共享)和分布式∶ 区别是在分布式中,若干计算机相互协同
完成同一任务。
6、实时系统与分时系统特征的比较
- 多路性
- 独立性
- 及时性
- 交互性
- 可靠性
7、操作系统的基本特征∶并发、共享(两个最基本的特征)、虚拟、异步。
虚拟:1. 时分复用技术 2. 空分复用技术
异步:进程是以人民不可预知的速度向前推进的。
8、并发和并行的区别
并发∶指同一时间间隔内发生,区别于并行。微观上分时地交替执行。
并行:是指两个或多个事件在同一时刻发生。
9、OS的主要目的是:为多道程序的运行提供良好的运行环境,以保证多道程序能有条不紊地、高效地运行,并能最大程度地提高系统中各种资源的利用率,方便用户的使用。
10、功能∶是计算机系统资源(处理机、存储器、文件、设备)的管理者
- 处理机管理功能
- 进程控制
- 进程同步
- 进程通信
- 调度
- 作业调度。
- 进程调度。
- 存储器管理功能 :
- 内存分配
内存分配的主要任务是:
- 为每道程序分配内存空间。
- 提高存储器的利用率。
- 允许正在运行的程序申请附加的内存空间。
OS在实现内存分配时,可采取静态和动态两种方式:
(1) 静态分配方式。每个作业的内存空间是在作业装入时确定的,
(2) 动态分配方式。每个作业所要求的基本内存空间虽然也是在装入时确定的,但允许作业在运行过程中继续申请新的附加内存空间,以适应程序和数据的动态增长,也允许作业在内存中“移动”。
- 内存保护
内存保护的主要任务是:① 确保每道用户程序都仅在自己的内存空间内运行,彼此互不干扰。② 绝不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其它用户程序中去执行。
- 地址映射
将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。
- 内存扩充
并非是从物理上去扩大内存的容量,而是借助于虚拟存储技术,从逻辑上扩充内存容量。
- 设备管理
任务:1、完成用户进程提出的I/O请求。 2、提高cpu和I/O设备的利用率。
功能 : 1. 缓冲管理2. 设备分配 3. 设备处理
- 文件管理功能
- 文件存储空间的管理
- 目录管理
- 文件的读/写管理和保护
- 文件的读/写管理。
- 文件保护。
11、操作系统与用户之间的接口
- 用户接口
联机(交互式)命令接口(适用于分时 or 实时)
脱机(批处理)命令接口
GUI(图形接口调用系统命令)
- 程序接口(=系统调用命令)
是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径。
注∶ 在多道程序环境下,处理机的分配和运行都以进程(或线程)为单位。
系统调用是由操作系统提供给用户的,它只能通过用户程序间接使用。
12、系统调用(运行在核心态)
用户程序凡是与资源有关的操作(存储分配、I/O、管理文件)都必须通过系统
调用。
用户程序(用户自编 or 系统外层应用程序)工作在用户态;内核程序工作在核心态。
13、原语
处于最底层;不可分割的指令序列;运行时间短,调用频繁。
操作是一种低级的进程通信语言,由两个不可中断的过程组成,并非系统调用。
14、现代操作系统是在传统操作系统基础上发展起来的,它除了具有传统操作系统的功能外,还增加了面向安全、面向网络和面向多媒体等功能。
15、传统操作系统结构有三种:无结构的操作系统、模块化结构OS、分层式结构OS。
16、客户/服务器系统主要由三部分组成。(1) 客户机:(2) 服务器:(3) 网络系统(了解)
17、客户/服务器模式的优点
(1) 数据的分布处理和存储。
(2) 便于集中管理。
(3) 灵活性和可扩充性。
(4) 易于改编应用软件。
18、微内核中包含有:① 与硬件处理紧密相关的部分;② 一些较基本的功能;③ 客户和服务器之间的通信。
19、微内核的基本功能: 1) 进程(线程)管理
2) 低级存储器管理
3) 中断和陷入处理
20、微内核操作系统的优点:
(1) 提高了系统的可扩展性。
(2) 增强了系统的可靠性。
(3) 可移植性强。
(4) 提供了对分布式系统的支持。
(5) 融入了面向对象技术。
21、微内核操作系统缺点:系统的运行效率有所降低。往往会引起更多的上下文切换。
第二章、进程的描述与控制
- 为了更好的描述程序的顺序和并发执行的情况,引入了前趋图
前趋图: 是指一个有向无循环图,可记为DAG(Directed Acyclic Graph),它用于描述进程之间执行的先后顺序。
每个结点可用来表示一个进程或程序段,乃至一条语句,结点间的有向边则表示两个结点之间存在的偏序(Partial Order)或前趋关系(Precedence Relation)。(了解)
在前趋图中,把没有前趋的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点(Final Node)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或程序的执行时间。(了解)
-
程序的顺序执行的特征
-
-
-
-
程序的并发执行的特征
- 间断性: 程序在并发执行时,由于它们共享资源,进程与进程之间形成制约的关系。
- 失去封闭性: 程序在并发执行时,由于共享资源,这些资源的状态都可以由程序来改变,会让其中的任一程序在运行时,会受到其他程序的影响。
- 不可再现性
程序在并发执行时,由于失去了封闭性,其计算结果必然和并发程序的执行速度有关,从而使程序的执行失去了可再现性。
-
在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并具有间断性,以及其运行结果不可再现性的特征。由此,决定了通常的程序是不能参与并发执行的,否则,程序的运行也就失去了意义。为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,人们引入了“进程”的概念。
-
进程的概念
- 进程是程序的一次执行。
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
- 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
-
进程的特征: 动态性、并发性、独立性、异步性(解释)
-
进程的三种基本状态:就绪态、执行态、阻塞态。
注∶ 在可剥夺 OS 中,当有更高优先级的进程就绪时,调度程序将正在执行的进程一>就绪态,让更高优先级的执行。
就绪态∶ 进程已处于准备运行的状态(只缺 CPU 了!)
阻塞(等待资源)∶请求资源失败、等待某操作的完成、数据未到达、无事可做
唤醒(资源到达)∶I/O 操作已完成 or 数据已到,调用唤醒原语
创建一个进程(创建->就绪):1、进程申请一个空白PCB 2、向PCB中填写用于控制和管理进程的信息 3、为该进程分配运行时所必须的资源。 4、把该进程转入就绪状态并插入就绪队列之中。
终止状态(执行->终止): 1、等待操作系统进行善后处理 2、将其PCB清零并将PCB空间返还系统。
- 挂起操作(把进程从内存移动外存的操作,为了释放更多的内存空间)
注: 静止就绪和活动就绪(里面静止指的是在外存,活动说明还在内存)
挂起操作的原因:
(1) 终端用户的需要。
(2) 父进程请求。
(3) 负荷调节的需要。
(4) 操作系统的需要。
-
OS管理的这些数据结构一般分为以下四类:内存表、设备表、文件表和用于进程管理的进程表,通常进程表又被称为进程控制块PCB。
-
进程控制块PCB的作用
(1)作为独立运行基本单位的标志。
(2) 能实现间断性运行方式。
(3) 提供进程管理所需要的信息。
(4) 提供进程调度所需要的信息。
(5) 实现与其它进程的同步与通信。
-
进程控制块中的信息包含四个方面:进程标识符、处理机的状态、进程调度信息、进程控制块的组织方式。
-
进程控制块的组织方式有三种:
-
线性方式,即将系统中所有的PCB都组织在一张线性表中,将该表的首址存放在内存的一个专用区域中。
-
链接方式,即把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列。
-
索引方式,即系统根据所有进程状态的不同,建立几张索引表。
-
进程控制是进程管理中最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能。(进程控制一般是由操作系统内核的原语来实现的)
-
两种状态:
系统态:又称为管态,也称为内核态。具有较高的特权,能执行一切指令,访问所有寄存器和存储区,传统的OS都在系统态运行。
用户态:又称为目态。具有低特权的执行状态,仅能执行规定的指令,访问指定的寄存器和存储区。
一般情况下,用户程序只能在用户态运行,不能访问系统态。
- 操作系统支撑的功能:
(1) 中断处理。(中断处理时内核基本功能,是整个操作系统赖以活动的基础。)
(2) 时钟管理。
(3) 原语操作。(原语:由若干条指令组成,用于完成一定功能的一个过程。不允许被中断。常驻内存。)
- os资源管理的功能:1、进程管理 2、存储器管理 3、设备管理。
17、引起创建进程的操作∶终端用户登录系统、作业调度、系统提供服务、用户程序
的应用请求。
注∶ 用户进程被创建后,随着运行的正常或不正常结束而撤销。(进程是有一定生命周期的!)
18、进程的终止∶ ①异常结束∶存储区越界、保护错、非法指令、特权指令错、I/O
故障②正常结束∶ 任务已完成 ③外界干预(人为、OS 干预、父进程的请求 or
终止)
19、引起进程阻塞和唤醒的事件
(1) 向系统请求共享资源失败。
(2) 等待某种操作的完成。
(3) 新数据尚未到达。
(4) 等待新任务的到达。
20、进程同步机制的主要任务是对多个相关进程在执行次序上进行协调,使并发执行的进程之间能够按照一定的规则来共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性。
21、临界资源(把一段时间内只允许一个进程访问的资源) 临界区(访问临界资源的那段代码)
22、同步机制应该要遵循以下准则:(必问)
(1) 空闲让进。
(2) 忙则等待。
(3) 有限等待。
(4) 让权等待。
23、信号量机制(为了解决进程同步)
- 整型信号量: 除初始化外,仅能通过两个标准的原子操作(Atomic Operation) wait(S)和signal(S)来访问。这两个操作一直被分别称为p、v操作。必须成对出现,而且还是原子操作。
- 记录型信号量
在整型信号量机制中的wait操作,只要是信号量S≤0,就会不断地测试,记录型信号量是为了改进整型信号量提出的。
在信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表指针list,用于链接上述的所有等待进程。
- AND型信号量
前面所述的进程互斥问题针对的是多个并发进程仅共享一个临界资源的情况。在有些应用场合,是一个进程往往需要获得两个或更多的共享资源后方能执行其任务。
- 信号量集
在前面所述的记录型信号量机制中,wait(S)或signal(S)操作仅能对信号量施以加1或减1操作,意味着每次只能对某类临界资源进行一个单位的申请或释放。而信号量集是一次性申请多个资源,而且还是一次性申请多种资源。
24、信号量的应用:
- 利用信号量实现进程互斥。 2、利用信号量实现前趋关系
25、进程通信(进程之间进行信息交换)
低级通信:1、效率低 2、通信对用户不透明
高级通信:1、使用方便。 2、高效地传送大量的数据。
高级通信的类型
- 共享存储系统(互斥访问)∶ 低级方式∶ 基于数据结构的共享; 高级方式∶ 基于存储区
- 消息传递系统∶ 直接通信方式∶ 接收进程从消息队列中取得消息; 间接通信方式∶将消息挂到某个中间实体(邮箱)
- 管道通信系统∶所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。 管道只能采用半双工通信,某一时间段内只能实现单向传输。如果要实现双向同时通信,则需设置两个管道。
- 客户机-服务器系统
26、在OS中引入进程的目的是为了使多个程序能并发执行,以提高资源利用率和系统吞吐量,那么,在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。(引入的目的)
27、进程与线程的比较
- 调度:线程作为处理器调度和分配的基本单位,而进程是作为拥有资源的基本单位。
- 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。
- 拥有资源:进程是拥有资源的一个独立单位,有自己独立的地址空间;线程不拥有系统资源,但可以访问隶属于进程的资源,共享进程的地址空间.
- 独立性: 在同一进程中的不同线程之间的独立性要比不同进程之间的独立性低的多。
- 系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
- 支持多处理机系统:对于传统的进程,不管有多少处理机,该进程只能在一个处理机上运行。但是对于多线程进程,就可以把一个进程中的多个线程分配到多个处理机上,让其并发执行,这无疑将加速进程的完成。
28、进程和线程的关系
(1)二者均可并发执行.
(2)线程是指进程内的一个执行单元,也是进程内的可调度实体。一个程序至少有一个进程,一个进程至少有一个线程,一个线程只属于一个进程.
(3)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(4)处理机分给线程,即真正在处理机上运行的是线程。
(5)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
29、进程实体由程序段、数据段、PCB 三部分组成。
注∶程序段(多个进程可运行同一程序)、 PCB 是进程存在的唯一标志。
30、PCB 描述进程的基本情况和活动过程,可以控制和管理进程。
主要包括∶进程描述信息(ID)、进程控制(优先级)和管理信息、资源分配 和处理机相关。 二进制代码和常量放在正文段; 动态分配的存储区在数据堆段; 临时用的变量在数据栈段。
31、线程运行有三个状态:执行状态、就绪状态、阻塞状态。
32、线程有线程控制块(TCB);进程的话有进程控制块(PCB)。
第三章、CPU 调度与死锁
调度是实质是一种资源分配,处理机调度是对处理机资源进行分配。
1、处理机调度的层次
高级调度(High Level Scheduling):又称为作业调度,根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进程,分配必要的资源,并将它们放入就绪队列。
低级调度(Low Level Scheduling):又称为进程调度,用来决定就绪队列中的哪个进程应获得处理机,然后再由分派程序把处理机分配给该进程。
中级调度(Intermediate Scheduling):又称为内存调度,将暂时不运行的进程调至外存等待。引入中级调度为了提高内存利用率和吞吐量(调到外存等待的进程状态为挂起态)
2、处理机调度算法的共同目标: 资源利用率、公平性、平衡性、策略强制执行。
3、批处理系统的目标:平均周转时间短、系统吞吐量高、处理机的利用率高。
4.、分时系统的目标:响应时间快、均衡性。
5、实时系统的目标:截止时间的保证、可预测性。
6、作业是用户向计算机提交任务的任务实体;进程是完成用户任务的执行实体,是资源分配的基本单位。没有作业任务,进程无事可干;没有进程,作业任务没法完成。
7、作业建立完毕后,是放在外存等待运行;进程一经创建,总由相应的部分存于内存。
8、一个作业可由多个进程组成,且必须至少由一个进程组成,反之则不然。
9、为了管理和调度作业,在多道批处理系统中,为每个作业设置了一个作业控制块JCB,它是作业在系统中存在的标志,其中保存了系统对作业进行管理和调度所需的全部信息。作业标识、用户名称、用户账号、作业类型(CPU 繁忙型、I/O 繁忙型、批量型、终端型)、作业状态、调度信息(优先级、作业运行时间)、资源需求(预计运行时间、要求内存大小等)、资源使用情况等。
10、作业运行的三个阶段和三种状态:要经历收容、运行和完成三个阶段,相应的作业就有后备状态、运行状态、完成状态。
收容阶段:操作员把用户提交的作业输入到外存上,再为该作业建立JCB,并把它放入作业后备队列,此时的作业的状态为“后备状态”。
运行阶段:当作业被作业调度选中后,便为它分配必要的资源和建立进程,并放到就绪队列。一个作业从第一次进入就绪状态开始,直到它运行结束前,再此期间都是“运行态”。
完成状态:当作业运行完成,或发生异常情况而提前结束时,作业就进入“完成状态”。
11、作业调度的几种调度算法:
先来先服务算法: 该算法既可用于作业调度,也可用于进程调度。系统将按照作业到达的先后次序来进行调度。
短作业优先算法:SJF算法是以作业的长短来计算优先级,作业越短,其优先级越高。
其缺点:
(1) 必须预知作业的运行时间。在采用这种算法时,要先知道每个作业的运行时间。即使是程序员也很难准确估计作业的运行时间,如果估计过低,系统就可能按估计的时间终止作业的运行,但此时作业并未完成,故一般都会偏长估计。
(2) 对长作业非常不利,长作业的周转时间会明显地增长。更严重的是,该算法完全忽视作业的等待时间,可能使作业等待时间过长,出现饥饿现象。
(3) 在采用SIF 算法时,人—机无法实现交互。
(4) 该调度算法完全未考虑作业的紧迫程度,故不能保证紧迫性作业能得到及时处理。
优先级调度算法: 可以根据作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据该优先级进行调度的。
高响应比调度算法:该算法既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。
进程调度
12、进程调度的任务有三个:
(1) 保存处理机的现场信息。
(2) 按某种算法选取进程。
(3) 把处理器分配给进程。
13、进程调度机制:
(1) 排队器: 把所有就绪进程按照一定的策略排成一个或多个队列。
(2) 分派器: 根据进程调度程序所选择的进程,让cpu去执行。
(3) 上下文切换器: 保存上面一个进程的相应的内容,包括其状态、中间结果等,以便下一次上处理机能够找到上次执行到的位置。
14、一个进程被暂停剥夺使用权,另外一个进程被选中开始或者继续运行的过程就叫做上下文切换。在这种切出切入的过程中,操作系统需要保存和恢复相应的进度信息,这个进度信息就是“上下文”了。
14、进程调度方式
非抢占式方式:在采用这种调度方式时,一旦把处理机分配给某进程后,就一直让它运行下去,决不会因为时钟中断或任何其它原因去抢占当前正在运行进程的处理机,直至该进程完成,或发生某事件而被阻塞时,才把处理机分配给其它进程。
抢占方式:这种调度方式允许调度程序根据某种原则,去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。
15、进程调度算法
轮转调度算法: 系统将所有的就绪进程按FCFS策略排成一个就绪队列,让cpu依次为其服务。
进程切换的时机:
- 在一个时间片用完时,计时器中断处理程序被激活。如果进程尚未运行完毕,调度程序将把它送往就绪队列的末尾。
优先级调度算法:把处理机分配给就绪队列中优先级最高的进程。
细分的话可以分为:非抢占式优先级调度算法、抢占式优先级调度算法。
优先级的话:静态优先级、动态优先级。
多队列调度算法:把就绪队列从一个拆分为多个,把不同类型的进程分配到不同的就绪队列,不同的队列可以采用不同的调度算法。
多级反馈队列:不必实现知道各种进程所需的执行时间,还可以较好地满足各种类型进程的需要。(先记住这样)
描述
- 设置多个就绪队列。队列的优先级从高到低,优先级高的队列其在cpu上执行的时间片短。
- 每个队列都采用FCFS算法,当新进程进入内存,先放在第一队列的末尾,按照FCFS进行调度,如果该进程能够在时间片内运行完,则撤离系统;否则会插入到第二队列的末尾,依次类推。
- 按照队列的优先级进行调度,从高到低进行调度,如果高优先级的队列为空,才能调度次优先级的队列,依次类推。
前面所介绍的多种调度算法,并不能很好的满足实时系统对调度的要求,为此,需要引入一种新的调度,即实时调度。
16、实现实时调度的基本条件:
- 系统给调度程序提供必要的信息。(就绪时间、开始截止时间和完成截止时间、处理时间、资源要求、优先级)
- 系统处理能力强,能够及时的去处理。
- 采用抢占式调度机制
- 为了保证硬实时任务能及时运行,在系统中应该具有快速切换机制。
17、实时调度算法的分类:
-
最早截止时间优先EDF(Earliest Deadline First)算法:该算法是根据任务的截止时间确定任务的优先级,任务的截止时间愈早,其优先级愈高,具有最早截止时间的任务排在队列的队首。调度程序在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机。最早截止时间优先算法既可用于抢占式调度,也可以用于非抢占式调度方式中。
-
最低松弛度优先LLF(Least Laxity First)算法:该算法在确定任务的优先级时,根据的是任务的紧急(或松弛)程度。任务紧急程度愈高,赋予该任务的优先级就愈高,以使之优先执行。
18、死锁
在系统中有许多不同类型的资源,其中可以引起死锁的主要是,需要采用互斥访问方法的、不可以被抢占的资源。
死锁( Deadlock )的定义:是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种状态时,若无外力作用,它们都将无法再向前推进。
死锁产生的原因:
- 竞争不可抢占性资源引起死锁
通常系统中所拥有的不可抢占性资源其数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局。
- 竞争可消耗资源引起死锁
指由一个进程产生,被另一进程使用一短暂时间后便无用的资源,也称为消耗性资源,它也可能引起死锁。
- 进程推进顺序不当引起死锁
除了系统中多个进程对资源的竞争会引发死锁外,进程在运行过程中,对资源进行申请和释放的顺序是否合法,也是在系统中是否会产生死锁的一个重要因素。
产生死锁的必要条件:
- 互斥条件 (不能破坏)
进程访问的是临界资源,即在一段时间内某资源只由一个进程占用。如果此时还有其他
进程请求该资源,则请求者只能等待,直至占有该资源的进程用完释放。
- 请求和保持条件
一进程在请求新的资源的同时,保持对已分配资源的占有。
- 不可抢占条件
指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用
完时由自己释放。
- 循环等待条件
指在发生死锁时,必然存在一个进程 – 资源的环形链。
处理死锁的方法
- 预防死锁:该方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件的一个或几个,来预防发生死锁。
- 避免死锁:用某种方法去防止系统进入不安全状态,使死锁不致于最终发生。(银行家算法)
- 检测死锁:不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全区,在进程发生死锁之后能够及时检测出来。
- 解除死锁:当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。
第四章 存储器管理
1、对于通用计算机而言,存储层次至少应具有三级:最高层为CPU寄存器,中间为主存,最底层是辅存。
**寄存器:**用来存储指令、数据和地址,分为内部寄存器和外部寄存器。CPU对存储器中的数据进行处理时,先把数据取到内部寄存器中,而后处理。外部寄存器是计算机中其它一些部件上用于暂存数据的寄存器,具有寄存器和内存储器的双重特点。类似于火车站寄存处。
如果老是操作内存中的同一址地的数据,就会影响速度,于是就在寄存器与内存之间设置一个缓存,缓存就把从内存提取的数据暂时保存在里面。寄存器具有与处理机相同的速度,故对寄存器的访问速度最快,完全能与CPU协调工作。
为了缓和CPU和主存之间速度不匹配,所以设置了一个高速缓冲器cache;CPU访问的话,先是访问cache,如果命中,就直接使用; 没有命中,则需要去内存中去找。(cache是在cpu芯片内部)
**高速缓存:**高速缓存是现代计算机结构中的一个重要部件,它是介于寄存器和存储器之间的存储器,主要用于备份主存中较常用的数据,以减少处理机对主存储器的访问次数,这样可大幅度地提高程序执行速度。
**主存储器:**简称内存或主存,是计算机系统中的主要部件,用于保存进程运行时的程序和数据,也称可执行存储器。
磁盘缓存: 由于目前磁盘的I/O速度远低于对主存的访问速度,为了缓和两者之间在速度上的不匹配,而设置了磁盘缓存,主要用于暂时存放频繁使用的一部分磁盘数据和信息,以减少访问磁盘的次数。
2、程序执行过程∶编译、链接、装入。
1 、编译:由编译程序将用户源代码编译成若干个目标模块。
2 、链接:把编译形成的一组目标模块,以及它们所需要的库函数链接在一起,形成一个完整的装入模块。
3 、装入:由装入程序将装入模块装入内存。
链接(链接时形成逻辑地址)
- 静态链接∶将各目标模块及库函数连城一个完整可执行程序,以后不再拆开
- 装入时动态链接∶边装入,边链接(早期多道批处理)
- 运行时动态链接∶需要用到时才链接(现代操作系统)
装入(将逻辑地址转换为物理地址)
- 绝对装入∶编译时产生绝对地址。程序中逻辑地址与实际内存地址完全相同;
只适用于单道程序环境。
- 可重定位装入(静态重定位)∶地址变换通常在装入时一次完成。
特点∶ 一个作业进入内存,必须分配其要求的全部内存空间。在运行期间就不
能再移动位置。没有足够内存时,不能装入作业!
装入时把逻辑地址变换为物理地址,装入后不能改变。
- 动态运行时装入∶不立即转换地址,真正要执行时才进行地址转换(需要重定位寄存器
支持)
特点∶ 动态重定位在作业执行过程中进行。
程序运行前只装入部分代码即可运行。
运行期间动态申请分配内存,便于程序段的共享。
3、地址重定位(地址映射)
逻辑地址(又称相对/虚地址)一>物理地址(内存、绝对、实地址)
注∶ 物理地址可以直接寻址;不能直接用逻辑地址在内存中读取信息!不同进程可以有相同的逻辑地址,但是会映射倒不同的主存位置上。
4、连续分配存储管理方式——一个用户程序分配一个连续的内存空间
- 单一连续分配∶ 内存中只有一道程序;实现简单;
缺点∶只适用于单用户、单任务的 OS 中;存储器利用率低
- 固定分区分配∶ 最简单的一种多道程序存储管理方式,分区大小固定(可相
等,也可不等),分区的大小由系统决定,有内部碎片。
- 动态分区分配∶根据进程的实际需要,动态地为之分配内存空间。 产生外部碎片。
注∶内部碎片∶分区大小固定,程序小于固定分区时也占用一个分区,内部浪费。
外部碎片∶ 在所有分区外的存储空间会变成越来越多的碎片(可以用拼接、紧
凑技术解决,需要动态重定位寄存器支持)。
基于顺序搜索的动态分区分配算法(属于上面的动态分区分配)∶(课件上不是重点)
- 首次适应∶ 空闲分区以地址递增的次序链接,找大小满足要求的第一个分区
- 最佳适应∶XX 按容量递增 XX
- 最坏适应∶XX 按容量递减 XX
- 循环首次适应算法:分配内存时,从上次查找结束的位置开始继续查找。
注∶首次适应(First fit)是最简单,最好,最快的。最佳适应(Best fit)性能
通常很差,产生最多外部碎片。 非连续分配 (离散)—一个程序分散地装入不相邻的内存分区
基于索引搜索的动态分区分配算法:
- 快速适应(quick fit)算法: 该算法又称为分类搜索法,是将空闲分区根据其容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区链表,这样系统中存在多个空闲分区链表。
- 伙伴系统(buddy system)
- 哈希算法
5、区分交换和对换
交换∶把处于等待状态(或在 CPU 调度原则下被剥夺运行权利)的程序从内存移到外存(对应进程的中级调度),把内存空间腾出来。(有效地利用有限的内存资源,确保多个程序能够在内存中同时运行。)
引入对换的原因:
l 阻塞进程占据大量内存空间
l 许多作业在外存而不能进入内存运行
对换: 把内存中暂时不能运行的进程或者暂时不用的程序和数据,调到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程和进程所需要的程序和数据调入内存。
6、对换的类型:整体对换(以整个进程为单位)和页面(分段)对换(以页或段为单位)。
实现进程对换,系统必须具备的功能:
l 对换空间的管理
l 进程的换出
l 进程的换入
7、进程的换入和换出
进程的换出
系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动盘块,将该进程的程序和数据传送到磁盘的对换区上。
进程的换入
系统应定时查看所有进程的状态,从中找出“就绪”状态但已换出的进程,将换出进程最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止。
8、如果允许将一个进程直接分散装入到不相邻的分区中,便可充分地利用内存空间,而无需再进行“紧凑”,基于这种思想产生了离散分配方式,根据离散分配时所分配的地址空间的基本单位的不同,将离散分配分为以下三种:
- 基本分页存储管理方式: 有内部碎片;地址变换由硬件自动完成。
原理:将一个进程的逻辑地址空间分成若干个大小相等的片称为页面或页,并为各页加以编号,从0 开始。同时把内存空间分成与页面相同大小的若干个存储块,称为块或页框。在为进程分配内存时,以块为单位将进程的若干个页分别装入到多个可以不相邻的物理块中。进程的最后一页经常装不满一块而形成“页内碎片”。
系统若能满足一个作业所要求的全部块数,此作业才能被装入内存,否则不为它分配任何内存。
进程的每一页离散地存储在内存的任一存储块中,为方便查找,系统为每一进程建立一张页面映像表,简称页表。
页表实现了从页号到物理块号的地址映射,由页表项组成,是在内存当中。
地址变换机构:
地址变换机构实现从逻辑地址到物理地址的转换,由于页内地址与物理地址是一一对应的,因此,地址变换机构的任务是借助于页表,将逻辑地址中的页号转换为内存中的物理块号。
在系统中只设置一个页表寄存器 PTR ,在其中存放页表在内存中的始址和页表的长度。平时,进程没有执行时,页表的始址和页表长度存放在进程的 PCB 中,当调度到进程时,才将这两个数据装入到页表寄存器中。
- 基地址变换机构
页表全部放在内存中,则存取一个数据或一条指令至少要两次访问内存。
由于页表是存放在内存中的, CPU 在每存取一个数据时,需要
两次访问内存:
l 第一次:访问页表,找到指定页的物理块号,将块号与页内偏移量拼接形成物理地址。
l 第二次:从第一次所得地址中获得所需数据,或向此地址中写入数据。
存储器利用率提高,处理器处理速度降低。
解决方法:在地址变换机构中,增设一个具有并行查寻能力的特殊高速缓冲寄存器,称为“联想存储器”或“快表”。
- 快表的地址变换机构(里面快表TLB是在cpu里面,快表其实是高速缓冲寄存器)
注∶ OS 对内存采用页式存储管理时,所划分的页面大小必须相同。
- 分段存储管理方式
段表结构:段号;段在内存中的起始地址 ( 基址 ) ;段长。
该方式更符合用户和程序的需求:方便编程、信息共享、信息保护、动态增长、动态链接。
- 段页式存储管理方式
9、分页和分段的主要区别
相似点:
采用离散分配方式,通过地址映射机构实现地址变换
不同点:
- 页是信息的物理单位,分页是为了满足系统的需要;段是信息的逻辑单位,含有意义相对完整的信息,是为了满足用户的需要。
- 页的大小固定且由系统确定,由系统把逻辑地址分为页号和页内地址,由机器硬件实现;段的长度不固定,取决于用户程序,编译程序对源程序编译时根据信息的性质划分。
- 分页的作业地址空间是一维的;分段的作业地址空间是二维的。(既要给出段名,又需给出段内地址)
第五章 虚拟存储器
1、传统存储器管理方式有一个共同的特点,即它们都要求将一个作业全部装入内存后方能运行。于是,出现了下面这样两种情况:
(1) 有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行;
(2) 有大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让它们先运行,而将其它大量的作业留在外存上等待。
2、传统存储器管理方式,它们全都具有如下两个共同的特征:
- 一次性:作业必须一次性地全部装入内存后方能开始运行。
- 驻留性:指作业被装入内存后,整个作业都一直驻留在内存中,其中任何部分不会被换出,直到作业运行结束。
3、局部性原理:程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域。
4、基于局部性原理(时间局部性、空间局部性)。(不必装入全部程序,基于非连续分配技术,装入时,只需装一部分,其余留在外存就可以启动;执行时,当访问的信息不在内存,则用 OS 将其调入内存,将暂时不用的换出至外存(内<一>外)
6、虚拟存储器三大特征 ∶ 多次性(不是一次装入内存)、对换性(作业无需常驻内存,运行作业在运行的时候进行换出、换进)、虚拟性。(逻辑上扩充内存)
7、虚拟存储器的实现方法有两种:请求分页系统、请求分段系统。(重点)
请求分页系统
在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。
为了实现请求分页,系统必须提供一定的硬件支持。计算机系统除了要求一定容量的内存和外存外,还需要有请求页表机制、缺页中断机构以及地址变换机构。(分段的类似)
组成(硬件支持)∶ ①请求分页的页表机制 ②地址变换机构 ③缺页中断机构∶页面不在内存时,产生一个缺页中断(属于内中断),请求OS 将所缺页调入(一条指令在执行期间可产生多次缺页中断)
注∶ 页式虚拟存储管理的主要特点∶不要求将作业同时全部装入到主存的连续区域。
请求分页中的内存分配的三个问题:
- 最小物理块的确定(保证进程正常运行所需的最小物理块数,进程应获得的最小物理块数与计算机的硬件结构有关。)
- 内存分配策略: 在请求分页系统中,可采取两种内存分配策略,即固定和可变分配策略。在进行置换时,也可采取两种策略,即全局置换和局部置换。
1 )固定分配局部置换 先给进程分配一定的物理块,如果发生缺页,然后进行局部置换。
2 )可变分配全局置换 给进程分配一定的物理块,OS也保存一个空闲的物理块队列,如果进程发生缺页,从空闲的物理队列分配该进程,然后将调入的页装入。
3 )可变分配局部置换 给进程分配一定的物理块,如果发生缺页,从局部进行置换。如果进程在运行的时候频繁缺页,则系统再为进程分配若干物理块;如果进程在运行中缺页率特别低,则适当的减少分配给该进程的物理块。
3. 在采用固定分配的策略时,如何将系统中可供分配的物理块分配给各个进程,可采用以下几种算法:
- 平均分配算法
- 按比例分配算法,即根据进程的大小按比例分配物理块。
- 考虑优先权的分配算法。
页面调入策略:
系统应在何时调入所需页面;
有两种方法:预调页策略(将那些预计在不久之后便会被访问的页面,预先调入内存。)、请求调页策略(若发现其所在的页面不在内存,便立即提出请求,由 OS 将其所需要的页面调入内存。)。
系统应从何处调入这些页面;
系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。
系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;
是如何进行调入的。(通过缺页中断进行调入)
8、在进程运行过程中,若其所要访问的页面不在内存,而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据送到磁盘的对换区中。但应将哪个页面调出,须根据一定的算法来确定。通常,把选择换出页面的算法称为页面置换算法。
- 最佳置换算法: 其所选择的被淘汰页面将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。
- 先进先出置换算法: 该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
- 最近最久未使用置换算法(LRU):最佳“向后看”,LRU“向前看”,硬件支持较多。淘汰最近最久未使用的页面。
- 最少使用置换算法(LFU):不能完全反映近期页面使用情况。淘汰最近时期使用最少的页面。
- Clock算法
- 简单的clock置换算法:当利用简单Clock算法时,只需为每页设置一位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。
- 改进型clock置换算法:在将一个页面换出时,如果该页已被修改过,便须将该页重新写回到磁盘上;但如果该页未被修改过,则不必将它拷回磁盘。
5.4“抖动”与工作集
9、由于虚拟存储器系统能从逻辑上扩大内存,这时,只需装入一个进程的部分程序和数据便可开始运行,故人们希望在系统中能运行更多的进程,即增加多道程序度,以提高处理机的利用率。
10、抖动∶刚换出的页面马上又要换入内存,刚换入的页面马上又要换出内存频繁换入、换出使系统效率低下。
原因∶淘汰算法不合理、物理页面太少。
解决方案∶
- 采取局部置换策略;(不会影响其他进程,自己在内部解决)
- 把工作集算法融入到处理机调度中;
- 利用L=S准则调节缺页率。
- 选择暂停的进程。
注∶FIFO 最易发生抖动,但所有页面调度策略都不可能完全避免抖动。
11、工作集: 是指在某段时间间隔Δ里,进程实际所要访问页面的集合。
12 Belady 现象:给进程分配的页面数增多但缺页率反而提高的异常现象。发生在 FIFO先进先出)置换算法。
第六章 I/O 管理
1、I/O系统管理的主要对象是I/O设备和相应的设备控制器。其最主要的任务是:
- 完成用户提出的I/O请求。
- 提高I/O速率,以及提高设备的利用率。
- 并能为更高层的进程方便地使用这些设备提供手段。
2、I/O系统的基本功能:
隐藏物理设备的细节。
与设备无关性。
提高处理机和I/O设备的利用率。
对I/O设备进行控制。
对I/O设备进行控制的四种方法:
- 程序直接控制方式
- 中断驱动方式
- DMA 方式
- 通道控制方式
工作过程∶向通道发一条 I/O 指令,给出通道程序的首地址和要访问的 I/O 设备,通道接到指令后,执行通道程序便可完成CPU指定的任务,数据传送结束向CPU发中断请求。
I/O 通道∶专门负责 I/O 的处理机,实现 CPU、通道、I/O 三者并行工作。说
其主要目的是为了建立独立的 I/O 操作,去解放 CPU 。在设置通道后, CPU 只需向通道发送一条 I/O 指令。通道完成任务后向 CPU 发中断信号。
注∶ 通道用于实现内存与外设之间的信息传输。通道是一种特殊的处理器,属
于硬件技术。
确保对设备的正确共享。
从设备的共享属性上,可将系统中的设备分为如下两类:(重点)
- 独占设备,进程应互斥地访问这类设备。
- 共享设备,是指在一段时间内允许多个进程同时访问的设备。
错误处理。
3、I/O系统的层次结构
注:设备驱动程序(与硬件直接相关)∶ 负责执行 OS 发出的 I/O 命令,因设备的不同而不同。
4、I/O系统本身也可分为如下三个层次:
- 中断处理程序。
- 设备驱动程序。
- 设备独立性软件。
5、I/O系统接口分为块设备接口、流设备接口、网络通信接口。
6、I/0 设备分类∶(了解)
(按)使用特性∶人机交互、存储、网络通信
(按)传输速率∶低速(键盘鼠标)、中(打印机)、高(磁盘光盘)
(按)信息交换单位∶ 块设备、字符设备
块设备∶以数据块为单位存取(磁盘);传输速率高
字符设备∶ 以字符为单位传输(交互式终端机、打印机);传输速率低;在 I/O
时常采用中断驱动方式。
7、I/O设备一般是由执行I/O操作的机械部分和执行控制I/O的电子部件组成。在I/O设备中应含有与设备控制器间的接口,在该接口中有三种类型的信号:
- 数据信号线。(用于在设备和设备控制器之间传送数据信号。)
- 控制信号线。(设备控制器向 I/O 设备发送控制信号。)
- 状态信号线。 (给设备控制器传送指示设备当前状态的信号。)
8、设备控制器的基本功能(※)
- 接收和识别命令。(接受cpu的命令)
- 数据交换。
- 标识和报告设备的状态。
- 地址识别。(不知道访问那一个设备。)
- 数据缓冲区。(cpu速度快而外部设备慢。)
- 差错控制。(在传输的过程中,有没有产生错误。)
9、由于设备控制器位于CPU与设备之间,它既要与CPU通信,又要与设备通信,还应具有按照CPU所发来的命令去控制设备工作的功能,因此,现有的大多数控制器都是由以下三部分组成:
- 设备控制器与处理机的接口。
- 设备控制器与设备的接口。
注:设备控制器要提供∶ 控制寄存器、状态寄存器和控制命令。(了解)
10、中断在操作系统中有着特殊重要的地位,它是多道程序得以实现的基础,没有中断,就不可能实现多道程序,因为进程之间的切换是通过中断来完成的。另一方面,中断也是设备管理的基础,为了提高处理机的利用率和实现CPU与I/O设备并行执行,也必需有中断的支持。中断处理程序是I/O系统中最低的一层,它是整个I/O系统的基础。
11、中断和陷入
中断:CPU对I/O设备发来的中断信号的一种响应,通常称为外中断。
陷入:由CPU内部事件所引起的中断,比如进程在运算时发生上溢或下溢,或者程序错误,如非法指令、地址越界,通常称为内中断。
注:中断和陷入处理过程类似,只是信号源不同。
12、设备处理程序通常又称为设备驱动程序,它是I/O系统的高层与设备控制器之间的通信程序,其主要任务是接收上层软件发来的抽象I/O要求。
13、设备驱动程序的功能
- 接受上层软件发来的抽象要求(如read命令),再把它转换成具体要求。
- 检查用户I/O请求的合法性。
- 驱动程序向设备控制器发出I/O命令。
- 及时响应由设备控制器发来的中断请求。
14、设备独立性∶用户编程时使用的设备与实际使用的设备无关。
注:在应用程序中,使用逻辑设备名来请求使用某类设备;而在系统实际执行时,必须将逻辑设备名映射成物理设备名使用,系统中每一台设备按某种原则统一进行编号。
15、设备分配时应考虑的因素∶
- 设备的固有属性 (独占设备、共享设备、虚拟设备)
- 共享设备∶ 可随机访问。分配共享设备不会引起死锁(独占设备才可能)。
- 虚拟设备∶把一个物理设备变换成多个对应的逻辑设备,。
- 设备分配算法(先来先服务,优先级高者优先)。
- 设备分配中的安全性∶ 应防止发生进程死锁。
- 安全分配方式∶设备分配安全,但 CPU 和设备并行工作
- 不安全分配方式∶ 进程可同时操作多个设备,推进迅速; 但有可能产生死锁
独占设备的基本设备分配程序的三个步骤:分配设备、分配设备控制器、分配通道。
一个通道可控制多个设备控制器,每个设备控制器可以控制多个设备。一个设备分配成功,必须这三个都可用。
16、逻辑设备表的设置问题:(LUT: Logical Unit Table)
在系统中可采取两种方式设置逻辑设备表:
- 整个系统只设置一张 LUT∶ 不允许有相同逻辑设备名;主要适用于单用户系统。
- 为每个用户设置一张 LUT 。
17、一方面,为使诸进程能有条不紊地使用I/O设备,且能保护设备的安全性,不允许运行在用户态的应用进程去直接调用运行在核心态(系统态)的OS过程。但另一方面,应用进程在运行时,又必须取得OS所提供的服务,否则,应用程序几乎无法运行。为了解决此矛盾,OS在用户层中引入了一个中介过程——系统调用,应用程序可以通过它间接调用OS中的I/O过程,对I/O设备进行操作。
18、SPOOLing 技术(假脱机技术)—>用软件控制实质上是用户层软件
假脱机技术∶为了缓和 CPU 的高速性与 I/O 设备低速之间的矛盾提出的,可以通过SPOOLing技术把独占设备改变为共享设备。
19、SPOOLing系统主要由以下四部分构成:
(1) 输入井和输出井。(在磁盘开辟两块空间)
(2) 输入缓冲区和输出缓冲区。(在内存的两片区域)
(3) 输入进程和输出进程。(用来模拟脱机输入和输出的外围机)
(4) 井管理程序。
20、SPOOLing 系统的主要特点∶提高 I/O 速度; 将独占设备改造为"共享"设备; 实现
了虚拟设备功能。
21、引入缓冲区的主要目的∶
- 缓和 CPU 与 I/O 间速度不匹配的矛盾(如果 I/O 所花时间比 CPU 处理时间短得多,则没必要设置缓冲区)。
- 减少对 CPU 的中断频率。
- 解决基本数据单元大小不匹配的问题。
- 提高 CPU 和/O 设备之间的并行性。
22、缓冲区特点∶在缓冲区非空时,不能冲入数据,只能传出;当缓冲区为空时,可以冲入数据,但是要缓冲区充满后,才能传出。
- 单缓冲∶设备和处理机之间设置一个缓冲区。处理每块数据用时∶ Max(C,T)+M
- 双缓冲
- 缓冲池∶ 由多个系统公用的缓冲区组成。
注:缓冲区的四种工作方式∶收容输入、提取输入、收容输出、提取输出
23、磁盘分成硬盘和软盘、单片盘和多片盘、固定头磁盘和活动头(移动头)磁盘等。
24、磁盘设备在工作时以恒定速率旋转。
25、扇区∶是磁盘可寻址的最小存储单位。
26、一次磁盘读写操作时间由寻道时间、延迟时间和传输时间决定。但实际上存取时间与磁盘调度算法密切相关。调度算法直接决定了寻道时间。
27、磁盘调度算法∶
- 先来先服务(FCFS)
- 最短寻道时间优先(SSTF)∶ 会产生"饥饿"
- SCAN(电梯算法): SSTF算法的实质是基于优先级的调度算法,因此就可能导致优先级低的进程发生“饥饿”(Starvation)现象。因为只要不断有新进程的请求到达,且其所要访问的磁道与磁头当前所在磁道的距离较近,这种新进程的I/O请求必然优先满足。
注:SCAN算法既能获得较好的寻道性能,又能防止“饥饿”现象,故被广泛用于大、中、小型机器和网络中的磁盘调度。
- 循环扫描(CSCAN)算法
注∶磁盘是共享设备,但在每一时刻,至多只能由一个作业启动它。
第七章 文件管理
从系统角度看,文件系统负责对文件的存储空间进行组织、分配,负责文件的存储并对存入文件进行保护、检索。
-
基于文件系统的概念,可以把数据组成 分为数据项、记录和文件三级。(数据项构成一个个记录,一个个记录构成文件。)
-
文件类型(了解)
-
根据文件的性质和用途的不同,可将文件分为三类:系统文件、用户文件、库文件。
-
按文件中数据的形式分类:源文件、目标文件、可执行文件。
-
按照存取控制属性分类:只执行文件、只读文件、读写文件。
-
按照组织形式和处理方式分类:普通文件、目录文件、特殊文件。
-
最基本的文件操作包含下述内容:创建文件、删除文件、读文件、写文件、设置文件的读/写位置。
-
文件类型结构的类型
按文件是否有结构分类
- 无结构文件(流式文件)∶ 由字符流构成的文件。
- 有结构文件(记录式文件):由一个以上的记录构成的文件。
按文件的组织方式分类
根据文件的组织方式,可以把一个结构文件分为三类:
- 顺序文件∶批量存取效率高(既每次要读或写一大批记录);对单个(增删改查)较困难。
- 索引文件∶通过简单的计算,很容易实现随机查找。
- 索引顺序文件
注∶ 索引表本身是定长记录的顺序文件。
5、对文件目录管理的要求如下: 实现“按名存取”、 提高对目录的检索速度、 文件共享(多个用户共享一个文件)、 允许文件重名。
6、文件控制块(FCB)∶存放控制文件所需的各种信息的数据结构,实现"按名存
取"。一个 FCB 就是一个文件目录项,即本身就也被看成一个文件。里面包含三类信息:基本信息(比如:文件名、文件的物理位置等)、存取控制信息(比如:存取权限等)及使用信息(比如:文件的建立时间等)。
7、目录结构—>目录管理要实现"按名存取";
- 单级目录结构∶在整个文件系统中只建立一张目录表,每个文件占一个目录项。
特点∶ 不便于文件共享;按名存取; 文件不允许重名
- 两级目录结构∶ 将文件目录分成∶ 主文件目录和用户文件目录
特点∶解决文件重名问题;
- 多级目录结构(树型)∶ 方便分类,结构清晰;但增加了磁盘访问次数,影响
查询速度;不便于实现文件的共享
8、目录操作: 创建目录、删除目录、不删除非空目录、可删除非空目录、改变目录、移动目录链接(Link)操作、查找。
9、文件的逻辑结构∶是从用户观点出发看到的文件组织形式。文件逻辑上都可以看作连续的,但在物理设备上并不完全连续。文件的物理结构从实现出发。
10、绝对路径和相对路径
绝对路径∶ 从根目录出发的路径。
相对路径∶进程对各文件的访问都是相对于当前目录进行的。当用户要访问某个文件时,使用相对路径标识文件。
11、文件的物理结构:文件如何存放在外存磁盘上。
12、文件的分配方式∶
- 连续分配∶ 要求每个文件在磁盘上占有一组连续的块
特点∶ 支持顺序访问和直接访问;实现简单,存取速度快;文件长度不宜动态增加。
- 链接分配∶采用离散分配的方式
显式∶ 把用于链接文件各物理块的指针从块末尾提出,显式地放入内存的一张链表(文件分配表 FAT 一>该表在整个磁盘仅设—张)中。
- 索引分配∶索引块应尽可能小(索引表->一个文件分配一张,要占一定空间)
13、文件的存储空间管理∶实际上是对磁盘块的分配和回收
- 空闲表法(系统给外存上所有空闲区建立一张空闲表,每个空闲区对应一个空闲表项,再将所有空闲区按照起始盘块号递增的次序排列。)
- 空闲链表法(将外存上空闲的盘块建立一个链表。)
- 位示图法(要推算出盘块号与字号/位号相互转换)
- 成组链接法(空闲表和空闲链表相结合的方法)