组成:计算机系统由计算机的硬件部分和计算机的软件部分组成。冯诺依曼结构:由输入设备,输出设备,运算器,控制器和存储器5部分组成。
通道实际上是一个专用的输入输出(I/O处理器)。
软件系统,分为两类,即系统软件和应用软件。
定义: 操作系统是一种系统软件,是控制和管理系统资源,方便用户使用计算机程序的集合。
定义: 把一个以上的作业放入主存中,并且同时处于运行状态。
目的:提高CPU的利用率,充分发挥并行性。
根据cpu时间的分配给进程方式的不同,分为:
作用:
功能:
特点: 并发性,共享性,虚拟性,异步性。(并发和共享为基本特点)
绝对地址:存储控制部件能够识别的主存单元编号(或字节地址),也就是主存单元的实际地址。
相对地址:相对于某个基准量编址时所使用的地址。
逻辑地址空间:一个被汇编、编译或连接装配后的目标程序所限定的地址的集合。
定义:将程序中的相对地址转换为绝对地址。
两种方法:
引入进程是为了使内存中的多道程序能够正确地并发执行。
定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
特点:
状态:
变化:
进程的特性:
进程控制块(PCB) 是进程存在的具体的物理标志和体现。
系统按进程优先级数设立几个就绪进程队列,同一优先级进程在同一队列中。系统首先取最高优先级的队列队首进程占用处理机,当时间片到来时往往重新计算优先级再将进程放回相应就绪队列中。当要等待时间时,将其挂到相应的事件等待队列中。如果某个事件发生,系统从相应等待队列中选取队首进程,并重新计算优先级,挂到就绪队列中。
挂起命令:由进程自己或其它进程发出。
解挂命令:只能由其它进程发出。
定义: 线程是进程内的一个相对独立的、可调度的执行单元。
性质:
每个进程都有相应的线程,在执行程序时,实际上是执行相应的一系列线程。进程是资源分配的最小单位,线程是程序执行的最小单位。
同步,是进程间的直接制约关系,是指多个进程间互相通信、互相等待,其运行必须严格按照规定的先后次序来运行。
异步 ,是进程间的间接制约关系,当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。
同步是一种更为复杂的互斥,而互斥是一种特殊的同步。也就是说互斥是两个任务之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要安照某种次序来运行相应的线程(也是一种互斥)!因此互斥具有唯一性和排它性,但互斥并不限制任务的运行顺序,即任务是无序的,而同步的任务之间则有顺序关系。
临界资源: 一次仅允许一个进程使用的共享资源。
临界段: 进程中访问共享变量的代码段。
一个信号量被定义为一个整型变量,具有以下三个操作:
信号量S表示某类可用的临界资源。对于不同的临界资源,则用不同的信号量表示。
当S.val>0时 ,S值表示某类资源的可用资源数,即该类资源可以分配。
当S.val<0时 ,S的绝对值表示在该信号量上等待的进程数,即该类资源没有可分配的资源数量,因此请求的进程将被阻塞在相应的信号量S的等待队列中。
每执行一次P操作,意味着请求的进程分配到一个资源;每执行一次V操作,意味着请求的进程释放一个资源。
定义: 系统中的一组进程,由于竞争系统资源或由于彼此通信而永远阻塞,我们称这些进程处于死锁状态。
根本原因: 进程推进顺序不当或资源分配不妥而造成的。
四个必要条件:
若其中1个条件不满足,则死锁无效。
安全序列: 某一时刻,系统能按某种进程顺序,如{p1,p2…pn},为每个进程分配其所需的资源,直至最大需求,使得每个进程均可顺利完成,则称此事系统的状态为安全状态,称这样一个进程序列为安全序列。
注意:
经过简化后,若能消去资源分配图中的所有边,使所有进程都成为孤立节点,则称该图是可完全化简的,否则称为不可完全化简图。
例如:
首先a图,R1资源无空闲资源,R2资源还有1个空闲资源。P1进程占用2个R1资源,还需要请求一个R2资源,而P2进程占用1个R1资源和1个R2资源,还需要请求一个R1资源。
然后b图,因为R1已无空闲资源,因此P2进程等待。而R2还存在空闲资源,刚好能满足P1的请求,因此消去P1进程,使其成为孤立点。那么释放了2个R1资源。
最后c图,同理消去P2进程,最终所有点都成为了孤立点,则该图是可完全化简图。不存在死锁的情况。
概念: 把主存分成若干个固定大小的存储区(又称存储块)。
优势: 实现简单,只需要极少的操作系统开销,无外部碎片。
缺点: 有内部碎片,主存利用率不高。
碎片问题: 存在于已分配的分区之间的一些不能充分利用的空白区。
概念: 在进程进入主存时,按进程的大小建立分区,分给进程使用。
存在外部碎片,没有内部碎片。
组织形式:
首次适应算法(First Fit: FF):将空白区按存贮顺序链成一个队列,用一指针指向队首分配时将找到的第一个满足要求的空白区分配给它。
循环首次适应(Next fit: NF):将空白区组成环状队列,按循环顺序寻找空白区。(与FF区别,头指针从低地址开始向高地址循环移动)。
最佳适应算法(Best fit: BF):将空白区按大小排成队列,寻找时总是以最小的空白区开始,找到第一个合适的分区。
最坏适应算法(Worst fit: WF):挑选最大的且大于或等于作业大小的分区分给要求的进程。
地址空间分成大小相同的部分——页
存贮空间分成大小相同的部分——块(页架)
页大小=块大小
逻辑地址的表示(p, d)
P = INT [A/L];d = A mod L
其中A:虚地址 L:页大小 P:页号 d:页内位移
(1) 页:作业空间单位,大小固定,用存贮器的物理划分实现一级存贮。
段:大小不定,逻辑的信息单位,实现地址空间的逻辑划分。
(2)分页:用户不关心(由机器结构决定)
分段:用户或编辑程序确定(段的最大长度由W字段的位数决定)
(3)页:单一连续空间。
段:二维空间(不同各段,段号,段内位移)
(4)页:单段式
段:多段
外部碎片:指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。 外部碎片是出于任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。
多道可变连续分配只有外部碎片。
内部碎片:已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间; 内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。
单道连续分配只有内部碎片。
多道固定连续分配既有内部碎片,又有外部碎片。
表格碎片:实际上不是碎片,是一种当分页的页面过大时的系统开销。
原理: 进程对主存的访问远不是均匀的,而是表现出高度的局部性。
主要内容:
页表定义: 一种特殊的数据结构,记录着页面和页框的对应关系。
页表作用: 内存非连续分区分配的基础,实现从逻辑地址转化为物理地址。
快表定义: 将一部分常用页表表目放入一个具有并行查询能力的高速缓冲存储器中去。
快表作用: 提高地址转换速度。
异常现象:
最常用4种置换算法:
以段为单位,每一段分配一块连续的主存分区,一个进程的各段所分到的主存分区不要求是相邻连续的分区。
页面庞大造成系统开销过大,形成表格碎片:利用多级页表
显示碎片:分为内部碎片和外部碎片,可用分页管理缓解
隐式碎片:利用虚存管理
按照传输单位分为两类:
独立于设备的软件层:为用户程序提供一个对所有设备都一致的接口。设备命名。设备保护。提供与设备无关的块尺寸。缓冲技术。块设备的存储分配。独占设备的分配与释放。报告错误信息。
设备驱动程序层: 具体负责与设备的所有交互操作。
两种基本类型:
常用3种磁盘查找算法:
3部分组成:
人们常用共享设备来模拟独占设备的动作,使独占型设备成为共享设备,从而提高设备利用率和系统效率,这种技术被称为虚拟设备技术,实现这一技术的硬件和软件系统被称为SPOOLing系统,或称假脱机系统。
文件:具有符号名的数据项的集合。
文件系统:负责存取和管理辅助存储器上文件信息的机构。
顺序结构:一个逻辑文件的信息依次存于若干连续的物理块中。
串联结构(或链接结构):一个逻辑文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理。
索引结构:一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构–索引表,并将这些块的块号存放在一个索引表中。
按层次分:一级目录、二级目录、多级目录(树型目录结构)
多级目录:系统中有一个根目录(或根目录文件),在这个目录中可登记一般文件,也可以登记目录文件,在每个目录文件中可以登记一般文件,也可以登记目录文件。
特点:目录中只包含文件名和一个指向文件属性的指针。
优点:查找目录时命中率高;查找速度快。
连续分配:文件被存放在辅存的连续存储区中。优点:查找速度快,简单;缺点:文件长度不能动态增长和收缩(事先要知道文件长度)碎片问题。(外部碎片和内部碎片均存在)
链接分配:非连续分配辅存空间。优点:解决了碎片问题(外部碎片)。缺点:查找时间长;链接开销大。
索引分配:系统在文件分配表FAT中为每一个文件分配一个表目,指出该文件的索引表所在物理块。
小FAT表(i节点):每个文件有一个i节点。i节点中包含文件属性和一张该文件自身的FAT表。
具体:根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行。
简略:根据系统内所有资源的使用情况, 按照某种调度算法选择一个后备作业进入系统, 并为其创造一个进程,为选中的作业分配资源,作好作业执行前的准备。
调度算法目标:
6种常用调度算法:
(1) FCFS(first come first service) 先来先服务,最简单的调度方法。其基本原则是按照作业到达系统或进程进入就绪队列的先后次序来选择。FCFS 策略是属于不可抢占策略。
(2) HPF (Highest Priority First)优先级调度算法,即按照进程的优先级大小来调度,使高优先级进程得到优先的处理的高度策略。优先级调度方法又可分为:
(3)轮转法 (Round Robin),最简单又最公平的进程调度算法,因此也是使用得最多的算法之一。(分时系统)
(4) SJF最短作业优先的调度算法,要求运行时间最短的作业作为下一次服务的对象。
(5) SRTF最短剩余时间优先调度算法,是把最短作业优称算法使用于分时环境中的变型,其基本思想是让运行到作业完成时所需的运行时间最短的进程优先得到处理,其中包括新进入系统的进程。
(6) 响应比高者优先(HRN)算法,既考虑作业等待时间又考虑作业运行时间,既照顾短作业又不使长作业等待时间过长,改进了调度性能。其响应比=作业周转时间/作业处理时间。
总结:
如何计算平均周转时间及带权周转时间: