目录
第一节 操作系统概念
一、操作系统的定义
操作系统OS是计算机系统中最重要的系统软件,它是控制计算机软、硬件资源和方便用户管理的程序集合。
二、操作系统的特性
(一)并发性
指的是两个或多个事件中同一时间间隔内发生。
并发特征是操作系统最重要的特征,后续三个特征都以并发特征为前提。
(二)共享性
由于操作系统具有并发性,整个系统的软、硬件资源不再为某个程序所独占,而是由许多程序共同使用,即许多程序共享系统中的各种资源。并发性和共享性相辅相成,是操作系统的两个基本特征。
(三)虚拟性
指通过某种技术把一个物理实体变为若干个逻辑上的对应物。
eg:硬盘1块,使用的时候可以分成很多块。
(四)不确定性(异步性)
程序何时执行、何时暂停未知。
三、操作系统的目标——方便性、有效性、可扩充性、开放性
方便性指让计算机系统更容易使用;有效性指提高系统资源利用率;可扩充性指让操作系统能够适应计算机硬件以及应用发展的要求;开放性指操作系统能遵循世界标准规范,开放性是操作系统能否被广泛应用的重要因素。
四、基本的操作系统
(一)批处理系统
1.单道批处理系统——标志着操作系统的诞生
指系统对作业的处理都是成批地进行,且在内存中始终只保持一道作业。
单道批处理系统是最早出现的一种操作系统,其主要特征有自动线、顺序性、单道性。
2.多道批处理系统
为了提高资源的利用率和系统吞吐量,形成了多道批处理系统。用户所提交的作业都现存放在外存上并排成一个后备队列,然后按一定算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。
多道批处理系统无交互能力。用户一旦把作业提交给系统后,直到作业完成,用户都不能与自己的作业进行交互,修改和调试程序不方便。
(二)分时系统
指的是在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。
分时系统的特点:
1.多路性
宏观上,是多个用户同时工作;微观上,是每个用户作业轮流运行一个时间片。
2.独立性
每个用户各占一个终端,彼此独立互不干扰。
3.及时性
用户的请求能在很短的时间内获得响应。
4.交互性
用户可通过终端与系统进行人机对话。
(三)实时系统——多用于航空航天
指的是系统能及时响应外部事件的请求,在规定时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
实时系统具有以下几个特点:
1.多路性
实时系统的多路性表现在系统周期性地对多路现场信息进行采集,以及对多个对象或多个执行机构进行控制。
2.独立性
对信息的采集和对对象的控制彼此互不干扰。
3.及时性
一般为秒级到毫秒即,甚至更低。
4.交互性
仅限于访问系统中某些特定的专用服务程序。
5.可靠性
任何差错都可能带来巨大的经济损失,甚至是无可预料的灾难性后果。
五、操作系统的功能
(一)处理机管理——CPU
主要功能是创建和撤销进程,对各进程的运行进行协调,实现进程之间的信息交换。
1.进程控制:为作业创建进程,撤销已结束的进程,已经控制进程中运行过程中的状态转换。
2.进程同步:为多个进程的运行进行协调(进程互斥和同步方式)
3.进程通信:实现在相互合作的进程之间的信息交换。
4.调度:作业调度和进程调度。
(二)存储器管理
对内存的分配和回收。
(三)设备管理
I/O设备,打印机等需要装驱动。
(四)文件管理
对用户文件和系统文件进行管理,方便用户使用。
六、操作系统与用户的接口
为方便用户使用,操作系统又提供了用户与操作系统的接口,该接口通常分为两大类:
1.用户接口(联机用户接口和脱机用户接口)
给用户提供命令接口,用户可通过该接口向作业发出命令以控制作业的运行。
2.程序接口
程序接口是操作系统为用户程序设置的,由一组系统调用组成,每一个系统调用都是一个能完成特定功能的子程序,是操作系统和应用程序之间的接口,它是用户程序取得操作系统服务的唯一途径。
(1)特权指令
特权指令是在系统态时运行的指令,是关系到系统全局的指令。特权指令只允许操作系统使用,不允许应用程序使用,否则会引起系统混乱。
(2)非特权指令
非特权指令是指用户态时运行的指令,只能完成一般性的操作和任务。
Q:应用程序如何调用特权指令?
A:操作系统提供程序接口,包括特权指令和非特权指令。特权指令只允许操作系统使用。当应用程序中需要操作系统提供服务如请求I/O资源或者执行I/O操作时,应用程序必须使用系统调用命令。操作系统捕获到该命令后,便将CPU的状态由用户态转换到系统态,然后执行操作系统中相应的子程序,完成所需的功能。执行完成后,系统又将CPU状态从系统态转换到用户态,再继续执行应用程序。
第二节 进程管理
一、程序
(一)程序的概念
程序是指令的有序集合,是一个在时间上严格按次序前后相继的操作序列,仅当前一操作执行完后,才能执行后继操作,它是一个静态的概念。
程序的执行方式有顺序执行和并发执行。
(二)程序的顺序执行
1.顺序性:一个程序各个部分的执行,严格按某中先后次序执行。
2.封闭性:程序在封闭的环境下运行,即程序运行时独占全部系统资源,程序一旦开始执行,其执行结果不受外界因素影响。
3.再现性:只要程序执行时的环境和初始条件相同,当程序重新执行时,将获得相同的结果。
(三)程序的并发执行
并发执行提高了系统吞吐量。
1.间断性:程序在并发执行时,由于它们共享资源或为完成同一任务而相互合作,致使在并发执行的程序之间形成了相互制约的关系,具有“执行-暂停-执行”的特征。
2.失去封闭性:程序并发执行时,系统中的资源状态将由多个程序来改变,使程序的运行失去了封闭性。
3.不可再现性:由于失去了封闭性,其计算结果与并发程序的执行速度有关,程序经多次执行后,其得到的结果大不相同。
二、进程
(一)基本概念
为使程序能够并发执行,并且为了对并发执行的程序加以描述和控制,引入了进程的概念。进程是程序中一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
(二)进程的特征
1.动态性
进程的实质是进程实体的一次执行过程,故动态性是进程最基本的特征。
2.并发性
并发性指的是多个进程实体同存于内存中,且能在一段时间内同时运行。并发性是进程的重要特征,同时也称为操作系统的重要特征。
3.独立性
独立性指的是进程实体是一个能独立运行、独立分配资源和独立接收调度的基本单位。
4.异步性
异步性是指进程按各自独立的、不可预知的速度向前推进,或说进程实体按异步方式运行。
5.结构特征
为使程序能够独立运行,应为之配置一进程控制块,即PCB;而由程序段、相关的数据段和PCB三部分便构成了进程实体。
PCB进程控制块是进程存在的唯一标志。因为PCB经常被系统访问,故PCB常驻内存。
进程控制块中主要包括四方面信息:进程标识符、处理机状态、进程调度信息和控制信息。
三、线程
(一)线程概念
在操作系统中引入进程的目的,是为了使多个程序能够并发执行,以提高资源利用率和系统吞吐量,再引入线程,是为了减少程序中并发执行时所付出的时空开销,使操作系统具有更好的并发性。
线程可以利用线程标识符和一组状态参数来描述,具有下述属性:
1.不占资源:除了一点在运行中必不可少的资源外,线程基本上不需要系统资源。
2.独立调度和分派的基本单位
3.可并发执行:同一进程中的多个线程,以及不同进程中的多个线程均可以并发地执行。
4.共享进程资源
同一个进程中的各线程可以共享该进程所拥有的全部资源,如进程的地址空间、已打开的文件等。
Q:进程和线程的区别?
A:进程是资源分配和调度的基本单位,程序的一次执行或者一组数据的一次执行就叫做进程;引入线程后,线程是调度的基本单位,它是为了让程序能够更好地并发执行,提高资源利用率和系统吞吐量,所以在引入进程后又引入了线程。进程必须要分配资源,线程是不一定要分配资源的,一般情况下,一个进程由一个或多个线程构成。操作系统为进程的创建和撤销所付出的开销明显大于线程的创建和撤销的开销。
企业级李姐:开了一家工厂,工厂有两个车间,A车间有40人,B车间有60人,每个车间就像一个进程,把B车间的10人调到A车间,这就是线程。
四、进程状态
(一)就绪
进程已经获得除CPU外的所有必要资源,只需要获得CPU就可立即执行的状态为就绪状态。
(二)执行
进程已获得CPU,其程序正在执行。单处理系统中只有一个进程处于执行状态;多处理系统中,则有多个进程处于执行状态。
(三)阻塞(或等待)
正在执行的进程由于发生某事件(如请求I/O)而暂时无法继续执行时,便处于暂停状态,称为阻塞状态,也称等待状态。
进程的三种基本状态以及各状态之间的转换关系:
五、进程同步
主要任务是对多个相关进程中执行次序上进行协调,以使并发执行的诸进程之间能够有效地共享资源和相互合作,从而使程序的执行具有可再现性。
(一)临界资源和临界区
在一段时间内只允许一个进程访问的资源称为临界资源。计算机系统中的许多硬件资源如打印机、磁带机等,以及某些软件中所用的栈、变量和表格,都属于临界资源,它们要求被互斥地共享。
每个进程中访问临界资源的那段代码被称为临界区。
(二)同步机制应遵循的规则
为实现进程互斥地进入自己的临界区,可中系统中设置专门的同步机制来协调各进程间的运行。所有的同步机制都应遵循以下四条准则:
1.空闲让进:当临界区无进程时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立即进入临界区,以有效地利用临界资源。
2.忙则等待:当已有进程进入临界区时,表明临界资源正在被访问,因此其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。
3.有效等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态。
4.让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。
第三节 处理机调度
一、处理机调度的层次
(一)作业调度
1.作业的概念
作业调度又称高级调度、宏观调度,根据某种算法,把外存上处于后备队列中的作业调入内存。
作业是一个比程序更为广泛的概念,是用户要求计算机所做的关于一次业务处理的全部工作。
2.作业状态
一个作业从提交给计算机系统到执行结束退出系统,一般要经过提交、收容、执行、完成四个状态。
(二)中级调度
目的是为了提高内存利用率和系统吞吐量。为此应使那些暂时不能运行的进程调至外存上去等待,把此时的进程状态称为挂起状态。中级调度实际上就是存储器管理中的对换功能。
(三)进程调度
进程调度又叫低级调度,或微观调度。它决定就绪队列中哪个进程获得处理机。
进程调度的方式有两种:抢占方式和非抢占方式。其中抢占方式基于的原则有三个:优先权原则、短进程有限原则、时间片原则。
二、调度算法的准则
(一)面向用户的准则
1.周转时间短
从作业提交给系统开始,到作业完成的这段时间间隔称为作业周转时间。
作业的周转时间与系统为它提供服务的时间Tsi之比,称为带权周转时间。
2.响应时间快
响应时间是从用户通过键盘提交一个请求开始,直至系统首次产生响应为止的时间。
3.截止时间的保证
指某任务必须开始执行的最迟时间或必须完成的最迟时间。
4.优先权准则
让紧急的作业能得到及时处理。
(二)面向系统的准则
1.系统吞吐量高
吞吐量指在单位时间内系统完成的作业数,这是用于评价批处理系统性能的另一个重要准则,因而是选择批处理作业调度的重要准则。
2.处理机利用率好
由于CPU价格十分昂贵,导致处理机的利用率称为衡量系统性能的重要指标。
3.各类资源的平衡利用
要有效地利用其他各类资源,如内存、外存和I/O设备等。
三、调度算法
(一)先来先服务调度算法FCFS
既可用于作业调度,也可用于进程调度。FCFS算法有利于长作业(进程),不利于短作业(进程)。
(二)短作业优先调度算法SJ/PF
是指对短作业或短进程优先调度的算法,可以分别用于作业调度和进程调度。
缺点在于对长作业不理,且完全未考虑作业的紧迫程度,因而不能保证紧迫性作业/进程被及时处理。
(三)高优先权优先调度算法
关键在于使用静态优先权,还是使用动态优先权,已经如何确定进程的优先权。
1.静态优先权
静态优先权是在创建进程的时候确定的,且在进程的整个运行期间保持不变。确定进程优先权的依据:进程类型、进程对资源的需求和用户需求。
2.动态优先权
动态优先权是在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。
既照顾了短作业,又考虑了作业到达的先后次序,是较好的折中算法,但每次调度之前都要先进行计算,因此会增加系统开销。
(四)时间片轮转算法*
时间片轮转调度是一种最古老、最简单、最公平且使用范围最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果中时间片结束时进程还在运行,则CPU将剥夺并分配给另一个进程。如果进程在时间片结束前结束或阻塞,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它就被移到队列的末尾。
四、死锁
(一)基本概念
死锁指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态,若无外力作用,它们都将无法向前推进。
有两个资源R1和R2供进程P1和P2共享,P1已占用资源R1,P2已占用资源R2,此时若P2继续要求R1,P1要求R2,则P1和P2之间便会形成僵局,它们都在等待对方释放自己所需的资源,但同时又不释放自己已占用的资源,从而进入死锁状态。
(二)死锁产生的原因
1.竞争资源
当系统中供多个进程共享的资源如打印机、公用队列等,其数目不足以满足诸进程的需要时,会引起诸进程对于资源的竞争而产生死锁。
2.推进顺序非法
进程在运行过程中,请求和释放资源的顺序不当,也会导致产生进程死锁。
(三)死锁产生的必要条件
1.互斥条件
在某段时间内某资源只由一个进程占用,如果此时有其他进程请求该资源,则请求者只能等待,直到占有该资源的进程用毕释放。
2.请求和保持条件
指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占用,此时请求进程阻塞,但又对自己已获得的其他资源保持不发。
3.不剥夺条件
指进程已获得的资源,在未使用完之前,不能被剥夺,只能使用完由自己释放。
4.环路等待条件
指在发生死锁的时候,必然存在一个资源的环形链,即进程集合{P0,P1,P2…,Pn}中的P0正在等待一个P1占用的资源;P1正在等待由P2占用的资源,……,Pn正在等待由P0占用的资源。
(四)死锁的处理
1.预防死锁
通过设置某些限制条件,破坏产生死锁的四个必要条件中一个或者多个条件来预防发生死锁。
2.避免死锁
在资源的动态分配过程中,用某种方式去防止系统进入不安全状态,从而避免发生死锁。
3.检测死锁
及时检测出死锁的发生,采取适当措施,从系统中将已发生的死锁清除掉。
4.解除死锁
撤销或者挂起一些进程,以便回收一些资源,再将这些资源重新分配。
第四节 存储器管理
一、存储器概述
通用计算机的存储层次至少应具有三级:缓存、内存和外存。还可根据具体功能细划分为寄存器、高速缓存、内存、磁盘缓存、固定硬盘、可移动存储介质等六层。
(一)寄存器
寄存器访问速度最快,完全能与CPU协调工作,价格贵,容量小。长度一般以字为单位。由于内存的访问速度远低于CPU执行指令的速度,为缓和这一矛盾,在计算机系统中引入了寄存器和高速缓存。
(二)高速缓存(cache)
高速缓存容量比寄存器大,而比内存小,访问速度快于内存。
(三)内存
内存用于保存进程运行时的程序和数据。CPU只能从内存中取得指令和数据。
(四)磁盘缓存
磁盘的I/O速度远低于对内存的访问速度,因将频繁使用的部分磁盘信息暂时存放在磁盘缓存中,可减少访问磁盘的次数。
(五)程序的装入与重定位
将一个用户源程序变为一个可在内存中执行的程序,通常要经过以下三个步骤:首先是编译,由编译程序将用户源代码编译成若干个目标模块;其次是链接,将目标模块及所需的库函数,用链接程序链接在一起,形成一个完整的装入模块;最后是装入,由装入程序将这个装入模块装入内存。将一个装入模块装入内存有三种方式:绝对装入方式、可重定位装入方式和动态运行时装入方式。
二、连续内存分配
指为一个用户程序分配一个连续的内存空间。
(一)单一连续分配
单一连续分配是最简单的存储管理方式,只能用于单用户、单任务的操作系统中。它将内存分为系统区和用户区两部分,系统区仅提供给OS使用;用户区指的是除系统区以外的全部内存空间,提供给用户使用,其中仅能存放一道作业。
(二)固定分区分配
固定分区分配是最早的多道程序的存储管理方式,是指系统先把内存划分为若干个大小固定的分区,一旦划分好,在系统运行期间便不再重新划分。各分区大小可以不等也可以相等,但在每个分区中只装入一道作业。
缺点:由于预先规定了分区的大小,使得大作业无法装入,用户不得不采用其他技术加以补救,增加了用户的负担;内存利用率不高;
(三)动态分区分配
动态分区分配算法根据进程的实际需要,动态地分配内存空间。
1.分区分配中的数据结构
为实现分区分配,系统中必须配置相应的数据结构,用来描述空闲分区和已分配分区的情况。常用的数据结构有以下两种形式:空闲分区表和空闲分区链。
2.分区分配算法
首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法、快速适应算法。