操作系统学习总结
操作系统学习总结
-
绪论
-
- 操作系统的定义
- 操作系统的特征
- 操作系统的功能
- 操作系统的分类
-
硬件
-
-
处理机的状态及分类
-
- 管态(uperitor Mode )
-
- 核态( Kemel Mode )
-
管态
- 用户态(User Mode)
-
指令分类
-
- 特权指令
- 非特权指令
-
中断的定义
-
-
用户接口
-
-
用户接口的定义及分类
-
- 定义
- 分类
-
- 操作接口
-
程序接口
-
系统调用的定义及实现
-
- 定义
- 实现
-
-
进程管理、调度
-
-
进程的定义
-
进程的组成
-
进程的状态以及之间的转换
-
进程控制块的作用
-
进程控制由什么来实现: 有哪些原语
-
互斥、同步的概念
-
- 同步
- 互斥
-
临界资源和临界区
-
采用信号量和wait,signal原语来实现进程的互斥和同步
-
原语,wait,signal原语的物理意义
-
- 原语
- wait,signal原语的物理意义
-
进程的通信方式
-
- 消息通信
- 管道
-
线程的定义,与进程的区别
-
- 线程
- 进程和线程的区别和联系
-
处理机调度的层次:宏观调度(作业调度)、中级调度(挂起与解挂)、微观调度(进程调度)
-
- .高级调度
- . 低级调度
- .中级调度
-
调度算法(先来先服务、最短作业优先,最高优先比算法,最高优先级优先算法…,如何计算各种算法下的平均周转时间、带权周转时间等
-
死锁的定义、产生的根本原因和必要条件
-
预防死锁的方法,死锁的避免,死锁的检测与解除
-
- 死锁的检测
- 死锁的解除
- 预防死锁的方法
-
-
主存管理
-
-
分区分配算法:最先适应算法(空闲分区地址递增排序)、最佳适应算法(空闲分区大小递增排序)、最坏适应算法(空闲分区大小递减排序)
-
- (1).首次适应算法(first fit,FF)
- (2).循环首次适应算法(next fit,NF)
- (3).最佳适应算法(best,BF)
- (4).最坏适应算法(worst,WF)
-
页式管理的原理、地址结构、地址转换 访问数据或者指令至少访问2次内存
-
- 原理
- 地址结构
- 地址转换
-
段式管理的原理、地址结构、地址转换访问数据或者指令至少访问2次内存
-
- 原理
- 地址结构
- 地址转换
-
段式和页式的区别
-
虚拟存储器的定义、理论基础和容量以及实现的方法
-
- 定义
- .虚拟存储器的实现方法
-
- (1)请求分页系统
-
(2)请求分段系统
-
页面置换算法(最近最久未使用算法、先进先出、理想置换算法)
-
- 最近最久未使用算法
- 先进先出
- 理想置换算法
-
段页式管理的基本原理:访问数据或者指令至少访问3次内存。
-
-
设备管理
-
-
I/O设备的类型
-
I/O控制方式:程序轮询 中断 DMA 通道
-
- 程序轮询
- 中断驱动方式
- DMA
- 通道
-
缓冲区的作用
-
SPOOLing技术和组成
-
- SPOOLing技术
- 组成
-
磁盘上数据的地址表示
-
磁盘的访问时间
-
磁盘调度算法:FCFS SSTF SCAN FSCAN
-
- FCFS
- SSTF
- SCAN
- FSCAN
-
-
文件系统
-
-
文件和文件系统的定义
-
- 文件的定义
- 文件系统
-
文件的结构:逻辑结构和物理结构,文件存取方式
-
- 文件的逻辑结构
- 文件的物理结构代表了数据的存储方式,常见有以下几种
-
- 1)连续文件
-
2)串联文件
-
3)文件映照
-
4)索引文件
-
文件目录管理的功能
-
文件存储空间的管理 :空闲文件目录、位示图、链接法(成组链接法)
-
- 空闲文件目录(空闲块表 )
- 链接法
- 位示图
-
绪论
操作系统的定义
操作系统是管理计算机系统的全部硬件资源zhi包括软件资源及数据资源;控制程序;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。
操作系统的特征
1、并发性
2、共享性
3、虚拟性
4、不确定性
操作系统的功能
1、处理机管理
2、文件管理
3、存储管理
4、设备管理
5、作业管理
操作系统的分类
1、批处理操作系统
2、分时操作系统
3、实时操作系统
4、网络操作系统
5、分布式操作系统
6、微机操作系统
7、嵌入式操作系统
硬件
处理机的状态及分类
操作系统,至少需要区分两种状态:管态和用户态。
管态(uperitor Mode )
又称为系统态,是操作系统的管理程序执行时机器所处的状态。在此
状态下中央处理机可以使用全部机器指令,包括组特权指令 (例如。涉及外部设备的输入输出指令、改变机器状态或修改存储保护的指令), 可以使用所有的资源,允许访问整个存储区。
有的系统还将管理程序执行时的机器状态进一步分为核态和管态 。
核态( Kemel Mode )
就具有上述管态所具有的所有权限。
管态
管态的权限有所变化 ,管态允许使用些在用户态 下所不能使用的资源,但不能使用修改机器的状态指令。而无核态的系统,管态执行核态的全部功能。管志比核态权限要低,用户态更低。
用户态(User Mode)
:又称为目态,是用户程序执行时机器所处的状态。在此状态下禁止使用特权指令,不能直接取用资源与改变机器状态,并且只允许用户程序访问自己的存储区域。
指令分类
特权指令
是指有特权权限的指令,由于这类指令的权限最大,如果使用不当,将导致整个系统崩溃。比如:清内存、置时钟、分配系统资源、修改虚存的段表和页表,修改用户的访问权限等。
为了保证系统安全,这类指令只能用于操作系统或其他系统软件,不直接提供给用户使用。因此,特权执行必须在核心态执行 。
非特权指令
为了防止用户程序中使用特权指令,用户态下只能使用非特权指令 ,核心态下可以使用全部指令。当在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令。所以把用户程序放在用户态下,而操作系统中必须使用 特权指令的那部分程序在核心态下,保证了计算机系统的安全可靠。从用户态转换为核心态的唯一途径是中断或异常。
中断的定义
中断是指程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程
用户接口
用户接口的定义及分类
定义
操作系统的用户接口是操作系统提供给用户与计算机打交道的外部机制。用户能够借助这种机制和系统提供的手段来控制用户所在的系统。
分类
操作接口
用户通过这个操作接口来组织自己的 工作流程和控制程序的;
程序接口
任何个用户程序在其过程中, 可以使用操作系统提供的功能调用来请求操作系统的服务(如申请主存、使用各种外设、创建进程或线程等)不论哪类操作系统都必须同时提供操作接口和程序接口。
系统调用的定义及实现
定义
在计算机中,系统调用(英语:system call),又称为系统呼叫,指在使用者空间的程序向操作系统内核请求需要更高权限的服务。系统调用提供了用户程序与操作系统之间的接口(即系统调用是用户程序和内核交互的接口)。
通俗来说
就是应用程序有时会需要一些危险的、权限很高的指令,如果把这些权限放心地交给用户程序是很危险的(比如一个进程可能修改另一个进程的内存区,导致其不能),但是又不能完全不给这些权限。于是有了系统调用,危险的指令被包装成系统调用,用户程序只能调用而无权自己那些危险的指令。
实现
为了实现系统调用,操作系统设计者必须完成的工作如下。
①编写并调试好能实现各种功能的例行子程序,如sub.、 sb. … sb. … subo
②编写并调试好访管中断处理程序,其功能是:做常规的现场保护后,取i值,然后安排条
转移指令,按A +i单元中的内容转移。
③构造例行子程序入口地址表。假定该表首址为4,每个例行子程序的入口地址占1个字长,
将各例行子程序的入口地址#subo、#subj、 … #subj、 . #subm(即ao、 21、 . a… am)分别
送入A+0、A+1、… A+i、… A+m单元中。
在用户程序中,需要请求操作系统服务的地方安排一条系统调用。这样,当程序执行到这一-条命令时,就会发生中断,系统由用户态转为管态,操作系统的访管中断处理程序得到控制权,它将按系统调用的功能号,借助例行子程序入口地址表转到相应的例行程序去执行,在完成了用户所需要的服务功能后,退出中断,返回到用户程序的断点继续执行。
进程管理、调度
进程的定义
所谓进程就是一个程序在给定的活动空间和初始环境下,在一个处理机上的执行过程
1)进程是并发程序的一次执行过程
2)进程是一个具有一定独立功能的程序关于某个数据集合的一次活动
进程的组成
进程实体由三部分构成:由程序段、数据段、进程控制块PCB
进程的状态以及之间的转换
1)就绪态->态 2)态->就绪态 3)态->阻塞态 4)阻塞态->就绪态

进程控制块的作用
1)每个进程有唯一的PCB。
2)操作系统根据PCB对进程实施控制和管理。
3)进程的动态、并发等特征是利用PCB表现出来的。
4)PCB是进程存在的唯一标志。
进程控制由什么来实现: 有哪些原语
(1)进程控制原语 :对进程的行为进行控制
(2)最基本的进程控制原语 :进程建立、进程调度、进程等待、进程唤醒、进程撤消
(3)进程建立中, 父进程在调用创建原语之前必须准备的参数:进程标识符、进程优先级以及进程程序的起始地址
互斥、同步的概念
同步
是进程间共同完成一项任务时直接发生相互作用的关系(进程之间的一种协调配合关系)
互斥
若干进程竞争进入临界段时,相互之间所形成的排它性关系(从广义上讲它也属于同步关系的范畴)
临界资源和临界区
临界资源(critical resource):是一次只能被一个进程使用的资源
临界段/临界区(critical section):是使用临界资源的程序段
采用信号量和wait,signal原语来实现进程的互斥和同步
示例


原语,wait,signal原语的物理意义
原语
执行过程中不可中断的、实现某种独立功能的、可被其他程序调用的程序
wait,signal原语的物理意义
一个信号量通常对应一类临界资源,在使用前,信号量必须经过定义并赋适当的初值。
每次对它进行wait操作意味着申请一个单位的该资源,signal操作操作意味着归还一个单位的该类资源。当S.value>0时,它的值表示系统中该类资源当前可用的数目;S.value<=0时,表示该类资源已经分配完毕,其绝对值表示系统中因申请资源而阻塞在S.L队列上的进程数目
进程的通信方式
消息通信
(1)进程间的数据交换以消息为单位
(2)用户直接利用系统中提供的一组通信命令(原语)进行通信
(3)消息msg通常由消息头和消息正文构成:
1)消息头
msgsender消息发送者
msgreceiver消息接收者
msgnext下一个消息的链指针
msgsize整个消息的字节数
2)消息正文
msgtext消息正文
(4)消息通信分类:
1)直接通信方式

2)间接通信方式
发送进程使用发送原语直接将消息发送到某种中间实体(邮箱)中,接收进程使用接收原语从该中间实体中取出消息,也称为邮箱通信

管道
(1)在两个进程的执行过程中,如果一个进程的输出是另一个进程的输入,可以使用管道文件
(2)在Linux系统中,使用符号“|”来表示已建立管道文件

(3)管道通信
输入进程:从进程A的输出区读数据,写入管道文件
管道文件;这是一个临时文件,输入进程向它写信息,输出进程从它读信息
输出进程:将管道文件的数据读出,写入进程B的输入区
(4)管道通信的关系
互斥关系——输出和输入进程不可能同时读或者写
同步关系——当管道文件为空时,输出进程等待输入进程
当管道文件为满时,输入进程等待输出进程
(4)管道:是数据流,它既可以是单向的,也可以是两个进程间双向的,又被分为匿名管道和命名管道
2.5.3Windows中的进程通信
邮件位——是单向机制,一个进程留下消息,等待另一个进程接收
对邮件位的操作:
创建邮件位CreateMailslot()
读取邮件位信息GetMailslotInfo()
改变邮件位信息SetMailslotInfo()
对于邮件位中的数据,windows是通过对文件的操作来实现数据的读写的
线程的定义,与进程的区别
线程
进程中的逻辑小块,它具有挂起自身和被挂起的能力,因此线程的状态是可以变化的
进程和线程的区别和联系
1)进程是拥有应用程序所有资源的对象
2)线程是进程中一个独立的执行路径
3)一个进程至少要有一个线程,这个线程被叫做主线程
4)一个进程的线程越多,该进程获得的CPU时间就越多,进程的时间就越快
5)所有线程参与对CPU时间片的竞争
6)线程时共享其对应进程所拥有的资源
处理机调度的层次:宏观调度(作业调度)、中级调度(挂起与解挂)、微观调度(进程调度)
.高级调度
也称为作业调度。作业是比程序更广泛的概念,作业不仅包含了程序与数据,还包含了对程序的控制说明;作业是用户向计算机提交任务的任务实体,一个作业可由多个进程组成,而进程只是执行任务的实体。
. 低级调度
也称为进程调度。进程调度是用于决定把处理机分配给哪个就绪队列里面的进程或者说内核级线程。进程调度有两种方式:一种是非抢占式,一种是抢占式,非抢占式要等进程完才把处理器分配给别的进程;而抢占式则是根据某种规则去暂停正在执行的进程,将处理器分配给另一个进程。
.中级调度
会把暂时不能的进程调到外存上去等待,等具备条件时再重新调入内存。
调度算法(先来先服务、最短作业优先,最高优先比算法,最高优先级优先算法…,如何计算各种算法下的平均周转时间、带权周转时间等
死锁的定义、产生的根本原因和必要条件
死锁 : 是若干进程都无知地等待对方释放资源而处于无休止的等待状态
产生死锁的根本原因 :资源有限且操作不当。
死锁发生的必要条件
(1)死锁产生的必要条件:资源的互斥使用,资源不可抢占,资源的部分分配,循环等待
预防死锁的方法,死锁的避免,死锁的检测与解除
死锁的检测
如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁。
如果每个资源类中只包含一个资源实例,则环路是死锁存在的充分必要条件。
死锁的解除
撤消所有的死锁进程
连续撤消死锁进程直至不再存在死锁
连续剥夺资源直到不再存在死锁
把每个死锁进程备份到前面定义的某个检查点,并重新启动所有进程
预防死锁的方法
预防死锁的策略:资源预先分配策略、资源有序分配策略。
1)资源预先分配策略:打破占有且申请条件,进程在前一次性地向系统申请它所需要的全部资源,如果所序言的全部资源得不到满足,则不分配任何资源,此进程暂不。
2)资源有序分配策略(序列号升序或减序):打破循环等待条件,把资源事先分类编号,按序分配,使进程在申请、占用资源时不会形成环路.
主存管理
分区分配算法:最先适应算法(空闲分区地址递增排序)、最佳适应算法(空闲分区大小递增排序)、最坏适应算法(空闲分区大小递减排序)
(1).首次适应算法(first fit,FF)
:
要求,空闲分区链以地址递增的顺序链接。每次从链首开始,直到找到第一个能满足要求的空闲分区为止。
简单来说,就是,每次都从第一个开始顺序查找,找到一块区域可以满足要求的。
优点:优先利用内存中低址部分的空闲分区,从而保留了高址部分的大空闲区,这为以后到达的大作业分配大的内存空间创造了条件。
缺点:低址部分不断被划分,会留下许多难以利用的,很小的空闲分区,称为碎片。而每次查找又都是从低址部分开始的,这无疑又会增加查找可用空闲分区时的开销。
(2).循环首次适应算法(next fit,NF)
与FF算法区别就是,不是每次都从首次开始,而是从上次找到的空闲分区的下一个空闲分区开始。(第一次查找的话也是从首页开始)。
特点:能使内存中的空闲区分布得较均匀。
(3).最佳适应算法(best,BF)
将所有空闲分区按照空闲分区容量大小从小到大的顺序连接起来,形成一个空闲分区链。
即,每次都是找空间容量不但可以满足要求的空闲区,而且该空闲分区的容量还要最接近要求的容量大小。
优点:每次分配给文件的都是最合适该文件大小的分区。
缺点:内存中留下许多难以利用的小的空闲区(外碎片)。
(4).最坏适应算法(worst,WF)
与BF算法相反,WF算法是按照空闲分区容量从大到小的顺序连接起来的,而且每次找空闲分区的时候也是按照空闲分区容量最大的。
特点:尽可能的分配大的分区。
缺点:使得内存缺乏大分区,可能使得后续到来的大作业无法装入内存。
页式管理的原理、地址结构、地址转换 访问数据或者指令至少访问2次内存
原理
1)用户的逻辑地址空间分页:把用户的逻辑地址空间划分成若干个长度相等的页(page,虚页),并对其页从0开始进行编号:0,1,2…。
2)等分主存:把主存按页的大小划分成存储块,称为页面(page frame,物理块,实页) ,它的大小对特定计算机系统而言是固定的;并给各实页从0开始编号:0,1,…,n 。
3)逻辑地址的表示:每个逻辑地址用一个数对(p,d)来表示,p是页号,d是该虚拟地址在页p内的相对地址,称为页内地址或偏移量。
地址结构

地址转换
将由逻辑页号和页内相对地址变换到内存物理地址,只能采取动态重定位。
由硬件地址变换机构自动完成。
将逻辑地址中的页号与页表地址寄存器中的页表长度比较
如页号超过页表长度,则产生越界中断
否则,根据页表起始地址与页号计算该页对应页表项的位置,从中读出页对应的内存的块号将块号和页内地址组合得到物理地址
物理地址=内存块号*块长+页内地址

段式管理的原理、地址结构、地址转换访问数据或者指令至少访问2次内存
原理
页式管理是把内存视为一维线性空间;而段式管理是把内存视为二维空间,与进程逻辑相一致。
把程序的地址空间按内容或过程(函数)关系分成段,每段有自己的名字;
系统按段分配内存空间,一个进程的各段在内存中可以是不连续的;
程序的虚拟地址用段名和段内地址来描述,是一个二维地址;
指令地址场中的虚拟地址用段号和段内地址来描述。为实现内存分配和地址变换,必须设置段表和段表地址寄存器。
物理内存的管理采用动态分区。需要CPU的硬件支持。
地址结构


地址转换


段式和页式的区别
页式和段式管理都提供了内外存统一管理的虚存实现,但分页是出于系统管理的需要,分段是出于用户应用的需要
一条指令或一个操作数可能会跨越两个页的分界处,而不会跨越两个段的分界处。
页式虚存只交换固定大小的页,需要多次缺页中断才能把所需信息完整地调入内存,而段式虚存每次交换得到是一段有意义的信息。无法通过页面共享具有完整逻辑功能的子程序或数据块,而段则可以。
虚拟存储器的定义、理论基础和容量以及实现的方法
定义
所谓虚拟存储器,是指仅把作业的一部分装入内存便可以作业的存储器系统。虚拟存储器具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充。实际上,用户看到的大容量只是一种感觉,是虚拟的,故而得名虚拟存储器。其逻辑容量由内存和外存容量之和所决定,其速度接近于内存速度,而其成本却接近于外存。可见,虚拟存储技术是一种性能非常优越的存储器管理技术,故被广泛应用于大、中、小型计算机和微型机中。
.虚拟存储器的实现方法
虚拟存储器的实现都是建立在离散分配存储管理方式的基础上,目前的实现方法主要有以下两种。
(1)请求分页系统
请求分页系统是在分页存储管理方式的基础上增加了请求调页功能、页面置换功能所形成的页式虚拟存储系统。程序启动时装入部分用户程序页和数据页,在以后的过程中,访问到其他逻辑页时,冉陆续将所需的页调入内存。请求调页和置换时,需要页表机构、缺页中断机构、地址变换机构等软硬件支持。
(2)请求分段系统
请求分段系统是在分段存储管理方式的基础上增加了请求调段及分段置换功能而形成的段式虚拟存储系统,只需装入部分程序和数据进程即可启动,以后出现缺段时再动态调入。实现请求分段同样需要请求分段的段表机制、缺段中断机构、地址变换机构等软硬件支持。
页面置换算法(最近最久未使用算法、先进先出、理想置换算法)
最近最久未使用算法



先进先出






理想置换算法



段页式管理的基本原理:访问数据或者指令至少访问3次内存。
在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问是访问内存中的段表,从中取得页表始址;第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问才是真正从第二次访问所得的地址中,取出指令或数据。
设备管理
I/O设备的类型
(1)按设备的功能特性分
存储型设备
输入输出型设备(交互型设备)
数据通信设备
(2)按传输速率分类
低速设备:几~数百 B/S,键盘,鼠标、语音的I/O设备;
中速设备:数千~数十万B/S ,打印机;
高速设备:数百KB~千MB/S ,磁带机、磁盘机、光盘等。
(3)按设备的信息组织方式分
字符设备:以字符为单位组织和处理信息的设备:键盘、终端、打印机;传输速率较低,不可寻址, 在I/O时,常采用中断驱动方式。
块设备:以字符块为单位组织处理信息的设备:磁盘、磁带。属于有结构设备,其传输速率较高,可寻址,即对它可随机地读/写任一块;I/O常采用DMA方式。
(4)按设备资源的分配角度分为:独占设备、共享设备和虚拟设备。
独占设备: 在一段时间内只能由一个进程使用的设备,一般为低速I/O设备。静态分配。
共享设备: 在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高。
如硬盘的使用,在作业执行过程中,需要使用磁盘时,才会把磁盘分配给作业使用,I/O对磁盘的分配实际上就是决定某一时刻为谁服务的问题,即驱动调度问题
虚拟设备:在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚拟设备。
目的:将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率。
(5) 按设备的从属关系分类:
系统设备:在OS生成时就已配置好的各种标准设备:键盘、存储设备等;
用户设备:在系统生成时没有配置,由用户自己安装配置后由OS统一管理的设备:网卡、实时系统中的A/D、D/A转换器。
I/O控制方式:程序轮询 中断 DMA 通道
程序轮询
在早期的计算机中,由于无中断机构,处理机对I/O设备的控制采用程序直接控制方式,或称为忙-等待方式。
计算机从外部设备读取数据到存储器,每次读一个字的数据。对读入的每个字,CPU需要对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中。由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成了 CPU资源的极大浪费。
程序直接控制方式虽然简单易于实现,但是其缺点也是显而易见的,由于CPU和I/O设备只能串行工作,导致CPU的利用率相当低。
中断驱动方式
中断驱动方式的思想是,允许I/O设备主动打断CPU的并请求服务,从而“解放”CPU,使得其向I/O控制器发送读命令后可以继续做其他有用的工作,CPU与I/O可以并行操作。
从I/O控制器的角度来看,I/O控制器从CPU接收一个读命令,然后从外围设备读数据。一旦数据读入到该I/O控制器的数据寄存器,便通过控制线给CPU发出一个中断信号,表示数据已准备好,然后等待CPU请求该数据。I/O控制器收到CPU发出的取数据请求后,将数据放到数据总线上,传到CPU的寄存器中。至此,本次I/O操作完成,I/O控制器又可幵始下一次I/O操作。从CPU的角度来看,CPU发出读命令,然后保存当前程序的上下文(现场,包括程序计数器及处理机寄存器),转去执行其他程序。在每个指令周期的末尾,CPU检查中断。当有来自I/O控制器的中断时,CPU保存当前正在程序的上下文,转去执行中断处理程序处理该中断。这时,CPU从I/O控制器读一个字的数据传送到寄存器,并存入主存。接着, CPU恢复发出I/O命令的程序(或其他程序)的上下文,然后继续。中断驱动方式比程序直接控制方式有效,但由于数据中的每个字在存储器与I/O控制器之间的传输都必须经过CPU,这就导致了中断驱动方式仍然会消耗较多的CPU时间。
DMA
在中断驱动方式中,I/O设备与内存之间的数据交换必须要经过CPU中的寄存器,所以速度还是受限,而DMA(直接存储器存取)方式的基本思想是在I/O设备和内存之间开辟直接的数据交换通路,彻底“解放” CPU。DMA方式的特点是:
基本单位是数据块。
所传送的数据,是从设备直接送入内存的,或者相反。
仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在 DMA控制器的控制下完成的。
通道
I/O通道是指专门负责输入/输出的处理机。I/O通道方式是DMA方式的发展,它可以进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可以实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。
例如,当CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首地址和要访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成CPU指定的I/O任务,数据传送结束时向CPU发中断请求。I/O通道与一般处理机的区别是:通道指令的类型单一,没有自己的内存,通道所执行的通道程序是放在主机的内存中的,也就是说通道与CPU共享内存。
I/O通道与DMA方式的区别是:
DMA方式需要CPU来控制传输的数据块大小、传输的内存位置,而通道方式中这些信息是由通道控制的。
每个DMA控制器对应一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换。
缓冲区的作用
1、减少实际物理读写次数
2、缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的次数
SPOOLing技术和组成
SPOOLing技术
SPOOLing技术是低速输入输出设备与主机交换的一种技术,通常也称为“假脱机真联机”,他的核心思想是以联机的方式得到脱机的效果。低速设备经通道和外设在主机内存的缓冲存储器与高速设备相联,该高速设备通常是辅存。为了存放从低速设备上输入的信息,或者存放将要输出到低速设备上的信息(来自内存),在辅存分别开辟一固定区域,叫“输出井”(对输出),或者“输入井”(对输入)。简单来说就是在内存中形成缓冲区,在高级设备形成输出井和输入井,传递的时候,从低速设备传入缓冲区,再传到高速设备的输入井,再从高速设备的输出井,传到缓冲区,再传到低速设备
组成
SPOOLing系统主要有以下三部分:
(1)输入井和输出井。这是在磁盘上开辟的两个大存储空间。输入井是模拟脱机输入时的磁盘设备,用于暂存I/O设备输入的数据;输出井是模拟脱机输出时的磁盘,用于暂存用户程序的输出数据。
(2)输入缓冲区和输出缓冲区。为了缓和和CPU和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区;输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用与暂存从输出井送来的数据,以后在传送给输出设备。
(3)输入进程SPi 和输入进程SP0。这里利用两个进程来模拟脱机I/O时的外围控制机。其中,进程SPi模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,直接从输入井读入内存;进程SP0模拟脱机输出时的外围控制机,把用户要求输出的数据从先内存送到输出井,待输出设备空闲时,在将输出井中的数据经过输出缓冲区送到输出设备上。
磁盘上数据的地址表示
磁盘设备可包括一个或多个物理盘片,每个磁盘片分一个或两个存储面(Surface)(见下图),每个盘面上有若干个磁道(Track),磁道之间留有必要的间隙(Gap)。为使处理简单起见,在每条磁道上可存储相同数目的二进制位


磁盘的访问时间
磁盘设备在工作时以恒定速率旋转。为了读或写,磁头必须能移动到所指定的磁道上,并等待所指定的扇区的开始位置旋转到磁头下,然后再开始读或写数据。
完成一次访盘过程由三个动作组成:
寻道(seek) :磁头移动定位到指定磁道
旋转延迟 :磁头位于正确位置后,等待指定扇区从磁头下旋转经过。
数据传输(transfer) :数据在磁盘与内存之间的实际传输。
一次访盘过程完成的时间由三部分组成:
寻道时间+旋转延迟时间+数据传输时间 。
分配块时,把有可能顺序存取的块放在一起,最好在同一柱面上,从而减少磁盘臂的移动次数。
磁盘调度算法:FCFS SSTF SCAN FSCAN
FCFS
假设磁盘访问序列:98,183,37,122,14,124,65,67
读写头起始位置:53(先来先服务)


SSTF
最短寻道时间优先SSTF (Shortest Seek Track Time First):优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道时间。
优点:改善了磁盘平均服务时间;
缺点:造成某些访问请求长期等待得不到服务。
假设磁盘访问序列:98,183,37,122,14,124,65,67
读写头起始位置:53(就近原则)


SCAN
扫描算法(电梯算法)
克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向。
具体做法:当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。
Linux采用的就是类似于电梯算法的磁盘调度算法。



文件系统
文件和文件系统的定义
文件的定义
文件:是被命名的数据的集合体
1)一组具有符号名相关联字符的集合(无结构)
2)一组具有符号名相关联记录的集合(有结构)
文件系统
1.文件 :是被命名的数据的集合体。
2.文件系统 :就是操作系统中负责操纵和管理文件的一整套设施,它实现文件的共享和保护,方便用户“按名存取”。
文件的结构:逻辑结构和物理结构,文件存取方式
文件的逻辑结构
1.用户可见的文件结构称为文件的逻辑结构
2.流式无结构文件
1)文件内部不再划分记录,它是由一组相关信息组成的有序字符流,字符为基本管理单位
2)大量的源程序、可执行程序、库函数等都采用流式无结构文件形式,DOS、UNIX、Windows、Linux系统中的普通文件都是流式文件。
文件的物理结构代表了数据的存储方式,常见有以下几种
1)连续文件
连续文件是指把逻辑上连续的文件信息依次存放到连续的物理块中

连续文件结构简单,实现容易.但连续存储空间的要求导致大量较小的区域无法分配和利用
2)串联文件
串联文件又称为链接文件,它把逻辑上连续的文件信息分散存放到不连续的块中,每个物理块最末一个字作为链接字指向与它链接的下一物理块,文件的结尾块则存放结束标记“∧”。
串联文件只适用于磁盘,不适合磁带,且对串联文件只能顺序存取。
串联文件实现了文件的非连续存储,提高存储空间利用率,消除了外部碎片。
3)文件映照
在系统中建立一张文件映照表,把所有盘块的指针都存放在该表中,每个指针占一个表项。
用户目录中存放文件的第一个块号,利用这一块号到文件映造表中找到下一块号,文件的结尾块则存放结束标记“∧”,通过文件映照表可获得该文件占用的所有块号。
大容量磁盘的文件映照表很大,一般被作为文件保存在磁盘中,需要时,调入内存即可。
文件映照方式只适用于磁盘,既可进行顺序存取,又能进行随机存取。
文件映照表既保持了链接文件的优点,又克服了其缺点,但是增加了文件映照表的存储开销,访问速度的提高是用存储空间的增加来换取的。
在DOS系统中,使用称为FAT的文件映照表来完成文件的映照;而在Windows中使用FAT32来完成文件的映照。
4)索引文件
索引文件的思想类似于存储管理中的分页管理。
系统为每个文件建立一张索引表,给出逻辑块号和分配给它的物理块号的对应信息。

索引文件只适用于磁盘,对索引文件除了能进行顺序存取外,也可较方便实现随机存取。
如果把索引表全部放入内存,必然占据过多内存空间,一般把索引表以文件的形式存放到外存,需要时调入内存即可。
对于中、小型文件,存放索引表文件可能只需一个物理块;
但对于大型文件,由于索引表比较大,需要用多个物理块来存放,物理块之间再通过链接指针相互链接,索引表的访问效率必然降低。
这时可采用两级索引的方法,即为存放索引表的物理块(简称索引块)再建立索引。
索引结构是计算机操作系统中普遍采用的结构,如在Linux系统中,小型文件采用一级索引结构,大型文件采用二级索引结构,巨型文件则采用三级索引结构。
文件目录管理的功能
文件目录管理的基本功能就是实现“按名存取”。
文件目录还要能合理组织目录结构,使得各个文件的查找速度较快,还要能提供对文件的共享,即让多个用户共用一个文件。
文件目录是一张记录所有文件的基本信息的目录表,如文件名、文件存放的物理位置以及文件说明和控制方面的信息。
文件存储空间的管理 :空闲文件目录、位示图、链接法(成组链接法)
空闲文件目录(空闲块表 )
将文件存储设备上的每个连续空闲区看作一个空闲文件(又称自由文件)。系统为所有空闲文件单独建立一个目录,每个空闲文件在这个目录中占一个表目,它包括空闲块个数,空闲块号和第一个空闲块号等。
适用于连续文件结构的文件存储区的分配与回收。
链接法
把文件存储设备上的所有空闲块链接在一起,当申请者需要空闲块时,分配程序从链头开始摘取所需要的空闲块,然后调整链首指针。反之,当回收空闲块时,把释放的空闲块逐个插入链尾上。
链接方法因系统而异。常用的链接方法有按空闲区大小顺序链接、按释放先后顺序链接以及按成组链接法。 前两种方法在增加或移动空闲块时需对空闲块链作较大的调整,因而需耗去一定的系统开销。成组链接法则更优。
位示图
空闲表和空闲块链法在分配和回收空闲块时,都需经过设备管理程序启动外设查找空闲文件目录项或链接块号才能完成,分配回收速度较低。
使用位示图的方法可以提高空闲块的分配回收速度.
系统首先从内存中画出若干个字节,为每个文件存储设备建立一张位示图。在位示图中,每个文件存储设备的物理块都对应一个比特位。 “0”表示所对应的块是空闲块,“1” 表示所对应的块已被分配出去。
利用位示图来进行空闲块分配时,只需查找图中的“0”位,并将其置为“1”位。反之,利用位示图回收时只需把相应的比特位由“1”改为“0”即可。
描述能力强,适合各种物理结构。磁盘常用此方法。
