第一章:操作系统概论
操作系统的定义:
计算机操作系统是指控制和管理计算机的软、硬件资源,合理组织计算机的工作流程,方便用户使用的程序集合。
通道和中断技术:
通道:用于控制I/O设备与内存间的数据传输。启动后可独立于CPU运行,实现CPU与I/O的并行。
中断:指CPU在收到外部中断信号后,停止原来工作,转去处理该中断事件,完毕后回到原来断点继续工作。
多道程序设计:
优点:
资源利用率高(CPU、内存、I/O);
作业吞吐量大
缺点:
用户交互性差;
作业平均周转时间长
分时系统:
同时性:也称为多路性。若干用户同时与一台计算机相连,宏观上看各个用户在同时使用计算机,他们是并行的;微观上看各个用户在轮流使用计算机。
交互性:用户通过终端设备(如键盘、鼠标)向系统发出请求,并根据系统的响应结果再向系统发出请求,直至得到满意的结果。
独立性:每个用户使用各自的终端与系统交互,彼此独立、互不干扰。
及时性:指用户向系统发出请求后,应该在较短的时间内得到响应。
操作系统的功能:
- 处理机管理:进程控制,进程同步,进程通信,进程调度。
- 存储管理:内存分配,内存保护,地址映射,内存扩充。
- 设备管理:缓存管理,设备分配,设备处理
- 文件管理:文件存储空间的管理,目录管理,文件的读/写管理和保护
- 用户接口:1)命令接口:联机用户接口:为联机用户提供的,由一组键盘操作命令及命令解释程序所组成。脱机用户接口:为批处理作业的用户提供的,也称为批处理用户接口。由一组作业控制语言JCL组成。2)程序接口:为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的惟一途径,由一组系统调用组成。3)图形接口:采用图形化的操作界面将系统的各项功能、各种应用程序和文件直观、逼真地表示出来
操作系统的特征:
- 并发:
在操作系统中同时存在许多活动。多个事件会在同一时间段内发生。
在多道程序处理时,宏观上并发,微观上交替执行(在单处理器情况下)。
2.共享:
系统中的资源可供内存中多个并发执行的进程共同使用。
并发和共享是操作系统的两个最基本的特征,它们互为存在的条件。
3.虚拟:
通过某种技术把一个物理实体变为若干个逻辑上的对应物。
1)虚拟处理机技术,多道程序并发执行分时使用一台处理机。
2)虚拟存储器技术,将一台机器的物理存储器变为虚拟存储器,以便从逻辑上来扩充存储器的容量。
3)虚拟设备技术,将一台物理I/O设备虚拟为多台逻辑上的I/O设备,并允许每个用户占用一台逻辑上的I/O设备。
4)把一条物理信道通过分时使用的方法虚拟为多条逻辑信道。
4.异步:
也称不确定性,指进程的执行顺序和执行时间的不确定性。
操作系统的分类
批处理操作系统:
工作方式:
1.用户将作业交给系统操作员
2.系统操作员将许多用户的作业组成一批作业,输入到计算机系统中,在系统中形成一个自动转接的连续作业流
3.启动操作系统
4.系统自动、依次执行每个作业
5.由操作员将作业结果交给用户
分时操作系统:
分时:把计算机的系统资源(尤其是CPU时间)进行时间上的分割,每个时间段称为一个时间片(time slice),每个用户依次轮流使用时间片。
工作方式:
一台主机连接了若干个终端,每个终端有一个用户使用,交互式的向系统提出命令请求。系统接受每个用户的命令,用时间片轮转方式处理服务请求,通过交互方式在终端上显示结果。用户根据上步结果发出下道命令
特征:
多路性:多个用户同时工作。也称为同时性。
独立性:各用户独立操作,互不干扰,感觉不到计算机为其它用户服务。
及时性:系统能及时对用户的操作进行响应。
交互性:分时系统的基本属性。
实时操作系统:
能够在指定或者确定的时间内完成系统功能和对外部或内部、同步或异步事件做出响应的系统。
网络操作系统:
是在通常操作系统功能的基础上提供网络通信和网络服务功能的操作系统。
功能:
网络通信功能:通过网络协议进行高效、可靠的数据传输;
网络资源管理:协调各用户使用;
网络服务:文件和设备共享,信息发布;
网络管理:安全管理、故障管理、性能管理等;
互操作:直接控制对方比交换数据更为困难;
分布式操作系统:
以计算机网络为基础,处理和控制的分散(相对于集中式系统),基本特征是处理上的分布,即功能和任务的分布。
多处理机操作系统:
类型:
紧密耦合(tightly-coupled):各处理机之间通过快速总线或开关阵列相连,共享内存,整体系统由一个统一的OS管理(一个OS核心)。
松散耦合(loosely-coupled):各处理机带有各自的存储器、I/O设备和操作系统,通过通道或通信线路相连。每个处理机上独立运行OS。
嵌入式操作系统:
以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
操作系统的内核
强内核:
基于传统的集中式操作系统的内核结构,系统调用式通过程序陷入内核实现,内核完成相应的服务后返回应用程序,同时返回结果给用户。
微内核 :
基本思想:良好的结构化、模块化,最小的公共服务;
设计目标:使内核尽可能小,功能尽可能少(基本),把其他所有功能放到核外的用户级来完成。
提供以下基本服务:
1.(有限的)进程管理和调度;
2.进程间的通信机制;
3.(某些)存储管理;
4.低级I/O操作;
传统的操作系统结构:
1.整体或模块结构( monolithic system or modular system )
特点:模块由众多服务过程(模块接口)组成,可以随意调用其他模块中的服务过程
2. 分层结构或虚拟机( layered system or virtual machine )
划分层次,在某一层次上代码只能调用低层次上的代码,使模块间的调用变为有序性。系统每加一层,就构成一个比原来功能更强的虚拟机
现代的操作系统结构:
1. 客户/服务器模式
OS划分为两部分:
1)用于提供各种服务的一组服务器(进程)
2)内核,用来处理客户和服务器之间的通信
2.对象模式
面向对象技术的基本概念
优点:
可修改性和可扩充性。
继承性
正确性和可靠性
SPOOLing技术
同时外围设备联机操作--假脱机技术。
利用磁盘作缓冲,将输入、计算、输出分别组织成独立的任务流,使I/O和计算真正并行
SPOOLing系统组成:
输入井和输出井;
输入缓冲区和输出缓冲区;
输入进程SPi和输出进程SPo
第二章:作业管理和用户接口
作业的基本概念
作业:用户在一次计算过程中或一次事务处理过程中,要求计算机系统所做工作的总称。
作业步:一个作业可划分成若干部分,处理作业的各个独立的子任务称为一个作业步。
作业流:把若干作业依次放在输入设备上,在操作系统控制下依次运行
作业的组成
程序、数据、作业说明书
批处理系统作业处理
把对作业进行控制的意图连同程序和数据及发生故障后的处理措施一起输入系统中,由系统根据该意图来控制作业的执行。
交互式系统作业管理
由一组操作系统命令实现,采用人机对话的方式来控制作业的运行。
接口方式:
命令驱动方式
窗口系统与菜单驱动方式
命令文件方式
Shell的定义和功能
Shell是Unix操作系统内核和用户间的接口,Kernel内核在系统启动时载入内存,Shell存放于磁盘上,由内核负责载入内存。当用户注册时(log on),shell启动,用户通过shell与内核交互,shell负责解释用户输入的命令。
流程:
用户log on, shell 启动,提示用户输入,
用户开始键入命令
此时,shell 负责
(a) 分析命令行
(b) 处理通配符,重定向,管道,和任务控制等
(c) 查找命令, 如果找到执行命令
程序状态类型
算态、用户态:用户工作的状态
管态、系统态:系统程序工作的状态
特权指令:只允许管态下使用的指令
用户程序在算态下运行——只能使用算态指令
操作系统是系统程序在管态下运行——可以使用算态指令,也可以使用特权指令
访管指令:引起访管中断,实现从算态到管态的转变,在管态下由操作系统代替用户完成操作,再由管态返回算态。
系统调用及其功能:
至少包括一条访管指令在内的、由操作系统代替用户完成的某些特定功能的程序段。
功能:完成与硬件相关的工作以及控制程序的执行(设备管理、文件管理、进程管理、进程通信、存储管理、系统管理)
系统调用的处理过程
陷入或异常处理机构:系统中为控制系统调用服务的机构。
陷入或异常指令(访管指令):由于系统调用引起处理及中断的指令。
第三章:进程管理
进程:
是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。进程=程序+数据+PCB
特性:动态性、并发性、独立性、异步性、交互性
进程控制块PCB:
系统为了管理进程设置的一个专门的数据结构,用来记录进程的外部特征,描述进程的变化过程。是系统感知进程存在的唯一标志。
PCB的内容:
1.进程描述信息:进程标识符、进程名、用户标识符
2.进程控制信息:当前状态、优先级、代码执行入口地址、运行统计信息、进程间同步和通信、阻塞原因。
3.所拥有的资源和使用情况:虚拟地址空间的现状、打开文件列表
4.CPU现场保护结构:寄存器值
PCB表组织方式:
链表:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表
索引表:同意状态的进程归入一个index表,多个状态对应多个index表
进程的状态:
1.运行状态(Running) ,进程占有CPU,并在CPU上运行;
2.就绪状态(Ready),一个进程已经具备运行条件,但由于无CPU ,暂时不能运行的状态(当调度给其CPU时,立即可以运行);
3.等待状态(阻塞状态,Blocked),阻塞态、封锁态、睡眠态,指进程因等待某种事件的发生而暂时不能运行的状态(即使CPU空闲,该进程也不可运行)
等待-->就绪-->运行-->就绪/等待
------------------------------------------------------------------
4.创建状态(New):进程刚创建,但还不能运行
5.结束状态(Exit):进程已结束运行,回收除PCB之外的其他资源,并让其他进程从PCB中收集有关信息。
------------------------------------------------------------------
6.阻塞挂起(Blocked,suspend):进程在外存,并等待某事件的出现
7.就绪挂起(Ready,suspend):进程在外存,但只要进入内存,即可运行
进程创建的基本过程:
1.首先从空闲的PCB集合中申请一个新的PCB,同时获得该进程的内部标识
2.然后向该PCB中填写各种参数
3.把该进程的状态设置为就绪状态,并将该PCB插入到就绪队列中
进程终止的基本过程:
1.找到相应进程的PCB;
2.若进程正处于执行状态,则立即停止,设置重新调度标志;
3.撤消属于该进程的所有“子孙”进程;
4.释放被撤消进程的所有资源;
5.释放进程的PCB;
6.若调度标志为真,则进行重新调度
进程等待的基本过程:
1.找到相应进程的PCB;
2.如果该进程为执行状态,则保护其现场,将其状态改变为等待状态,停止运行,并把该PCB插入到相应的等待队列中去;
3.若为就绪状态,则将其状态修改为等待状态,把它移出就绪队列,并插入到等待队列中去
进程唤醒:
1.在等待队列中找到相应进程的PCB,将其从等待队列中移出。
2.置其状态为就绪状态,然后把该PCB插入就绪队列中。
3.等待调度程序调度。
FCFS First Come First Service先来先服务:
按照作业提交或进程变为就绪状态的先后次序分派CPU;
SJF Shortest Job First最短作业优先(SPN Shortest Process Next最短进程优先)
对预计执行时间短的作业(进程)优先分派处理机。通常后来的短作业不抢先正在执行的作业。
优点:
比FCFS改善平均周转时间和平均带权周转时间
提高系统的吞吐量;
缺点:
对长作业非常不利,可能长时间得不到执行;
未能依据作业的紧迫程度来划分执行的优先级;
难以准确估计作业(进程)的执行时间,影响调度性能。
SRT最短剩余时间优先:
允许比当前进程剩余时间更短的进程来抢占
HRRN最高相应比优先:
响应比R = (等待时间 + 要求执行时间) / 要求执行时间
RR时间片轮转算法:
1.将系统中所有的就绪进程按照FCFS原则,排成一个队列。
2.每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。
3.在一个时间片结束时,发生时钟中断。调度程序暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程。
4.进程可以未使用完一个时间片,就出让CPU(如阻塞)。
基于优先级的调度算法:
系统为每个进程设置一个优先数(对应一个优先级),把所有的就绪进程按优先级从大到小排序,调度时从就绪队列中选择优先级最高的进程投入运行,仅当占用CPU的进程运行结束或因某种原因不能继续运行时,系统才进行重新调度 。
多级队列算法:
根据作业或进程的性质或类型的不同,将就绪队列再分为若干个子队列。每个作业固定归入一个队列。各队列不同处理:不同队列可有不同的优先级、时间片长度、调度策略等。如:系统进程、用户交互进程、批处理进程等。
多级反馈队列算法:
1.设置多个就绪队列,分别赋予不同的优先级,如逐级降低,队列1的优先级最高。每个队列执行时间片的长度也不同,规定优先级越低则时间片越长,如逐级加倍
2.新进程进入内存后,先投入队列1的末尾,按FCFS算法调度;若按队列1一个时间片未能执行完,则降低投入到队列2的末尾,同样按FCFS算法调度;如此下去,降低到最后的队列,则按"时间片轮转"算法调度直到完成。
3.仅当较高优先级的队列为空,才调度较低优先级的队列中的进程执行。如果进程执行时有新进程进入较高优先级的队列,则抢先执行新进程,并把被抢先的进程投入原队列的末尾。
线程:
资源分配单位和CPU调度单位。
线程是进程内一个相对独立的、可调度的执行单元。是进程中的一个运行实体,是一个CPU调度单位
多线程机制:
1.一个进程可以有多个线程,这些线程共享进程资源,驻留在相同的地址空间,共享数据和文件。
2.一个线程修改了数据项,其他线程可以读取和使用此结果数据。一个线程打开并读一个文件时同一进程中的其他线程也可以同时读此文件。
3.这些线程运行在同一进程的相同的地址空间内。
线程的创建和终止:
创建:
应用程序在启动时,通常仅有一个线程在执行——初始化线程
初始化线程可根据需要再去创建若干个线程
线程创建函数执行完后,将返回一个线程标识符供以后使用
终止
线程完成了自己的工作后自愿退出
线程在运行中出现错误或由于某种原因而被其它线程强行终止
作业:用户向计算机提交任务的任务实体
程序:一组有序的指令集合
进程:系统分配资源的基本单位
线程:处理机调度的基本单位
进程同步:
互协调的几个进程在某些确定点上协调它们的工作,一个进程到达了这些点后,除非另一进程已完成了某些操作,否则就需要停下来等待这些操作的完成。
进程互斥:
两个或两个以上的进程由于不能同时使用同一资源,只能一个进程使用完了另一个进程才能使用的现象。
临界区的访问过程:
临界资源:一次仅允许一个进程访问的资源
1.进入区:在进入临界区之前,检查可否进入临界区的一段代码。如果可以,设置“正在访问临界区”标志。
2.临界区:进程中访问临界资源的一段代码
3.退出区:用于将“正在访问临界区”标志清除
进程互斥实现方法:
1.软件方法:Peterson算法(为每一进程设置标志位flag[i],后判断 ?turn : i )
2.硬件方法:
①中断禁用:关中断原语-->临界区-->开中断原语-->其余部分
②机器指令:Test-and-Set(lock = true表示资源被占用);Swap
③锁:即操作系统中的一标志位,0表示资源可用,1表示资源已被占用。
进程同步与互斥的关系:
相似处:进程的互斥是进程同步的一种特殊情况
差别:进程互斥是进程间共享资源的使用权;而进程同步则涉及共享资源的并发进程间有一种必然的联系。
信号量:
S>0表示有S个资源可用
S=0表示无资源可用
S<0则| S |表示S等待队列中的进程个数
P(S):表示申请一个资源 V(S):表示释放一个资源
初始化: 通常将信号量的值初始化为非负整数
P操作:
P(s)
{
s.value = s.value -1 ; //表示申请一个资源;
if (s.value < 0) //表示没有空闲资源;
{
该进程状态置为等待状态
将该进程的PCB插入相应的等待队列末尾s.queue;
}
}
V操作:
V(s)
{
s.value = s.value +1; //表示释放一个资源;
if (s.value < = 0) //表示有进程处于阻塞状态;
{
唤醒相应等待队列s.queue中等待的一个进程
改变其状态为就绪态,并将其插入就绪队列
}
}
进程通信:
进程之间可以直接以较高的效率传递较多数据的信息交换方式
通信链路:点对点/多点/广播;单向/双向;有容量/无容量
数据格式:字节流;报文
收发操作的同步方式:发送阻塞;接收阻塞;事件驱动收发
进程通信方式
1.共享存储器系统:在存储器中划出一块共享存储区,进程在通信前,向系统申请共享存储区中的一个分区,并指定该分区的关键字,若系统已经给其它进程分配了这样的分区,则将该分区的描述符返回给申请者。接着,申请者把获得的共享存储分区连接到本进程上,此后可读写该分区。
2.消息传递系统:进程间的数据交换以消息为单位,程序员利用系统的通信原语实现通信。直接通信(消息缓冲通信);间接通信(信箱通信)。
3.管道通信:指用于连接一个读进程和一个写进程的文件,写进程以字符流的形式,将大量数据送入管道。无名管道:限亲缘;有名管道:FIFO
消息缓冲通信的实现:
1.系统管理空白缓冲池
2.发送者向系统申请空白缓冲区
3.发送者将填有消息的缓冲区挂到接收者的消息队列
4.接收者在适当的时候从消息队列中读取数据
5.系统提供消息通信原语:send_message(); receive_message();
消息:
一段文本。
消息头:源表识、目的标识、长度域、类型域、控制域
消息体:
死锁:
一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到资源,这种现象称为进程死锁,这一组进程就称为死锁进程。
必要条件:
- 互斥
- 占有等待
- 不可剥夺
- 环路等待
死锁处理方法:
1.预防死锁:通过限制如何申请资源的方法来确保至少有一个条件不成立。
2.避免死锁:根据有关进程申请资源和使用资源的额外信息,确定对于一个申请,进程是否应该等待。
3.检测死锁和恢复:通过算法来检测并恢复
4.忽视此问题:认为死锁不可能在系统内发生。如Unix采用这种方法。
死锁的解除:
1.重新启动
2.撤销进程:终止所有的死锁进程 or 一次只终止一个进程直到取消死锁循环为止
3.剥夺资源:逐步从进程中强占资源给其它进程使用,直到死锁环被打破为止
4.进程回退:把每个死锁进程备份到前面定义的某些检查点, 并且重新启动所有进程
第四章:存储管理
内存:
由存储单元(字节或字)组成的一维连续的地址空间,简称内存空间。用来存放当前正在运行程序的代码及数据,是程序中指令本身地址所指的、亦即程序计数器所指的存储器。
分为:
系统区:用于存放操作系统
用户区:用于装入并存放用户程序和数据
存储系统的组织
高速缓存CACHE、主存RAM、硬盘
存储管理的四大功能:
1.存储空间的管理、分配和回收
2.地址再定位(地址变换、地址映射)
3.存储共享和保护
4.存储器扩充
静态地址再定位
在可执行文件中,列出各个需要重定位的地址单元和相对地址值。当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换
动态地址再定位
在执行寻址时重定位——在程序运行过程中要访问数据时再进行地址变换,即在逐条指令执行时完成地址映射。
覆盖技术:
把程序划分为若干个功能上相对独立的程序段,按照其自身的逻辑结构将那些不会同时执行的程序段共享同一块内存区域。程序段先保存在磁盘上,当有关程序段的前一部分执行结束,把后续程序段调入内存,覆盖前面的程序段。
交换技术:
暂停执行内存中的进程,将整个进程的地址空间保存到外存的交换区中(换出swap out),而将外存中由阻塞变为就绪的进程的地址空间读入到内存中,并将该进程送到就绪队列(换入swap in)。
分页存储管理
1.主存分成多个固定大小的块
主存划分为大小相等的区域,称为块或内存块(物理页面,页框)
2.作业按照主存块大小分页
把用户程序按逻辑页划分成大小相等的部分,称为页(page)。从0开始编制页号,页内地址是相对于0编址
3.连续的页存放在离散的块中
以页为单位进行分配,并按作业的页数多少来分配。逻辑上相邻的页,物理上不一定相邻
请求分页存储管理(虚拟页式存储管理)
作业运行时,只将当前的一部分装入内存其余的放在辅存,一旦发现访问的页不在主存中,则发出缺页中断,由o.s将其从辅存调入主存,如果内存无空块,则选择一个页淘汰。
缺页中断处理:
1.在地址映射过程中,在页表中发现所要访问的页不在内存,则产生缺页中断。
2.操作系统接到此中断信号后,就调出缺页中断处理程序,根据页表中给出的外存地址,准备将该页调入内存
3.此时应将缺页的进程挂起(调页完成唤醒)
4.如果内存中有空闲块,则分配一个块,将要调入的页装入该块,并修改页表中相应页表项目的驻留位及相应的内存块号
5.若此时内存中没有空闲块,则要淘汰某页(若被淘汰页在内存期间被修改过,则要将其写回外存)
页面置换算法
先进先出页面算法(FIFO):选择在内存中驻留时间最长的页并淘汰之
最近最久未使用(LRU):淘汰没有使用的时间最长的页
最佳页面算法(OPT):淘汰以后不再需要的或最远的将来才会用到的页面
最不经常使用(LFU):选择访问次数最少的页面淘汰之
抖动(颠簸)
页面在内存与外存之间频繁调度,系统效率急剧下降,甚至导致系统崩溃
Belady现象
一个进程P要访问M个页,OS分配N个内存页面给进程P;对一个访问序列S,发生缺页次数为PE(S,N)。当N增大时,PE(S, N)时而增大,时而减小。
页的共享:
多个作业同时运行相同的程序时,可以使它们共享页面。办法是使这些相关进程的逻辑空间的页指向相同的内存块。
页的保护
在页表中设置读写控制字段来进行页面保护。
分段存储管理:
1.用户程序划分:按程序自身的逻辑关系划分为若干个程序段,每个程序段都有一个段名,且只有一个段号,段号从0开始,每一段段内也从0开始编址,段内地址是连续的
2.内存划分:内存空间被动态的划分为若干个长度不相同的区域,称为物理段,每个物理段由起始地址和长度确定
3.内存分配:以段为单位分配内存,每一个段在内存中占据连续空间(内存随机分割,需要多少分配多少),但各段之间可以不连续存放。
段地址映射过程:
1.程序地址字送入虚地址寄存器VR中。
2.取出段号地址S和位移W
3.根据段表首址指针找到段表,查找段号为S的表目,得到该段的首地址
4.把段首地址和段内位移相加,得到内存地址送入MR中,并以此地址访问内存
缺段中断处理
1.检查内存中是否有足够的空闲空间
2.①若有,则装入该段,修改有关数据结构,中断返回。②若没有,检查内存中空闲区的总和是否满足要求,是则应采用紧缩技术,转① ;否则,淘汰一(些)段,转①
第五章:文件
文件:
文件是赋名的信息 (数据)项的集合。
文件是赋名有关联的信息单位 (记录)的集合。
文件的组成:
文件体
文件说明
文件系统:
操作系统中负责管理相关文件信息的软件机构。
组成:
被管理的文件
与文件管理相关的软件
实施文件管理所需的数据结构
UNIX系统将文件分为三类:普通文件、目录文件、特殊文件
文件的物理结构:
- 连续结构:文件名、始址、块数
- 链接结构:文件名、始址、末址
- 索引结构:文件名、索引表地址
文件存取办法:
顺序存取法:严格按文件信息单位排列的顺序依次存取。
直接存取法:也称随即存取法,每次存取操作时必须先确定存取的位置。对流式文件或定长记录的文件比较容易确定存取位置;对不定长的记录式文件比较麻烦。
按键存取法:文件的组织按照逻辑记录中的某个数据项的内容来存放,根据记录内容进行存取。
文件控制块FCB内容:
基本信息类:① 文件名 ② 文件物理位置 ③ 文件逻辑结构 ④ 文件的物理结构
存取控制信息类
使用信息类
查找/usr/ast/mbox的步骤
文件共享的方式:
同名共享:
各个用户使用同一个文件名(包括其路径)来访问某一文件。
异名共享:
各个用户使用各自不同的文件名来访问某个文件。
异名共享所采用的方法称为文件的勾链:
1)基于索引点的共享方法
容许目录项链接到目录树中任一节点上
2)基于符号链的共享方法
只容许链接到数据文件的叶子节点上
第六章 输入输出系统
DMA方式
1、当进程要求输入时,把要求传送的内存始址(M)和要传的字节数送入DMA的内存地址寄存器和传送字数寄存器
2、把启动位置1。设备开始工作。进程(A)挂起。调度另一进程(B)
3、一批数据输入完成后,DMA中断B,转向中断处理程序。
4、中断处理程序唤醒A,返回B的断点继续执行。
5、以后OS调度A运行时,A从M处取数据处理。
通道方式:
在CPU的控制下独立地执行通道程序,对外部设备的I/O操作进行控制,以实现内存与外设之间成批的数据交换。
1.系统首先为I/O操作分配通道和外设,然后按I/O请求生成通道程序并存入内存,把起始地址送入通道的首地址寄存器(CAW),接着CPU发出启动通道的指令。
2.根据CAW,从内存取出通道指令,送入通道控制字寄存器(CCW),并修改CAW,使其指向下一条通道指令。
3.执行CCW中的通道指令,进行实际的I/O操作,执行完毕后如果还有下一条指令,则返回前一步,否则转下一步。
4.发出中断信号通知CPU通道程序已执行完成。
缓冲技术:
1.硬件缓冲器:在设备控制器中有硬件缓冲器,通常容量较小
2.软件缓冲技术:单缓冲、双缓冲、环形缓冲、缓冲池
总线:
在计算机系统内各种子系统,如CPU、内存、I/O设备等之间,构建的公用的信号或数据传输通道
I/O总线:数据总线、地址总线、控制总线
磁盘的访问过程:
寻道 :磁头移动定位到指定磁道
旋转延迟:等待指定扇区从磁头下旋转经过
数据传输:数据在磁盘与内存之间的实际传输
FCFS先来先服务
SSFT最短寻道服务:
优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先
SCAN扫描算法:
当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复
CSCAN循环扫描算法:
总是从0号柱面开始向里扫描。移动臂到达最后个一个柱面后,立即带动读写磁头快速返回到0号柱面。返回时不为任何的等待访问者服务。返回后可再次进行扫描
提高磁盘I/O速度的方法
1.磁盘高速缓存:
①在内存中开辟一个单独的存储空间作为磁盘高速缓存。
②把所有未利用的内存空间变为一个缓冲池,供分页系统和磁盘I/O共享。
2.优化数据分布
3.提前读、延迟写、虚拟盘等
SPPOOLing系统:
在联机情况下实现的同时外围操作称为SPOOLing,也称为假脱机操作。
SPOOLing系统的组成
1、输入井和输出井
2、输入缓冲区和输出缓冲区
3、输入进程和输出进程
SPOOLing系统工作原理
作业执行前预先将程序和数据输入到输入井中
作业运行后,使用数据时,从输入井中取出
作业执行不必直接启动外设输出数据,只需将这些数据写入输出井中
作业全部运行完毕,再由外设输出全部数据和信息