文章目录
- 📂 第四章、操作系统基础
- 📁 4.1 操作系统概述
- 📖 4.1.1 基本概念
- 📖 4.1.2 操作系统分类
- 📖 4.1.3 操作系统的发展
- 📁 4.2 进程管理
- 📖 4.2.1 基本概念
- 📖 4.2.2 进程的控制
- 📖 4.2.3 进程间的通信
- 📖 4.2.4 管程
- 📖 4.2.5 进程调度
- 📖 4.2.6 死锁
- 📖 4.2.7 线程
- 📁 4.3 存储管理
- 📖 4.3.1 基本概念
- 📖 4.3.2 存储管理方案
- 📖 4.3.3 分页存储管理
- 📖 4.3.4 分段存储管理
- 📖 4.3.5 段页式存储管理
- 📖 4.3.6 虚拟存储管理
- 📁 4.4 设备管理
- 📖 4.4.1 概述
- 📖 4.4.2 I/O软件
- 📖 4.4.3 设备管理采用的相关技术
- 📖 4.4.4 磁盘调度
- 📁 4.5 文件管理
- 📖 4.5.1 基本概念
- 📖 4.5.2 文件的结构和组织
- 📖 4.5.3 文件目录
- 📖 4.5.4 存取方法和存储空间的管理
- 📖 4.5.5 文件的使用
- 📖 4.5.6 文件的共享和保护
- 📖 4.5.7 系统的安全与可靠性
- 📁 4.6 作业管理
- 📖 4.6.1 基本概念
- 📖 4.6.2 作业调度
- 📖 4.6.3 用户界面
📂 第四章、操作系统基础
📁 4.1 操作系统概述
📖 4.1.1 基本概念
操作系统:能有效地组织和管理系统中的各种软硬件资源,合理地组织计算机系统工作流程、控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。
操作系统2个重要作用:
a) 通过资源管理提高计算机系统的效率;
b) 改善人机界面向用户提供有好的工作环境。
操作系统特征与功能:
操作系统4个特征:并发性、共享性、虚拟性和不确定性。
操作系统功能5大部分:进程管理、文件管理、存储管理、设备管理、作业管理。
📖 4.1.2 操作系统分类
操作系统分类:
批处理操作系统(单道和多道批处理)、分时操作系统(轮流机制)、实时操作系统(实时控制系统和实时信息处理系统)、网络操作系统(集中模式、客户端/服务器模式、对等模式模式)、分布式操作系统、微机操作系统和嵌入式操作系统等类型。
📖 4.1.3 操作系统的发展
促使操作系统发展的因素主要有 3 个方面:
a) 硬件的不断升级与新的硬件产品出现,需要操作系统提供更多、更复杂的支持;
b) 新的服务需求,操作系统为了满足系统管理者和用户需求,需要不断扩大服务范围;
c) 修补操作系统自身的错误,操作系统在运行的过程中其自身的错误也会不断地被发现,因此需要不断地修补操作系统自身的错误(即所谓的“补丁”)。需要说明的是,在修补的过程中也可能会产生新的错误。
📁 4.2 进程管理
进程管理也称处理机管理。
引入进程的原因:在多道程序批处理系统和分时系统中有多个并发执行的程序,采用程序已无法描述系统中程序执行时动态变化的过程。进程是资源分配和独立运行的基本单位。进程管理重点需要研究诸进程之间的并发特性,以及进程之间相互合作与资源竞争产生的问题。
📖 4.2.1 基本概念
程序与进程:
a) 程序顺序执行的特征:
例如,图4-1 为3 个程序其中输入是计算的前驱(计算是输入的后继),输入结束才能进行计算;计算是输出的前驱,计算结束才能进行输出。程序顺序执行时的主要特征包括顺序性、封闭性和可再现性。
b) 程并发执行的特征:
若在计算机系统中采用多道程序设计技术,则主存中的多道程序可处于并发执行状态。
程序并发执行时的特征如下:
(1)失去了程序的封闭性。
(2)程序和机器的执行程序的活动不再一一对应。
(3)并发程序间的相制约性。
即程序并发执行破坏了程序的封闭性和可再现性,使得程序和执行程序的活动不再一一对应。为了解决这一问题,需要研究进程间的同步与互斥问题。
进程的组成:
进程是程序的一次执行,该程序可以和其他程序并发执行。
进程通常是由程序、数据和进程控制块(Process Control Block PCB)组成的。
a) PCB
PCB是进程存在的唯一标志。
b) 程序
程序部分描述了进程需要完成的功能。
假如一个程序能被多个进程同时共享执行,那么这一部分就应该以可再入(纯)码的形式编制,
它是程序执行时不可修改的部分。
c) 数据
数据部分包括程序执行时所需的数据及工作区。
该部分只能为一个进程所专用是进程的可修改部分。
进程的状态及其状态间的切换:
(⭐ ⭐ ⭐)
在多道程序系统中,理论上进程一般有3种基本状态:运行、就绪和阻塞;实际系统中情况更复杂一些,在三态模型上加入了新建态和终止态,构成了进程的五态模型。
创建进程时分为两个阶段:
第一个阶段为一个新进程创建必要的管理信息;
第二个阶段让该进程进入就绪状态。
由于有了新建态操作系统,往往可以根据系统的性能和主存容量的限制推迟新建态进程的提交。
类似地,进程的终止也可分为两个阶段:
第一个阶段等待操作系统进行善后处理;
第二个阶段释放主存。
具有挂起状态的进程状态及其转换:
由于进程的不断创建,系统资源特别是主存资源已不能满足进程运行的要求。这时,就必须将某些进程挂起,放到磁盘对换区,暂时不参加调度,以平衡系统负载。或者是系统出现故障,或者是用户调试程序,也可能需要将进程挂起检查问题。
(1)活跃就绪。活跃就绪是指进程在主存并且可被调度的状态。
(2)静止就绪。静止就绪是指就绪进程被对换到辅存时的状态,它是不能被直接调度的状态,只有当主存中没有活跃就绪态进程,或者是挂起态进程具有更高的优先级时,系统将把挂起就绪态进程调回主存并转换为活跃就绪。
(3)活跃阻塞。活跃阻塞是指进程在主存,一旦等待的事件产生便进入活跃就绪状态。
(4)静止阻塞。静止阻塞是指阻寒进程对换到辅存时的状态,一旦等待的事件产生便进入静止就绪状态。
📖 4.2.2 进程的控制
(⭐ ⭐ ⭐)
进程控制就是对系统中的所有进程从创建到消亡的全过程实施有效的控制。为此,操作系统设置了一套控制机构,该机构的主要功能包括创建一个新进程,撤销一个已经运行完的进程,改变进程的状态,实现进程间的通信。进程控制是由操作系统内核(Kermel)中的原语实现的。
原语(Primitive)是指由若干条机器指令组成的,用于完成特定功能的程序段。
原语的特点是在执行时不能被分割,即原子操作要么都做,要么都不做。
内核中所包含的原语主要有进程控制原语、进程通信原语、资源管理原语以及其他方面的原语。属于进程控制方面的原语有进程创建原语、进程撤销原语、进程挂起原语、进程激活原语、进程阻塞原语以及进程唤醒原语等。
不同的操作系统内核所包含的功能不同,但大多数操作系统的内核都包含支撑功能和资源管理的功能。
📖 4.2.3 进程间的通信
同步与互斥:
同步是合作进程间的直接制约问题,互斥是申请临界资源进程间的间接制约问题。
a) 同步是合作进程间的直接制约问题,进程间的同步是指在系统中一些需要相互合作、协同工作的进程,如数据库update操作涉及的进程;
b) 互斥是申请临界资源进程间的间接制约问题,进程的互斥是指系统中多个进程因争用临界资源而互斥执行,如打印机、共享变量和表格等。
临界区:
临界区是指进程中对临界资源实施操作的那段程序(或者说阻止多个进程同时进入访问共享资源的代码段)。
互斥区管理4条原则:有空即进、无空则等、有限等待、让权等待。
信号量机制:
荷兰学者 Diikstra于1965 年——信号量机制是一种有效的进程同步与互斥工具。目前信号量机制有了很大的发展,主要有整型信号量、记录型信号量和信号量集机制。
a) 整型信号量与PV操作
信号量是一个整型变量,根据控制对象的不同被赋予不同的值。信号量分为如下两类:
(1)公用信号量。实现进程间的互斥,初值为1或资源的数目。
(2)私用信号量。实现进程间的同步,初值为0或某个正整数。
信号量S≥0表示某资源的可用数,S<0其绝对值表示阻塞队列中等待该资源的进程数。
PV操作:
P操作表示申请一个资源:
S:=S-1,若S≥0(资源可用),则执行P操作的进程继续执行,若S<0(无资源可用)则置该进程为阻塞状态,并将其插入阻塞队列。
V操作表示释放一个资源:
S:=S+1,若S≥0,则执行V操作的进程继续执行,若S≤0则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续。
利用PV操作实现进程的互斥:
令信号量S 的初值为1,当进入临界区时执行P操作,退出临界区时执行V操作。
利用PV操作实现进程的同步:
进程的同步是由于进程间合作引起的相互制约的问题,要实现进程的同步可用一个信号量与消息联系起来,当信号量的值为0时表示等待的消息未产生,当信号量的值为非0时表示等待的消息已经存在。
假定用信号量 S 表示某条消息,进程可以通过调用 P 操作测试消息是否到达,调用V 操作通知消息已准备好。
最典型的同步问题是单缓冲区的生产者和消费者的同步问题。
高级通信原语:
PV操作属于低级通信方式:编程难度大、效率低。
高级通信方式主要分为:共享存储模式、消息传递模式和管道通信。
📖 4.2.4 管程
同步机制—管程,基本思路是采用资源集中管理的方法,将系统中的资源用某种数据结构抽象的表示出来。由于临界区是访问共享资源的代码段,建立一个管程管理进程提出的访问请求。
管程有一些共享数据、一组能为并发进程所执行的作用在共享数据上的操作的集合、初始代码以及存取权组成。
📖 4.2.5 进程调度
进程调度方式是指当有更高优先级的进程到来时如何分配CPU,分为可剥夺和不可剥夺两种。
可剥夺式是指当有更高优先级的进程到来时,强行将正在运行进程的 CPU 分配给高优先级的进程。
不可剥夺式是指当有更高优先级的进程到来时,必须等待正在运行进程自动释放占用的CPU,然后将CPU分配给高优先级的进程。
三级调度:
在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。
(1)高级调度。高级调度又称“长调度”“作业调度”或“接纳调度”,它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。在系统中一个作业只需经过一次高级调度。
(2)中级调度。中级调度又称“中程调度”或“对换调度”,它决定处于交换区中的哪个就绪进程可以调入内存,以便直接参与对 CPU 的竞争。在内存资源紧张时,为了将进程调入内存,必须将内存中处于阻塞状态的进程调出至交换区,以便为调入进程腾出空间。这相当于使处于内存的进程和处于盘交换区的进程交换了位置。
(3)低级调度。低级调度又称“短程调度”或“进程调度”,它决定处于内存中的哪个就绪进程可以占用 CPU。低级调度是操作系统中最活跃、最重要的调度程序,对系统的影响很大。
调度算法:
常用的进程调度算法有先来先服务、时间片轮转、优先级调度和多级反馈调度算法。
a) 先来先服务(FCFS)
FCFS 按照作业提交或进程成为就绪状态的先后次序分配CPU即进程调度总是将就绪队列队首的进程投入运行。
FCFS 的特点是比较有利于长作业,而不利于短作业;有利于 CPU 繁忙的作业,而不利于O 繁忙的作业。
FCFS 算法主要用于宏观调度。
b) 时间片轮转
时间片轮转算法主要用于微观调度,其设计目标是提高资源利用率。
通过时间片轮转提高进程并发性和响应时间特性,从而提高资源利用率。
时间片的长度可以从几毫秒到几百毫秒,选择的方法一般分为固定时间片和可变时间片两种。
c) 优先级调度。
该算法是让每一个进程都拥有一个优先数,数值大的表示优先级高,系统在调度时总选择优先数大的占用 CPU。
优先级调度分为静态优先级和动态优先级两种。
d) 多级反馈调度。
多级反馈队列调度算法是时间片轮转算法和优先级算法的综合与发展。
其优点有三个方面:
第一,照顾短进程以提高系统吞吐量,缩短了平均周转时间;
第二,照顾I/O型进程以获得较好的 O 设备利用率和缩短响应时间;
第三,不必估计进程的执行时间,动态调节优先级。
进程优先级确定:
优先级确定需要考虑如下情况:
a)对于IO 型进程,让其进入最高优先级队列,以及时响应需要 I/O 交互的进程。通常执行一个小的时间片,在该时间片内要求可处理完一次 I/O 请求的数据,然后转入到阻塞队列。
b)对于计算型进程,每次都执行完时间片后进入更低级队列。最终采用最大时间片来护行,以减少调度次数。
c)对于IO次数不多,主要是 CPU 处理的进程,在IO 完成后,返回优先O 请求时离开的队列,以免每次都回到最高优先级队列后再逐次下降。
d)为适应一个进程在不同时间段的运行特点,I/O 完成时,提高优先级;时间片用完时降低优先级。
📖 4.2.6 死锁
(⭐ ⭐ ⭐)
所谓死锁,是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。
死锁产生的原因及4个必要条件:
产生原因:竞争资源及进程推荐顺序非法;
产生死锁的4个必要条件:互斥条件、请求保持条件、不可剥夺条件和环路条件。
死锁的处理:
死锁的处理策略主要有 4 种:鸟策略(即不理联策略)、预防策略、避免策略和检测与解除死锁。
a) 死锁预防
死锁预防是采用某种策略限制并发进程对资源的请求,
(1)预先静态分配法。破坏了“不可剥夺条件”,预先分配所需资源,保证不等待资源。
该方法的问题是降低了对资源的利用率,降低进程的并发程度;有时可能无法预先知道所需资源。
(2)资源有序分配法。破坏了“环路条件”,把资源分类按顺序排列,保证不形成环路。
该方法存在的问题是限制进程对资源的请求;由于资源的排序占用系统开销。
b) 死锁避免
严格防止死锁的产生。死锁避免则不那么严格地限制产生死锁的必要条件。
最著名的死锁避免算法是 Dijkstra 提出的银行家算法。
死锁避免算法需要很大的系统开销。
c) 死锁检测
这种方法对资源的分配不加限制,即允许死锁产生。但系统定时地运行一个死锁检测程序,判断系统是否发生死锁,若检测到有死锁,则设法加以解除。
d) 死锁解除
死锁解除通常采用资源剥夺法和撤销进程法。资源剥夺法从一些进程那里强行剥夺足够数量的资源分配给死锁进程;撤销进程法根据某种策略逐个地撤销死锁进程,直到解除死锁为止。
两段锁协议:
两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。扩展阶段是在对任何数据进行读写操作之前,首先要申请并获得对该数据的封锁;收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。“两段”即指扩展阶段和收缩阶段。
两段锁协议不能避免死锁。
两段锁协议并不要求必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。
解决死锁问题:采用一次封锁法。要求每个事务必须一次将所有要使用的数据全部加锁,否则不能继续执行,从而从根本上避免死锁的发生。其遵守两段锁协议。
📖 4.2.7 线程
传统的进程有2个基本属性:可拥有资源的独立单位,可独立调度和分配的基本单位。
线程是进程中的一个实体,作为调度和分配的基本单位,进程作为独立分配资源的单位。
线程可创建另一个线程,同一个进程中的多个线程可并发执行。线程分为用户级线程(User-Level Threads)和==内核支持(Kemel-Supported Threads)两类。
用户级线程不依赖于内核,该类线程的创建、撤销和切换都不利用系统调用来实现:内核支持线程依赖于内核,即无论是在用户进程中的线程,还是在系统中的线程,它们的创建、撤销和切换都利用系统调用来实现。某些系统同时实现了两种类型的线程。
与线程不同的是,不论是系统进程还是用户进程,在进行切换时,都要依赖于内核中的进程调度。因此,不论是什么进程都是与内核有关的,是在内核支持下进行切换的。尽管线程和进程表面上看起来相似,但它们在本质上是不同的。
📁 4.3 存储管理
存储器管理的对象是主存存储器(内存)。
存储管理的主要功能包括主存空间的分配和回收、提高主存的利用率、扩充主存、对主存信息实现有效保护。
📖 4.3.1 基本概念
存储器的结构:
常用的存储器的结构有“寄存器一主存一外存”结构和“寄存器一缓存一主存一存储组织的功能外存”结构。
a) 虚拟地址
对于程序员来说,数据的存放地址是由符号决定的,故称符号名地址,或者称为名地址,而把源程序的地址空间称为符号名地址空间或者名空间。它是从0号单元开始编址,并顺序分配所有的符号名所对应的地址单元,所以它不是主存中的真实地址,故称为相对地址、程序地址、逻辑地址或虚拟地址。
b) 地址空间
把程序中由符号名组成的空间称为名空间。源程序经过汇编或编译后再经过链接编辑程序加工形成程序的装配模块,即转换为相对地址编址的模块,它是以0为基址顺序进行编址的。相对地址也称为逻辑地址或虚地址,把程序中由相对地址组成的空间称为逻辑地址空间。相对地址空间通过地址再定位机构转换到绝对地址空间,绝对地址空间也称为物理地址空间。
c) 存储空间
简单来说,逻辑地址空间(简称地址空间)是逻辑地址的集合,物理地址空间(简称存储空间)是物理地址的集合。
地址重定位:
地址重定位是指将逻辑地址变换成主存物理地址的过程,地址重定位分为静态地址重定位和动态地址重定位。
静态重定位:指在程序装入主存时已经完成了逻辑地址到物理地址的变换,在程序的执行期间将不会再发生变化。
动态重定位:指在程序运行期间完成逻辑地址到物理地址的变换。
📖 4.3.2 存储管理方案
主要目的:是解决多个用户使用主存的问题;
主要方案:分区存储管理、分页存储管理、分段存储管理、段页式存储管理以及虚拟存储管理;
分区存储管理:
其基本思想是把主存的用户区划分成若干个区域,每个区域分配给一个用户作业使用,并限定它们只能在自己的区域中运行,这种主存分配方案就是分区存储管理方式。
按划分方式不同,分区可分为固定分区、可变分区和可重定位分区。
分区保护:
的目的是防止未经核准的用户访问分区,常用的两种方式如下:
a) 采用上界/下界寄存器保护。
上界寄存器中存放的是作业的装入地址,下界寄存器中装入的是作业的结束地址,形成的物理地址必须满足如下条件:
上界寄存器≤物理地址≤下界寄存器
b) 采用基址/限长寄存器保护。基址寄存器中存放的是作业的装入地址,限长寄存器中装入的是作业的长度,形成的物理地址必须满足如下条件:
基址寄存器≤物理地址< 基址寄存器+限长寄存器
📖 4.3.3 分页存储管理
进程执行时,系统通过查找页表就可以找到每页所对应的物理块号,如下逻辑页号为4,查找页表可得该页的物理块号为15,与页内地址256拼接得到物理地址,页表的作用是从页号到物理块号的地址映射。
📖 4.3.4 分段存储管理
系统中每个进程建立段表,每个段在表中占有一个表项,在其中记录了该段在主存中的基址(起始地址)和段的长度。进程在执行时,通过查段表来找到每个段所对应的主存区,为了实现从逻辑地址到物理地址的变换功能,系统中设置了段表寄存器,用于存放段表始址和段表长度。
在进行地址变换时:
(1)判断段号是否越界:段号S≥段表长度L,表示段号太大,访问越界,产生越界中断信号;若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在主存中的起始地址,然后在检查段内地址d是否超过该段的段长SL。
(2)判断段内地址是否越界:若d≥SL(该段的段长),发出越界中断信号;若未越界,则要访问的主存物理地址=基址S′+段内地址d。
📖 4.3.5 段页式存储管理
在段页式系统中逻辑地址到物理地址的变换过程:
(1)根据段号S查段表,得到页表的起始地址;
(2)根据页号P查页表,得到物理块号b;
(3)将物理块号b拼页地址W得到物理地址。
📖 4.3.6 虚拟存储管理
虚拟存储器是具有请求调入功能和置换功能,能仅把作业的一部分装入主存便可运行作业的存储器系统,是能从逻辑上对主存容量进行扩充的一种虚拟的存储器系统。
虚拟存储器的实现主要有如下3种方式:
(1)请求分页系统。
该系统是在分页系统的基础上增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。
它允许只装入若干页的用户程序和数据(而非全部程序)就可以启动运行,以后再通过调页功能和页面置换功能陆续把将要使用的页面调入主存,同时把暂不运行的页面置换到外存上,置换时以页面为单位。
(2) 请求分段系统
该系统是在分段系统的基础上增加了请求调段和分段置换功能所形成的段式虚拟存储系统。
它允许只装入若干段的用户程序和数据就可以启动运行,以后再通过调段功能和置换功能将不运行的段调出,同时调入将要运行的段。注意:置换时以段为单位。
(3)请求段页式系统
该系统是在段页式系统的基础上增加了请求调页和页面置换功能所形成的段页式虚拟存储系统。
📁 4.4 设备管理
📖 4.4.1 概述
设备管理包括各种设备分配、缓冲区管理和实际物理I/O设备操作,通过管理达到提高设备利用率和方便用户的目的。
I/O系统由设备、控制器、通道(具有通道的计算机系统)、总线和I/O软件组成。
📖 4.4.2 I/O软件
设置I/O软件的主要目标是设备独立性和统一命名,独立于设备,就可以提高设备管理软件的设计效率。I/O设备管理软件一般分为4层:中断处理程序、设备驱动程序(直接与硬件打交道)、与设备无关的系统软件和用户级软件。
📖 4.4.3 设备管理采用的相关技术
(⭐ ⭐ ⭐)
a) 通道技术
引入通道的目的是使数据的传输独立于 CPU,使 CPU 从烦琐的 IO 工作中解脱出来。CPU 只需向通道发出 I/O 命令,通道收到命令后,从主存中取出本次 I/O 要执行的通道程序并执行,仅当通道完成了IO任务后才向CPU 发出中断信号。
根据信息交换方式的不同,将通道分为字节多路通道、数组选择通道和数组多路通道三类,由于通道价格昂贵,导致计算机系统中的通道数是有限的,这往往会成为输入/输出的“瓶颈”问题。解决“瓶颈”问题的最有效方法是增加设备到主机之间的通路,使得主存和设备之间有两条以上的通路。
b) DMA技术
直接主存存取(Direct Memory Access,DMA)是指数据在主存与I/O设备间直接成块传送,即在主存与I/0 设备间传送一个数据块的过程中不需要 CPU 的任何干涉,只需要 CPU在过程开始启动(即向设备发出“传送一块数据”的命令)与过程结束(CPU 通过轮询或中断得知过程是否结束和下次操作是否准备就绪)时的处理,实际操作由 DMA 硬件直接执行完成。CPU 在此传送过程中可做别的事情。
c) 缓冲技术
缓冲技术可提高外设利用率,尽可能使外设处于忙状态。缓冲技术可以采用硬件缓冲和软件缓冲。硬件缓冲是利用专门的硬件寄存器作为缓冲,软件缓冲是通过操作系统来管理的。
引入缓冲的主要原因有以下几个方面:
(1)缓和 CPU与IO 备间速度不配的矛盾;
(2)减少对 CPU的中断频率,放宽对中断响应时间的限制;
(3)提高 CPU和IO 设备之间的并行性。
d) Spooling (外围设备联机操作)技术
实际上是用一类物理设备模拟另一类物理设备的技术,是使独占使用的设备变成多台虚拟设备的一种技术,也是一种速度匹配技术。
Spooling 系统是由“预输入程序”“缓输出程序”和“井管理程序”以及输入和输出井组成的。
输入井中的作业有如下 4 种状态
(1)提交状态。作业的信息正从输入设备上预输入。
(2)后备状态。作业预输入结束但未被选中执行。
(3)执行状态。作业已被选中运行,在运行过程中,它可从输入井中读取数据信息,也可向输出井写信息。
(4)完成状态。作业已经撤离,该作业的执行结果等待缓输出。
Tips:
Spooling技术是用一类物理设备模拟另一类物理设备的技术,实现这种技术的功能模块称做斯普林系统。
Spooling系统的特点:
a) 提高了I/O速度;
b) 将独占设备改造成共享设备;
c) 实现了虚拟设备的功能。
设备管理的主要功能是动态地掌握并记录设备的状态、设备分配和释放、缓冲区管理、实现物理I/O设备的操作、提供设备使用的用户接口及设备的访问和控制。
📖 4.4.4 磁盘调度
磁盘是可被多个进程共享的设备。当有多个进程请求访问磁盘时,为了保证系统在每一时刻只允许一个进程启动磁盘进行 I/O 操作,其余的进程只能等待。因此,操作系统应采用一种适当的调度算法,使各进程对磁盘的平均访问(主要是寻道)时间最小。
磁盘调度分为移臂调度和旋转调度两类,并且是先进行移臂调度,然后进行旋转调度。由于访问磁盘最耗时的是寻道时间,因此,磁盘调度的目标是使磁盘的平均寻道时间最少。
磁盘驱动调度:
常用的磁盘调度算法:
(1)先来先服务(First-Come First-Served,FCFS)。这是最简单的磁盘调度算法,它根据进程请求访问磁盘的先后次序进行调度。
优点:公平、简单,且每个进程的请求都能依次得到处理,不会出现某进程的请求长期得不到满足的情况。
缺点:未对寻道进行优化,致使平均寻道时间可能较长。
(2)最短寻道时间优先(Shortest Seek Time First,SSTF)。该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,使得每次的寻道时间最短。缺点:不能保证平均寻道时间最短。
(3)扫描算法(SCAN)。扫描算法不仅考虑到要访问的碰道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。这种方式避免了饥饿现象的出现。在这种算法中,磁头移动的规律颇似电梯的运行,故又常称为电梯调度算法。
(4)单向扫描调度算法(CSCAN)。SCAN 存在这样的问题:当头刚从里向外移动过某一磁道时,恰有一进程请求访问此磁道,这时该进程必须等待,待磁头从里向外,再从外向里扫描完所有要访问的磁道后才处理该进程的请求,致使该进程的请求被严重地推迟。为了减少这种延迟,算法规定碰头只做单向移动。
Tips:
先来先服务(FCFS):按访问请求到达的先后次序服务; (就绪-运行-等待-等待)
最短寻道时间优先(SSTF):优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先;
扫描算法(SCAN):不仅考虑到要访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向;
单向扫描调度算法(CSCAN):磁头只做单向移动。
旋转调度算法:
当移动臂定位后,有多个进程等待访问该柱面时,应当如何决定这些进程的访问顺序?这就是旋转调度要考虑的问题。显然,系统应该选择延迟时间最短的进程对磁盘的扇区进行访问。当有若干等待进程请求访问磁盘上的信息时,旋转调度应考虑如下情况:
(1)进程请求访问的是同一磁道上不同编号的扇区。
(2)进程请求访问的是不同磁道上不同编号的扇区
(3)进程请求访问的是不同磁道上具有相同编号的扇区。
📁 4.5 文件管理
📖 4.5.1 基本概念
文件:
文件(File) 是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。例如,一个源程序、一个目标程序、编译程序、一批待加工的数据和各种文档等都可以各自组成一个文件。
信息项是构成文件内容的基本单位,可以是一个字符,也可以是一个记录,记录可以等长,也可以不等长。
一个文件包括文件体和文件说明。文件体是文件真实的内容。文件说明是操作系统为了管理文件所用到的信息,包括文件名、文件内部标识、文件的类型、文件存储地址、文件的长度、访问权限、建立时间和访问时间等。
文件是一种抽象机制,文件管理中的一个非常关键的问题在于文件的命名。文件名是在进程创建文件时确定的,以后这个文件将独立于进程存在直到它被显式删除。当其他进程要使用文件时必须显式指出该文件名,操作系统根据文件名对其进行控制和管理。不同的操作系统,文件的命名规则有所不同,即文件名字的格式和长度因系统而异。
文件管理系统:
文件管理系统,就是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构,简称文件系统。
文件系统的功能包括按名存取,即用户可以“按名存取”,而不是“按地址存取”。
统一的用户接口——在不同设备上提供同样的接口,方便用户操作和编程;
并发访问和控制——在多道程序系统中支持对文件的并发访问和控制;
安全性控制——多用户系统中的不同用户对同一文件可有不同的访问权限;
优化性能——采用相关技术提高系统对文件的存储效率、检索和读/写性能;
差错恢复——能够验证文件的正确性,并具有一定的差错恢复能力。
文件类型:
(1)按文件性质和用途可将文件分为系统文件、库文件和用户文件
(2)按信息保存期限分类可将文件分为临时文件、档案文件和永久文件。
(3)按文件的保护方式分类可将文件分为只读文件、读/写文件、可执行文件和不保护文件。
(4)UNIX 系统将文件分为通文件、目录文件和设备文件(特殊文件)。
目前常用的文件系统类型有 FAT、Vfat、NTFS、Ext2 和HPFS 等。
📖 4.5.2 文件的结构和组织
a) 文件的逻辑结构
文件的逻辑结构可分为两大类:
一是有结构的记录式文件,它是由一个以上的记录构成的文件,故又称为记录式文件;
二是无结构的流式文件,它是由一串顺序字符流构成的文件。
b) 文件的物理结构
文件的物理结构是指文件的内部组织形式,即文件在物理存储设备上的存放方法。由于文件的物理结构决定了文件在存储设备上的存放位置,所以文件的逻辑块号到物理块号的转换也是由文件的物理结构决定的。
Unix文件索引表项分4种寻址方式:直接寻址、一级间接寻址、二级间接寻址、三级间接寻址。
📖 4.5.3 文件目录
文件至少包括文件名和存放文件的物理地址,这个数据结构称为文件控制块,文件控制块的有序集合称为文件目录。
文件控制块包含三类信息:基本信息类、存取控制信息类、使用信息类。
文件目录结构的组织方式直接影响文件的存取速度,关系文件的共享性和安全性,因此组织好文件的目录是设计文件系统的重要环节。
单机目录结构:在整个系统中只需建立以张目录表,每个文件占一个目录项;
二级目录结构:有主文件目录和用户目录组成;
多级目录结构:两级目录结构的层次关系推广,也称为树形目录结构。
绝对路径名:从根目录“/”开始的完整文件名;
相对路径名:从当前工作目录下的路径名。
📖 4.5.4 存取方法和存储空间的管理
文件存取方法:
文件的存取方法是指读/写文件存储器上的一个物理块的方法。通常有顺序存取和随机存取两种方法。
顺序存取方法是指对文件中的信息按顺序依次进行读/写;
随机存取方法是指对文件中的信息可以按任意的次序随机地读/写。
空闲区:外存空间上的一个连续的未分配区域。
存储空间的管理 :
常用的空闲空间的管理方法有空闲区表、位示图和空闲块链3种。
📖 4.5.5 文件的使用
文件系统将用户的逻辑文件按一定的组织方式转换成物理文件存放到文件存储器上,也就是说,文件系统为每个文件与该文件在磁盘上的存放位置建立了对应关系。当用户使用文件时文件系统通过用户给出的文件名查出对应文件的存放位置,读出文件的内容。
📖 4.5.6 文件的共享和保护
文件共享是指不同用户进程使用同一文件,它不仅是不同用户完成同一任务所必需的功能,还可以节省大量的主存空间,减少由于文件复制而增加的访问外存的次数。文件共享有多种形式,采用文件名和文件说明分离的目录结构有利于实现文件共享。
文件系统对文件的保护常采用存取控制方式进行。所谓存取控制,就是不同的用户对文件的访问规定不同的权限,以防止文件被未经文件主同意的用户访问。
📖 4.5.7 系统的安全与可靠性
一般从4 个级别上对文件进行安全性管理:系统级、用户级、目录级和文件级。
文件系统的可靠性是指系统抵抗和预防各种物理性破坏和人为性破坏的能力。
保护信息的主要方法有转储和恢复、日志文件和文件系统的一致性检查。文件系统的一致性检查包括块的一致性检查和文件的一致性检查。
📁 4.6 作业管理
作业是系统为完成一个用户的计算任务(或一次事务处理)所做的工作总和。
作业由程序、数据和作业说明书 3 个部分组成。
作业说明书包括作业基本情况、作业控制作业资源要求的描述,它体现用户的控制意图;
作业基本情况包括用户名、作业名、编程语言和最大处理时间等:作业控制描述包括作业控制方式、作业步的操作顺序、作业执行出错处理;
作业资源要求描述包括处理时间、优先级、主存空间、外设类型和数量等。
📖 4.6.1 基本概念
作业与作业控制方式:
通常,可以采用脱机和联机两种控制方式控制用户作业的运行。其中脱机运行的过程是无须人工干预的,而联机运行过程需要人工干预。
作业态及转换:
作业状态分为4种:提交、后备、执行和完成。
(1)提交。作业提交给计算机中心,通过输入设备送入计算机系统的过程状态称为提交状态。
(2)后备。通过 Spooling 系统将作业输入计算机系统的后备存储器(磁盘)中,随时等待作业调度程序调度时的状态。
(3)执行。一旦作业被作业调度程序选中,为其分配了必要的资源,并为其建立相应的进程后,该作业便进入了执行状态。
(4)完成。当作业正常结束或异常终止时,作业进入完成状态。此时,由作业调度程序对该作业进行善后处理。如撤销作业的作业控制块,收回作业所占的系统资源,将作业的执行结果形成输出文件放到输出井中,由 Spooling 系统控制输出。
作业控制块和作业后备队列:
所谓作业控制块(JCB),是记录与该作业有关的各种信息的登记表。JCB 是作业存在的唯一标志,包括用户名、作业名和状态标志等信息。
📖 4.6.2 作业调度
选择调度算法需要考虑如下因素:与系统的整个设计目标一致,均衡地使用系统资源,以及平衡系统和用户的要求。
常用的作业调度算法:
先来先服务:启动等待时间最长的作业优先;
短作业优先:启动要求运行时间最短的作业;
响应比高优先:响应比高的作业优先启动。
优先级调度算法:可由用户指定作业优先级,优先级高的作业先启动;
均衡调度算法:根据系统的运行情况和作业本身的特性对作业进行分类。
作业调度算法性能的衡量指标:
在一个以批量处理为主的系统中,通常用平均周转时间或平均带权周转时间来衡量调度性能的优劣。
📖 4.6.3 用户界面
用户界面 (user interface) 是计算机中实现用户与计算机通信的软、硬件部分的总称。
用户界面也称用户接口或人机界面。
a) 用户界面的硬件部分包括用户向计算机输入数据或命令的输入装置,以及由计算机输出供用户观察或处理的输出装置。
b) 用户界面的软件部分包括用户与计算机相互通信的协议、约定、操纵命令及其处理软件。目前,常用的输入/输出装置有键盘、鼠标、显示器和打印机等。常用的人机通信方法有命令语言、选项、表格填充及直接操纵等。