1、第 1 页,第二章 操作系统,2.1 操作系统概述 2.2 操作系统用户界面/接口(Interface) 2.3 进程及进程管理 2.4 操作系统资源管理,第 2 页,2.1 操作系统概述,操作系统的定义 操作系统的类型 操作系统的功能,第 3 页,计算机硬件系统的组成,显示器,键盘,CPU(处理机),内存,计算机一般由:处理机(CPU)、存储器及I/O设备组成。,问题:如此多而复杂的硬件,用户如何控制和使用呢?,第 4 页,计算机软件,计算机系统的两个组成部分,硬件 (裸机),1. 裸机的使用是不方便的; 2. 在裸机之上装配一些基本的控制软件,让这些软件自动完成基本功能; 3. 在这些软件
2、的基础之上进行扩充和完善,提供给用户所要求的功能。,第 5 页,裸机,操作系统,用户程序,应用程序,操作系统是:紧靠硬件的第一层软件,第 6 页,什么是操作系统?,操作系统是计算机系统中 直接控制和管理 各种软硬件资源, 以方便用户 充分而有效地利用这些资源的 程序的集合, 实体,对象,目标, 手段,第 7 页,操作系统的作用,作用2:向用户提供接口,作用1:管理系统资源,操作系统是位于用户和计算机系统之间的接口。,处理机、存储器、I/O设备、信息管理。,第 8 页,标志着操作系统形成的两大技术(1),1) 多道程序设计技术计算机完成用户算题任务所需进行的各项工作称为一道作业。,处理机时间是宝
3、贵的资源,要尽量充分利用,减少CPU等待时间。在计算机系统中不能只放一道程序,应存放几道程序,从而引入多道程序的概念。,第 9 页,程序A和B都得到了推进,并发,特征: 多道主存中同时存放几道相互独立的程序; 宏观上并行几道程序都处于运行过程中,从用户的角度来看,它们在同时推进; 微观上串行任意一个时刻,只能有一个程序占有处理机,从处理机的角度来看,多道程序轮流使用处理机,它们是交替推进的。,第 10 页,2) 分时技术,标志着操作系统形成的两大技术(2),把CPU响应时间分成若干个小时间单位(时间片)轮流分配给各个联机用户使用。如果一个用户程序在分配给它的时间片内没有完成,则暂时中断执行,等
4、待下一轮计算。,问题背景:联机工作方式让用户通过控制台(终端)直接操作、控制自己程序运行的操作方式称为联机工作方式。但是如何让一台计算机同时为多个用户服务,而且还能让每个用户都觉得自己是在独占这台计算机呢?,第 11 页,1)批量操作系统,把用户提交的作业(程序、数据和处理步骤)成批输入计算机,然后由作业调度程序自动选择作业运行。,优点:作业流程自动化,效率高(缩短作业间的交接时间,减少处理机的空闲等待时间),吞吐率高,缺点:无交互手段,调试程序困难,第 12 页,2)分时操作系统,分时系统的提出:解决人机交互问题,进行及时响应,多用户共享主机。 一台连接多个终端的计算机称为分时计算机。 在分
5、时计算机上采用分时技术实现的操作系统称为分时操作系统。 特点: 多路调制性:多个用户使用一台计算机; 独占性:时间片轮转使得用户感觉独享机器(3S); 交互性:问答“会话”的命令交互方式;,第 13 页,每个用户都获得了满意的响应速度,感觉系统是为其独享的,多路性、 独占性、 交互性,第 14 页,3)实时操作系统,实时系统的提出:分时系统的响应往往要等待一个循环周期,实时系统必须在规定的时间内对用户请求或外部事件及时响应。 能满足用户响应时限要求的操作系统称为实时操作系统。,实时控制 实时采集现场数据,完成自动化控制 特点:响应速度足够快可靠性高 例:导弹导航,实时信息处理 根据用户要求进行
6、信息检索和处理 特点:强大的数据库操作简便、查询快速 例:远程订票系统,第 15 页,4)个人计算机操作系统,磁盘操作系统其代表是 MSDOS设备管理、文件系统功能 GUI的多任务操作系统Windows图形用户界面多任务、多线程可剥夺式调度段页式虚拟存储管理技术动态连接,第 16 页,3、操作系统的功能,处理机管理,存储管理,设备管理,软件资源管理,存储分配和存储无关性,存储保护,存储扩充:虚拟存储器,设备无关性:逻辑名访问,设备分配:独享、共享、虚拟技术,设备的传输控制:启动、中断、结束,提出调度策略,给出调度算法,具体实施CPU的分派,提供简单统一资源管理方法,解决信息共享 数据存取控制和
7、保密等问题,第 17 页,2.2 操作系统用户界面/接口(Interface),2.2.1 传统的操作系统用户界面 2.2.2 图形化的用户界面,第 18 页,2.2.1 传统的操作系统用户界面,1、操作命令用户利用操作命令来组织作业的工作流程和控制作业的运行。 2、系统功能调用在源程序一级使用系统功能调用请求操作系统服务。,第 19 页,1、操作命令,1)键盘命令:文件管理类编辑修改类编译、连接、运行类输入数据类操作方式转换类申请资源类 2)作业控制语言:批处理系统中提供的JCL,用于编写操作说明书,操作系统据此对作业实施运行控制。,第 20 页,2、系统功能调用,用户编程时用到计算机的各种
8、资源或执行与 系统有关操作,由系统功能调用实现。,高级语言的隐式调用:如c语言的putchar( ) printf( ) open( ),低级语言的直接调用:,mov ah 02h(显示一个字符的功能调用号) mov dl c int 21h(dos软中断指令,访管指令),putchar(c);,第 21 页,系统功能调用,操作命令:作业控制语言键盘命令,用户,操作系统,计算机,返回,传统的操作系统用户界面,第 22 页,2.2.2 图形化的用户界面,操作命令界面 1、菜单驱动 2、图符(图标)驱动 3、图形化用户界面 系统功能调用系统提供API函数(应用程序编程接口)和系统定义的消息形式。与
9、传统系统调用的主要不同点是函数库和动态链接技术的支持,返回,第 23 页,2.3 进程及进程管理,2.3.1 程序的顺序执行和并发执行 2.3.2 进程的基本概念 2.3.3 进程的同步和互斥 2.3.4 线程 2.3.5 死锁,第 24 页,1)程序的顺序执行,程序顺序执行的特征顺序性 顺序程序的各个操作是顺序执行的封闭性 程序一旦开始执行,其计算结果不受外界因素的影响可再现性 初始条件不变的情况下,程序多次执行的结果一样,一个计算过程往往由若干个简单的操作所组成。如果这些操作必须按某种先后次序来执行,那么这样一类计算过程称为程序的顺序执行过程,这种程序称为顺序程序。,main( ) int
10、 a;int b;scanf(“%d”, ,第 25 页,2)程序的并发执行,若干个程序段同时在系统中运行,这些程序段的执行在时间上是重迭的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,称为程序的并发执行。,程序并发执行的特征:失去了程序的封闭性和可再现性程序与计算不再一一对应程序并发执行的直接或间接相互制约,并发程序的描述:cobegin、coend可并发执行标记cobeginS1; S2; ; Sn;coend 表示语句S1,S2,Sn可以并发执行。,第 26 页,程序A和B都得到了推进,并发,特征: 多道主存中同时存放几道相互独立的程序; 宏观上并行几道程序都处于运行过程中,从
11、用户的角度来看,它们在同时推进; 微观上串行任意一个时刻,只能有一个程序占有处理机,从处理机的角度来看,多道程序轮流使用处理机,它们是交替推进的。,第 27 页,2. 进程的定义,所谓进程,就是一个程序在给定活动空间和初始环境下,在一个处理机上的执行过程。,并发程序的活动规律:执行-暂停-执行,如何让并发程序的执行获得可再现性,这个问题需要依靠控制程序的执行过程来解决。因此我们引入“进程”的概念来描述程序的执行过程。,程序是指令的有序集合,是一个静态的概念,不包含任何运行的含义。,第 28 页,讨论:进程和程序这两个概念有什么区别?,程序 进程 静态的概念 动态的概念,处理机上的一次执行过程
12、不能并行活动 独立的运行单位,能并行活动 不是一个基本单位 是处理机调度、竟争资源的基本单位 一个程序可对应多个进程 一个进程可以执行多个程序段,类似于乐曲与乐曲的一次演奏之间的关系。,第 29 页,3. 进程的基本状态及变迁,(1)进程的三种基本状态,就绪状态(ready) 存在于处理机调度队列中的那些进程,它们已经准备就绪,一旦得到CPU,就可以立即运行,这些进程所处的状态称为就绪状态。,运行状态(running) 当进程得到处理机控制权时,它的程序正在处理机上运行,该进程所处的状态为运行状态。,等待状态(wait) 若一个进程正等待着某一事件发生(如等待输入输出操作的完成)而暂时停止执行
13、,这时,即使给它CPU时间,它也无法执行,则称该进程处于等待状态(又称为阻塞状态或挂起状态)。,第 30 页,(2)进程状态的变迁及原因,注意:有一种状态变迁是永远也不可能发生的。,进程随着自身的推进和外界条件的变化而从一个状态变换为另一个状态称为状态变迁。,第 31 页,4. 进程的组成,一个进程包含4个组成部分: 程序描述进程要完成的功能的指令序列; 数据程序加工的对象; 工作区程序执行使用的内存区域,如用户栈或系统栈; 进程控制块存放进程控制和管理信息的数据结构。,进程控制块PCB(Process Control Block)是进程存在的标志!是进程的“档案袋”,是进程动态特征的集中反映
14、。 进程创建时建立PCB。 在进程的生命周期内,OS通过对PCB的管理来实现对进程的管理。 进程撤消时删除相应的PCB。,第 32 页,PCB是纪录进程动态特性,运行控制等信息的数据结构。 是进程存在的唯一标志,是进程的唯一实体。,动态特性,运行控制,第 33 页,5. 进程控制,(1)进程控制的功能对系统中的进程实施有效的管理和控制。具体表现为控制进程进入不同的状态。,执行时不可中断的系统调用,进程的控制动作由操作系统完成; 操作系统提供相应的原语以备调用,(2)进程控制功能的实现,第 34 页,进程创建创建一个新进程 进程撤消撤消一个已完成任务的进程进程阻塞使进程转换为等待状态进程唤醒唤醒
15、一个等待进程,(3)进程控制原语,第 35 页,进程的互斥,临界资源一次仅允许一个进程使用的资源称为临界资源。 许多物理设备(如打印机等)和软件资源(如变量、数据、队列等)都具有这种独占性的特点。 临界区在进程中访问临界资源的那段代码称为临界区。 要注意区分临界资源与临界区。 互斥当一个进程正在访问某临界区时,不允许其它进程进入其相应的临界区,这种进程间相互制约的关系称为互斥。 例如:飞机订票系统中各个订票点对机票库的访问,第 36 页,进入区,临界区,退出区,进入区,临界区,退出区,. .,. .,. .,. .,改变资源状态,释放资源 唤醒等待进程,进程 1,进程 2,等待资源释放,进程的
16、互斥进入临界区,第 37 页,问题:如何保证进程之间是互斥的进入临界区的呢?,答:操作系统提供了进程间同步和互斥的机制,程序中使用这些机制来保证执行中的互斥进入。其中最常见的机制就是信号灯。,信号灯是一种同步机制,通过对信号灯的P、V操作,进程可以实现相互间的互斥。,第 38 页,1)信号灯概念 确定的二元组(s,q)表示信号灯,其值只能由P、V操作改变。,初值为非负的整型变量,代表资源实体 s0,代表可供使用的资源实体数 s0,表示正在等待进入临界区的进程数,初始状态为空的队列,2、信号灯的p、v操作,第 39 页,p操作:p(s),为原子操作(执行不可打断),表示申请一个资源。,p(s),
17、0,程序继续执行,0,进程被阻,插入信号灯的等待队列 绝对值为等待队列中请求该资源的进程数,2、信号灯的p、v操作,第 40 页,V操作:V(S),原子操作,表示释放一个资源。,V(S),0,进程继续执行,0,表示等待队列中仍有因请求该资源而阻塞的进程,唤醒队列上的第一个进程,然后继续执行,2、信号灯的p、v操作,第 41 页,对于两个并发进程,互斥信号灯的取值仅取1, 0, -1三个值,而且有: 若mutex=1,则表示没有进程进入临界区。 若mutex=0,则表示有一个进程进入临界区。 若mutex=-1,则表示一个进程进入临界区,另一个进程等待进入。,3、用信号灯实现进程互斥,第 42
18、页,用信号灯的p、v操作实现A、B两个进程互斥,q是临界资源。设mutex是用于互斥的信号灯,赋初值1,表示该临界资源未被占用。,mutex-1=0 mutex=0,mutex+1=0 mutex=0 唤醒B,mutex=1,mutex+1=1 mutex=1,第 43 页,4、进程同步,1)同步的概念并发进程在一些关键点上可能需要相互等待与互通消息,这种相互制约的等待与互通消息称为同步。,同步进程间是一种合作关系,门诊医生:开化验单; 等化验结果;继续诊病;,化验员:等化验单; 化验;填写化验结果;,例如:病人就诊,第 44 页,2)用信号灯实现进程的同步设计算进程cp和打印进程iop共用一
19、个单缓冲区buf,其中:cp进程不断地计算数据并送入缓冲区buf中,iop进程从buf中取出数据并打印。,4、进程同步,cp,iop,buf,第 45 页,设置两个信号灯sa、sb。sb表示缓冲区有无空位置存放新信息,初值为1。sa表示缓冲区中是否有可供打印的计算结果,初值为0。,2)用信号灯实现进程的同步,4、进程同步,第 46 页,上述两进程间的同步算法描述如下:,main( ) int sa=0; /*表示buf中有无信息*/int sb=1; /*表示buf中有无空位置*/cobegincp( );iop( );coend; ,第 47 页,cp( ) while(计算未完成)得到一个
20、计算结果;p(sb);将数据送到buf中;v(sa); ,上述两进程间的同步算法描述如下:,iop( ) while(打印工作未完成) p(sa);从buf中取出信息;v(sb);从打印机输出该信息; ,第 48 页,用信号灯的p、v操作实现两个进程同步,sb-1=0 sb=0,sa+1=0 sa=0 唤醒iop,sb=1,sa=0,sb+1=0 sb=0 唤醒cp,第 49 页,2.3.4 线程,1、什么是线程 是比进程更小的一个活动单位,是进程的一个执行路径,一个进程可以有多条执行路径,即线程。 线程: (1)进程中的一条执行路经 (2)有自己私用的堆栈和处理机执行环境(尤其是处理机寄存器
21、) (3)与父进程共享分配给父进程的内存 (4)是单个进程所创建的许多个同时存在的线程中的一个。,第 50 页,进程控制块 pcb,用户地 址空间,线程1,线程2,进程,程序与数据,线程可以共享父进程的所有程序和全局数据;,第 51 页,2、线程的状态和特点,(1)运行:正占用CPU,执行它的程序 (2)就绪:等待被调度去执行 (3)等待:等待另一个线程开锁唤醒。 (4)终止:已退出,但该信息还没有被其它线程所收集。,第 52 页,2.3.5 死锁,1、概念 各个并发进程彼此相互等待对方所拥有的资源, 且在得到对方的资源之前不会放弃自己所拥有的资源, 这种每个进程都占用了一定的资源但又都因得不
22、到全部所需资源而不能向前推进的现象称为死锁。,第 53 页,2、产生死锁的必要条件,(1)互斥条件:涉及的资源是非共享的,即进程对它所需要的资源进行排它性控制。 (2)不剥夺条件:进程所获得的资源在未使用完之前,不能被其它进程强行夺走,即只能由获得该资源的进程自己释放。 (3)部分分配:进程每次申请它所需要的一部分资源,在等待一新资源同时,继续占用已分配到的资源。 (4)环路条件:存在一种进程的循环链,链中的每一个进程已获得的资源同时被进程链中的下一个进程所申请。,第 54 页,3、死锁的预防,(1)采用静态分配方法:预先分配进程所需的所有共享资源。破坏了部分分配条件 (2)采用有控分配方法:分配资源时,检查是否可能发生死锁,若可能则拒绝分配。例如:把系统中所有的资源编号,规定只能按序号递增的顺序申请资源。破坏了环路条件,