版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《操作系统》课件OperatingSystem(OS)(48学时)1《操作系统》教材与参考书操作系统原理教程,张丽芬,电子工业出版社《操作系统概念》高教版深入理解Linux内核,陈莉君等译,中国电力出版社WindowsInternals,《深入解析Windows操作系统》潘爱民译,电子工业出版社Windows内核原理与实现,潘爱民,电子工业出版社第2页WINDOWS操作系统
是由美国微软公司开发的窗口化操作系统,最新的版本是Windows8UNIX操作系统
1969年诞生于贝尔实验室,有很多种,如AT&T的UnixV、Sun的Solaris、HP的UnixMAC操作系统
是美国苹果公司为自己设计的操作系统Linux操作系统
是目前全球最大的一个自由免费软件,其功能可与Unix和Windows相媲美,用法与Unix类似
第3页第1章操作系统概论1.1操作系统的定义1.2操作系统的形成与发展1.3操作系统功能、服务和特性1.4操作系统的进一步发展1.5用户与操作系统接口1.6操作系统的运行环境1.7操作系统的设计规范和结构设计第4页1.1操作系统的定义计算机系统从下到上划分为四个层次。单向调用关系:外层的软件必须以事先约定的方式调用内层软件或硬件提供的服务。称这种约定为接口。第5页计算机系统的组成应用程序实用程序操作系统硬件操作系统:是紧挨着硬件的第一层软件,为其他软件提供基础的运行环境。实用程序:支持其他软件编制和维护的软件。如编译程序、编辑程序、命令解释器应用程序:特定应用领域专用的软件。由用户或专门的软件公司编制,用于解决用户的实际问题,如数据库管理软件、计算机辅助设计、航空订票系统、银行管理系统。第6页操作系统的定义OS是由一系列程序模块组成的一个大程序。依据各种管理和调度策略,对计算机的软、硬件资源进行统一的管理和调度,合理地组织计算机的工作流程,以提高资源的利用率。操作系统只包含操作系统内核。如Windows系统的Ntoskrnl.exe。第7页操作系统的设计目标方便性:方便用户使用计算机。用户通过操作系统来使用计算机。有效性:使计算机系统能高效可靠地运转,提高系统资源的利用率。还要便于操作系统的设计、实现和维护。第8页1.2操作系统的形成与发展1.2.1顺序处理(手工操作阶段)1.2.2简单的批处理系统1.2.3多道成批处理系统1.2.4分时系统1.2.5实时系统1.2.6嵌入式系统第9页1.2.1顺序处理(手工操作)20世纪40年代~50年代中期计算机:CPU、主存、卡片输入机、打印机、带有显示灯和开关的操作控制台。没有操作系统。程序员直接操作计算机硬件,调度作业运行。作业步:编写程序、编译程序、链接装配程序、装入可执行程序。第10页1.2.2简单的批处理系统20世纪50年代后期~60年代中期有一个监控程序软件常驻内存(主存)操作员将多个作业按序成批地放在一个输入设备上。监控程序自动控制输入设备一次装入一道作业,并启动运行。(单道批处理)早期联机批处理、脱机批处理第11页1.2.3多道成批处理系统
随着硬件通道、中断、缓冲技术等的出现,使得计算机在组织结构上发生了重大变革。使原先以CPU为中心的体系结构,转变为以主存为中心。
第12页[通道]:独立于CPU,专门用来控制输入/输出设备的I/O处理机,比CPU便宜。连接着主存和外设。使CPU和外设并行操作。[中断]:当I/O设备完成传输后,通过中断机构向CPU报告完成情况。[缓冲技术]:在主存设置缓冲区,来缓存用户的输入和输出,改善I/O设备和CPU之间速度不匹配的问题。第13页多道程序设计:是指在主存同时存放多个作业,使之同时处于运行状态,共享系统中的各种资源。在单CPU系统中。宏观上,各个作业都已开始运行,但都未运行完;微观上,各个作业是串行执行的,在任何特定时刻,只有一个作业在处理机上运行。第14页引入多道程序设计技术的根本目的是提高CPU的利用率,充分发挥系统设备的并行性。并行性:包括程序之间、CPU与设备之间、设备与设备之间的并行操作。
第15页衡量批处理系统的性能指标资源利用率:指在给定时间内,系统中某一资源(如CPU、存储器、外部设备等)实际使用时间所占比率。吞吐量(Throughput):指单位时间内系统所处理的信息量。通常以每小时或每天所处理的作业个数来度量。周转时间:指从作业进入系统到作业退出系统所用的时间。第16页
作业编号JOB1JOB2JOB3
作业类型 计算型
I/O型I/O型占用主存 50k100k80k 需磁盘情况NONO Yes
需终端情况 NO Yes NO 需打印机情况NO NO Yes
运行所需时间5分钟15分钟 10分钟第17页[例]
设一个计算机系统有256K主存,一个磁盘、一个终端和一台打印机。三个作业:JOB1、JOB2、JOB3。单道批处理作业1运行5分钟;作业2等待5分钟运行15分钟;作业3等待20分钟运行10分钟。第18页5分钟15分钟10分钟5分钟10分钟15分钟多道批处理
三个作业同时装入主存,由于几乎不同时使用同类资源,在15分钟内将全部完成。表1.2单道批处理与多道批处理对比
单道
多道(3道)处理机利用率5/30=17%5/15=33% 存储器利用率30%平均230/256=90%磁盘利用率33%=10/3067%=10/15 打印机利用率33%67% 完成所需时间30分钟15分钟
吞吐量
6jobs/小时12jobs/小时平均周转时间
18分钟10分钟第19页批处理系统特点优点:系统吞吐量大,资源利用率高。适合计算量大、自动化程度高的成熟作业。缺点:用户与作业无法交互,作业平均周转时间较长。第20页1.2.4分时系统工作方式:一台主机连接有若干个终端。用户交互式地向系统提出命令请求,系统接受命令,采用时间片轮转方式处理请求,并在终端上显示结果。如在大型数据库上的查询。分时:多用户分时使用CPU。将CPU的单位时间(如1秒钟)划分成若干个时间片。第21页分时系统的特点同时性:若干用户同时使用一台计算机。独立性:每个用户占有一台终端,独立操作,感觉不到别的用户存在。交互性:用户可通过终端与系统进行人机对话。及时性:用户的请求能在较短时间内得到响应。(响应时间:从用户发出请求到系统开始响应所需的时间)。第22页作业处理系统批处理系统:目标是提高系统资源的利用率。适用于比较成熟的大型作业。可在后台执行。不需要用户频繁干预。分时系统:目标是对用户请求的快速响应。适用于短小作业。终端键入命令。第23页1.2.5实时系统是指计算机能对随机发生的外部事件做出及时的响应和处理。是一个专用系统。不以作业为处理对象,只有几个由外部事件触发的任务。实时过程控制:工业生产中的自动控制,飞机导航、导弹发射等。实时信息处理:民航机票的预订、查询,银行系统的借贷,情报信息检索等系统。第24页实时系统特点(1)实时性。其响应时间由被控制对象所能承受的延迟来确定。(2)可靠性。要具有容错能力,可采用双工机制:一台主机;一台后备机。(3)确定性。是指系统按照固定的、预先确定的时间执行指定的操作。第25页1.2.6嵌入式系统以实际应用为中心、以计算机技术为基础、软硬件可裁剪的专用计算机系统。软件要求固化存储。通常是一个多任务可抢占式的实时操作系统,只有满足实际需要的有限功能,如任务调度、同步与通信、主存管理、时钟管理等。嵌入式Linux,WindowsCE。第26页1.3功能、服务和特性三种基本类型:批处理系统;分时系统;实时系统。通用操作系统:兼有批处理、分时和实时三者或其中两者的功能。
[如]分时和批处理相结合,将分时任务作为前台任务,将批处理作业作为后台任务,便是分时批处理系统。第27页操作系统的功能(1)处理机管理:进程管理。处理机如何调度的问题:FCFS、优先级、时间片轮转?(2)存储器管理:主存管理。存储分配、存储保护、主存扩充。(3)设备管理:涉及对系统中各种输入、输出设备的管理和控制。分配设备,控制设备传输数据。(4)文件管理:将程序、数据、操作系统软件等组织成文件,存放在磁盘或磁带上,方便用户访问。第28页为了管理系统资源,操作系统必须掌握系统资源的当前状态信息。进程进程表存储器存储表I/O设备I/O设备表文件文件表第29页操作系统提供的服务用户接口:用户通过OS来使用计算机程序执行:装入内存执行,能结束执行I/O操作:可能涉及到文件或I/O设备文件系统操作:向用户提供按名存取文件通信服务:进程之间(共享内存/消息传递)错误检测和处理:能检测和处理错误资源分配:多进程并发,资源共享记帐:统计用户对系统资源的使用情况保护:控制用户有限制地存取系统资源第30页操作系统的特性(1)并发性:是为了提高计算机的处理能力而采用的一种时间上重叠操作的技术。是指系统中存在着若干个逻辑上相互独立的程序,都已被启动执行,都还没有执行完,竞争系统资源。(2)共享性:是指系统中的资源可供系统中多个并发执行的进程共同使用。如打印机、磁带机、磁盘等。
支持系统并发性的物质基础是资源共享第31页操作系统的特性(3)虚拟性:把共享资源的一个物理实体变为若干个逻辑上的对应物。如,CPU的分时共享;虚拟存储器技术。(4)异步性(随机性):有限的资源共享使并发进程之间产生相互制约关系。各个进程何时执行、何时暂停、以怎样的速度向前推进、什么时候完成等都是不可预知的。第32页1.4操作系统的进一步发展
个人计算机操作系统多处理机操作系统网络操作系统分布式操作系统第33页个人计算机操作系统单用户单任务OS:只允许一个用户上机、只允许用户程序作为一个任务运行。如MS-DOS。单用户多任务OS:只允许一个用户上机,但允许用户有多个任务,并发执行。如WindowsXP多用户多任务OS:允许多个用户通过各自的终端,使用同一台主机,共享系统资源,每个用户又可有多个任务,并发执行。如UNIX、Linux。第34页多处理机操作系统多处理机采用紧耦合方式进行连接,共享主存非对称多处理(ASMP):主处理机运行操作系统,其他处理机运行用户作业,主处理机为其他处理机分配和调度任务,主从模式。对称多处理(SMP):操作系统和用户程序可安排在任何一个处理机上运行,各处理机共享主存和各种I/O设备。第35页网络中的各台计算机都配有各自独立的操作系统,网络操作系统把它们联系起来,并为它们提供通信和网络资源共享。Windows的自上而下的网络栈:网络应用程序、网络API、网络API驱动程序netbios.sys、协议驱动程序tcpip.sys等。与I/O系统和标准API紧密地集成在一起。第36页
网络操作系统网络操作系统的模式:客户/服务器(Client/Server)模式。服务器是一个瓶颈。对等模式(Peer-to-peer):系统内的节点机(nodes)是对等的,既可作为客户机,又可作为服务器。在网络中既无服务处理中心,也无控制中心。
第37页分布式操作系统分布式系统:是由多个分散的计算机通过网络连接而成的一个统一的计算机系统。可以获得极高的运算能力和广泛的数据共享。要求连网的多机有一个统一的操作系统没有标准协议。完全分布式系统仍在研究中。第38页集群(cluster)是一种分布式系统。集群节点私有OS。有一层集群软件运行在集群节点之上。第39页单一入口点节点机节点机节点机站点服务器智能卡操作系统智能卡中隐藏着一个微型操作系统。智能卡中的集成电路包括:中央处理机、存储部件、对外联络的通信接口。智能卡实际上是一台单片机系统。有非常严格的运行能耗和存储空间的限制(从几KB到几百KB)。第40页一种智能卡结构第41页CPUROM96KEEPROM64KRAM3KI/O异步通信智能卡读写器
读写器发操作命令,智能卡接收命令,操作系统解释命令,并调用程序处理数据,产生应答信息送读写器。1.5用户与操作系统接口操作接口:命令语言或窗口界面是用户使用计算机系统的主要接口。编程接口:系统调用是用户与操作系统之间的编程接口。第42页命令语言操作系统提供一个命令解释程序来支持命令语言的解释执行。执行用户当前输入的命令。用户态。Linux的1号进程为每个终端用户建立一个运行shell命令解释程序的终端进程,该进程不断地处理用户发来的命令。第43页窗口界面系统初始化时,Windows为终端用户生成了一个运行Explorer.exe程序的进程,它是一个具有窗口界面的解释程序,打开一个桌面窗口。当点击桌面内的某个实用程序时,解释程序就会产生一个新进程。该新进程也会弹出一个窗口,用户可以点击窗口内的子命令,当需要参数时,就会弹出一个对话框。第44页系统调用系统调用就是操作系统内核提供的一些子程序。操作系统内核向用户提供了一组系统调用接口。用户通过系统调用接口,向操作系统提出资源请求或获得系统服务。第45页系统调用现在的系统提供了非常多的库程序,用户编程时可使用库函数,而不必直接调用系统调用。Windows系统提供的Win32API函数集合,是一些库函数,由库函数去调用操作系统的系统调用。文档化,易使用。第46页系统调用的执行过程第47页
用户程序
┆系统调用命令
┆
┆┆┆┆┆┆┆
操作系统内核系统调用命令程序子程序子程序切换到用户态切换到核心态核心态/用户态在计算机中存在两类性质不同的程序:操作系统内核程序;用户程序。前者是后者的管理者和控制者,所以操作系统内核应该享有某些特权。为此将CPU的运行状态分为核心态(管态)和用户态(目态)。第48页在核心态下,允许执行处理机的全部指令集,访问所有的寄存器和存储区;在用户态下,只允许执行处理机的非特权指令,访问指定的寄存器和存储区。用户态到核心态的转换由硬件完成;核心态到用户态的转换由操作系统程序执行后完成。处理机状态字(PSW)中有2个执行方式位。00为核心态,11为用户态。第49页操作系统的大部分功能模块运行在核心态,有些功能模块通过创建用户进程运行在用户态,例如,命令解释程序。运行在用户态的一组系统进程与用户进程构成了client/server模式,如Windows系统的用户登录和注销、打印服务、事件日志等。第50页第51页操作系统内核(Ntoskrnl.exe)核心态用户态系统进程用户进程Windows子系统进程Csrss.exeWin32K.sys1.6操作系统的运行环境通过中断和异常,CPU能从用户程序的运行转入操作系统内核程序的运行。中断:异步事件异常:同步事件第52页中断中断是处理机与外部设备打交道的重要途径,与当前正在执行的线程和进程无关。如I/O结束中断,时钟中断。不同中断有不同优先级。处理高级中断时会临时屏蔽低级中断。中断是一个重要的并发性来源。内核代码可以触发一个软件中断来启动线程调度,相当于打断了当前线程的执行,让处理机切换到其他的线程。处理机优先级:指处理机当前正运行程序的中断响应级别。第53页异常异常(陷入)是指程序自己产生的特殊事件。不能被屏蔽,一旦出现应立即处理。异常:程序的非法操作码、地址越界、除数为0、存储器管理中的页面失效、系统调用。第54页中断、异常为处理方便,系统为每个中断/异常信号都编制了相应的处理程序。这些处理程序的入口地址存放在称为中断/异常向量的主存单元。中断处理程序或系统调用程序,在中断或陷入时,利用用户进程的核心栈空间,嵌入用户进程中运行。第55页1.7操作系统的设计规范系统效率:体现系统效率的指标有资源利用率、吞吐量、周转时间、响应时间等。系统可靠性:系统发现、诊断和恢复故障的能力。可移植性:指从一种硬件环境移植到另一种硬件环境,系统仍能正常工作。可伸缩性:系统对添加软、硬件资源的适应能力。兼容性:系统执行为其他OS或为同一系统早期版本所编写的软件的能力。安全性:系统应具有一定的安全保护措施。第56页1.8小结操作系统的定义多道程序设计技术的概念及特点操作系统三种基本类型,主要特点批处理操作系统的性能指标操作系统的功能操作系统的特性接口:操作接口、编程接口/系统调用第57页1 早期操作系统设计的主要目标是什么?2 操作系统是资源管理程序,它管理系统中的什么资源?3 为什么要引入多道程序系统?它有什么特点?4 叙述操作系统的基本功能。5 批处理系统、分时系统和实时系统各有什么特点?各适合应用于哪些方面?6 操作系统的特性?7 衡量OS的性能指标有哪些?什么是吞吐量、响应时间和周转时间?8 什么是嵌入式系统?9 什么是对称多处理?它有什么好处?10 为了实现系统保护,CPU通常有哪两种工作状态?各种状态下分别执行什么程序?什么时候发生状态转换?状态转换由谁实现的?11什么是系统调用?什么是特权指令?特权指令执行时,CPU处于哪种工作状态?12操作系统通常向用户提供哪几种类型的接口?其主要作用是什么?第58页第2章进程管理
在操作系统中,最核心的概念是进程,其他所有的内容都是围绕着进程展开的。第60页本章主要内容进程的引入和概念进程的描述:PCB、状态、进程的控制:创建、撤消、阻塞、唤醒…处理机调度:分配CPU给某一进程线程的引入第61页2.1进程的引入及其概念1.程序的顺序(串行)执行:计算机每次只运行一道程序。如,单道批处理系统。封闭性:程序在运行时独占全机资源,因此,这些资源的状态只能由该程序决定和改变,不受外界因素影响。可再现性:只要初始条件相同,无论程序连续运行,还是断断续续地运行,程序的执行结果不变。第62页优点:由于顺序程序的封闭性和可再现性,为程序员调试程序带来了很大方便。缺点:由于资源的独占性,使得系统资源利用率非常低。第63页2.程序的并发执行
并发执行:计算机同时运行多个程序,即多个程序在CPU上交叉运行。以资源共享为条件增强计算机系统的处理能力,提高资源利用率。第64页[例]作业i的输入、计算和输出操作分别用Ii、Ci、Pi表示。多个作业的并发执行如下图所示。第65页I1I2I3I4P1C1P2P3C2C3P4C4并发执行程序并发执行的特征:(1,2,3)(1)失去了程序的封闭性和可再现性在并发执行时,多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行环境失去了封闭性,也将导致运行结果失去了可再现性。第66页因共享资源或协调完成同一任务而引起的。第67页[例]
typea.c|more这条命令就需要管道符号两边的程序相互协作。这是一种直接制约关系。[例]并发执行的程序A和B共享一台打印机。A和B之间就产生了间接制约关系。(2)并发执行的程序间产生了相互制约关系程序是完成特定功能的指令序列,是静态的CPU执行的活动是一个动态概念,是程序的执行过程。第68页(3)程序与CPU执行的活动之间不再一一对应[例]一个编译程序——多个编译活动:分时系统中,多个用户都调用C编译器对自己的源程序进行编译。实际系统只保留一个编译程序,而CPU正在为多个用户进行编译。这里要求编译程序必须是可再入程序(reentrycode)。可再入程序具有这样的性质:它是纯代码,即在执行过程中自身不改变;可被多个程序同时调用的程序,调用它的程序应该提供各自独立的数据区。第69页进程的概念操作系统用“进程”来描述系统中各并发活动进程(process)又叫做任务(task)进程是程序的一次执行过程进程是程序在一个数据集合上顺序执行时发生的活动第70页进程具有的特性动态性。进程是程序的一次执行过程,是临时的,有生命期的。独立性。进程是系统进行资源分配和调度的一个独立单位。并发性。多个进程可在处理机上交替执行。结构性。系统为每个进程建立一个进程控制块。第71页进程和程序进程是动态的,程序是静态的。程序是有序代码的集合,进程是程序的执行,没有程序就没有进程。通常,进程不可以在计算机之间迁移,而程序可以复制。进程是暂时的,程序是永久的。进程包括程序、数据和进程控制块。通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。进程可创建其他进程,而程序不能形成新的程序。第72页2.2进程的描述PCB是进程存在的唯一标识通常,一个进程的信息包括:至少一个可执行程序一个独立的地址空间一个执行栈区(子程序调用,系统调用,进程切换)打开的文件、申请使用的I/O设备等第73页
进程控制块(PCB,processcontrolblock)
进程描述符(processdescriptor)进程地址空间第74页系统程序及数据区核心栈用户数据
用户程序用户栈系统空间用户空间04G2G系统内核及数据区核心栈用户数据
用户程序用户栈系统空间用户空间04G2G内核代码可以访问当前进程的整个4GB地址空间PCB中的基本信息进程标识数:用于唯一地标识一个进程,通常是一个整数。
外部标识符,由用户使用。如:send进程、print进程等。进程的状态、调度、存储器管理信息:是调度进程所必需的信息,包括进程状态、优先级、程序在主存地址、在外存的地址等。进程使用的资源信息:分配给进程的I/O设备、正在打开的文件等。第75页CPU现场保护区:保存进程运行的现场信息。包括:程序计数器(PC)、程序状态字、通用寄存器、堆栈指针等。记帐信息:包括使用CPU时间量、帐号等。
进程之间的家族关系:类UNIX系统,进程之间存在着家族关系,父/子进程。Windows进程之间不具有父子关系。进程的链接指针:链接相同状态的进程。第76页Unix:structproc{……};Linux:structtask_struct{……};P146Windows执行体进程块(EPROCESS)第77页EPROCESSKPROCESSETHREADKTHREAD内核实现线程调度,调度信息在KTHREAD结构中实例进程的状态进程在其生命期内一直处在一个状态不断变化的过程中。为了刻画这一变化过程,操作系统把进程状态分成若干种,并约定各种状态之间的转换条件。状态信息记录在进程的PCB结构中。第78页(1)运行态(running):进程正在CPU上运行。单CPU系统一次只有一个运行进程;多CPU系统可能有多个运行进程。(2)阻塞态(blocked):又称等待态。当进程因等待某个条件发生而不能运行时所处的状态。等待I/O完成,等待一个消息(3)就绪态(ready):已获得除CPU之外的全部资源,只要再获得CPU,就可执行。第79页第80页运行态就绪态阻塞态被抢先进程调度等待事件事件完成
进程的三个基本状态及其转换运行态--阻塞态:是由运行进程自己主动改变的。
[例]一个正在运行的进程启动了某一I/O设备后,使自己由运行态变为阻塞态,等待该I/O设备传输完成。阻塞态--就绪态:是由外界事件引起的。
[例]当I/O设备传输完成时,请求中断,由I/O中断处理程序把因等待这一I/O完成而阻塞的进程变为就绪态。第81页由进程状态转换图可以看出运行态--就绪态:处于运行态的进程被剥夺CPU。[例](1)采用时间片轮转法调度:当前进程用完时间片,由运行态变为就绪态。(2)采用优先级调度:若有更高优先级的进程变为就绪态,当前进程被剥夺CPU,由运行态变为就绪态。就绪态--运行态:被进程调度程序选中。第82页(4)创建态:刚刚建立,未进就绪队列。(5)终止态:已正常结束或故障中断,但尚未撤消。暂留在系统中,方便其它进程去收集该进程的有关信息。第83页
创建态—就绪态:操作系统准备好再接纳一个进程时,把一个进程从创建态变为就绪态。为了确保系统的性能,大多数系统都限制创建的进程数量。第84页图2.3进程的五种状态创建态运行态阻塞态终止态进程调度被抢占事件完成等待事件进程完成就绪态创建新进程接纳进程的组织(1)线性表:把所有进程的PCB存放在一个数组中,系统通过数组下标访问每个PCB。第85页
PCB(0)
PCB(1)
PCB(2)…….
PCB(n-1)
PCB(n)图2.4采用线性表管理进程控制块(2)链接表:把具有相同状态的PCB组成一个队列。处于就绪态的进程可按照某种策略排成多个就绪队列。处于阻塞态的进程又可以根据阻塞的原因不同组织成多个阻塞队列。如,等待磁盘I/O队列,等待磁带I/O队列等。第86页第87页就绪队列事件1的等待队列事件n的等待队列事件1出现事件n出现提交调度被抢先等待事件1等待事件n处理机完成2.3进程控制进程控制:是指系统使用一些具有特定功能的程序段来创建、撤消进程,以及完成进程各状态之间的转换。进程控制是由操作系统内核实现的。是属于原语一级的操作,不能被中断。第88页创建原语(1)创建进程的时机批处理系统中,会为每个提交的作业创建一个进程。分时系统中,系统会为每个登录用户创建一个终端进程。交互式系统中,键入一个命令或点击一个图标都会开始一个新进程。第89页在UNIX和Windows系统中,用户可以同时打开多个窗口,每个窗口都对应一个进程。UNIX的系统调用fork()会创建一个与调用进程具有相同副本的进程,子进程通过execve()系统调用会运行一个新的程序。Windows中的Win32函数调用CreateProcess()创建新进程,运行新程序。第90页(2)创建原语的功能扫描进程表,找到一个空闲的PCB。为新进程的程序、数据、用户栈分配内存初始化PCB。把调用者提供的参数(进程名、进程优先级、实体所在主存的起始地址、所需的资源清单、记帐信息及进程家族关系等)填入PCB中。将新进程插入就绪队列。第91页撤消原语进程执行完或因故障不能继续运行。功能:在PCB集合中寻找要撤销的进程;若有子进程,也须终止,以防成为不可控的;将其占用的系统资源归还系统;撤销其PCB。第92页(UNIX中用exit();Windows用ExitProcess())阻塞原语在运行过程中进程期待某一事件发生时,自己执行阻塞原语,由运行态变为阻塞态。(等待键盘输入;等待磁盘数据传输完成;等待其它进程发送一个信息)功能:中断CPU;将其运行现场信息保存在PCB中;置状态为阻塞态,插入相应事件的阻塞队列中;转进程调度。第93页唤醒原语若进程等待的事件是I/O完成。I/O完成后,CPU响应中断,在中断处理中,将等待I/O完成而阻塞的进程唤醒,并置为就绪态。若等待某进程发信息。由发送进程调用唤醒原语把等待者唤醒,置为就绪态。插入就绪队列。第94页UNIX阻塞/唤醒Sleep()将在指定时间内阻塞本进程Pause()阻塞本进程以等待信号。Wait()阻塞本进程以等待子进程的结束。Kill()向指定进程或进程组发送信号。Wakeup()第95页挂起原语实时系统,根据实时现场的需要,会将正在执行的或没有执行的进程挂起一段时间。被挂起的进程由活动状态变为静止状态(静止就绪、静止阻塞)。分时系统,把进程从内存换到外存,进程就处于静止状态,不被调度。第96页解挂原语当挂起进程的原因被解除时,系统调用解挂原语将指定的进程解挂,使其由静止状态变为活动状态。当被解挂的进程变为活动就绪时,通常立即转进程调度。第97页2.4处理机调度进程数大于处理机数。多进程竞争处理机。进程调度就是为进程分配处理机。系统运行性能在很大程度上取决于调度。吞吐量大小、周转时间长短、响应及时性。第98页处理机的调度级别作业调度:高级调度。多道批处理系统。多个用户作业以成批的形式提交到外存,形成后备作业队列。被作业调度选中进内存,就处于运行态。进程调度:低级调度。交换调度:中级调度。将主存就绪或主存阻塞等暂不具备运行条件的进程换出到外存交换区;或将外存交换区中的已具备运行条件的进程换入主存。交换调度可以控制进程对主存的使用。第99页
进程调度的功能(1)记录系统中各进程的执行状况管理进程控制块,将进程的状态变化及资源需求情况及时地记录到PCB中。(2)选择就绪进程占有CPU(3)进行进程上下文的切换将正在执行进程的上下文保存在该进程的PCB中,将刚选中进程的运行现场恢复起来,以便执行。第100页进程上下文用户级上下文:进程的程序和数据,用户栈。寄存器级上下文:是CPU的现场信息,包括程序计数器、PSW、栈指针、用来保存变量和临时结果的通用寄存器的值等。系统级上下文:包括进程的PCB、核心栈等第101页进程的运行环境和物理实体栈记录进程的执行历程。栈帧中存放有关的输入参数、局部变量、过程调用之后的返回地址、没有保存在寄存器中的临时变量。通常,每个进程会调用不同的过程,从而有一个各自不同的执行历程。第102页进程调度的方式①非抢先方式(非剥夺方式)
某一进程占用CPU,直到运行完或不能运行为止,其间不被剥夺。用在批处理系统。主要优点:简单、系统开销小。②抢先方式(剥夺方式)
允许调度程序基于某种策略(优先级、时间片等)剥夺现行进程的CPU给其它进程。用在分时系统、实时系统。第103页
进程调度的时机(1)现行进程完成或错误终止;(2)提出I/O请求,等待I/O完成时;(3)在分时系统,按照时间片轮转,分给进程的时间片用完时;(4)优先级调度,有更高优先级进程就绪;(5)进程执行了某种原语操作,如阻塞原语和唤醒原语,都可能引起进程调度。第104页进程调度算法(1)先来先服务(FCFS)(2)最短作业优先(SJF)(3)响应比高者优先(HRN)(4)优先级调度法(5)轮转法(RoundRobin)(6)多级反馈队列轮转法
第105页(1)先来先服务(FCFS):简单,节省机器时间。缺点:容易被大作业垄断,使得平均周转时间延长。[例]
几乎同时到达的三个作业j1、j2、j3。j1运行2小时,j2和j3只需1分钟。三个作业的平均周转时间为2个小时多。增长了短作业的周转时间。(系统先运行j1,j2和j3要等2个小时。j1完成之后,j2和j3再分别运行1分钟。)第106页(2)最短作业优先(SJF):选取运行时间最短的作业运行。对短作业有利,作业的平均周转时间最佳。
若系统不断进入短作业,长作业就没有机会运行,出现饥饿现象。第107页(3)响应比高者优先(HRN)
Rp=(作业等待时间+作业估计运行时间)/作业估计运行时间
=1+作业等待时间/作业估计运行时间特点:结合了先来先服务、短作业优先的方法。优先运行短作业和等待时间足够长的长作业。缺点:算法比较复杂。第108页(4)优先级调度法将CPU分配给就绪队列中优先级最高的进程静态优先级:在进程创建时确定的,运行时保持不变。通常赋予系统进程较高优先级;申请资源量少的赋予较高优先级。可能导致低优先级的长进程没有机会运行。动态优先级:原优先级可随进程的推进而改变。根据进程占用CPU时间的长短或等待CPU时间的长短动态调整。第109页
(5)轮转法(RoundRobin)用在分时系统,轮流调度所有就绪进程。利用一个定时时钟,使之定时地发出中断。时钟中断处理程序在设置新的时钟常量后,立即转入进程调度程序。时间片长短的确定原则:既要保证系统各个用户进程及时地得到响应,又不要因时间片太短而增加调度的开销,降低效率。第110页(6)多级反馈队列轮转法因就绪原因不同,系统通常设置多个就绪队列。多个就绪队列可采用前后台运行。前台队列采用RR调度;后台采用FCFS。高优先级进程的时间片较短,低则较长。刚创建的进程和因请求I/O而未用完时间片的进程排在高优先级队列。运行2~3个时间片还未完成的进程降级。第111页第112页(时间片:s1<s2<…<sn)时间片为S1就绪队列时间片为S2就绪队列时间片为Sn就绪队列进程完成进程完成进程完成实时系统的调度算法时钟驱动法:各任务的调度在系统运行前就确定了,调度程序依次调度任务执行。加权轮转法:进程的权就是分配给它的一小部分处理机时间。轮转时,不同的进程可以获得不同的处理机时间。广泛用在高速开关网的实时控制中。第113页2.5线程的引入进程在逻辑上表示OS要做的一个作业,线程表示组成该作业的许多可能的子任务。线程是进程中的一个可执行实体。以进程为单位分配资源,以线程为单位调度执行。第114页多线程字处理:一个线程与用户交互另一个线程在后台进行格式化处理。一旦在某一页中的语句被删除掉,交互线程就立即通知格式化线程对整本书重新进行处理。同时,交互线程继续监控键盘和鼠标。第三个线程可以做磁盘备份。第115页线程键盘文档进程分派线程(dispatcher)从网络读入请求,之后选一个工作线程提交请求,当该工作线程阻塞在磁盘操作上时,分派线程可另选一个工作线程运行。第116页分派线程工作线程内核网络连接用户空间Web服务器进程进程地址空间进程控制块第117页
线程控制块堆栈寄存器组
线程控制块堆栈寄存器组
线程控制块堆栈寄存器组程序段数据段打开文件…线程1线程2线程3一个线程的组成有一个唯一的标识符表示处理机状态和运行现场的一组寄存器两个堆栈,分别用于用户态和核心态调用时进行参数传递一个独立的程序计数器关联的进程和线程指针第118页进程拥有一个独立的地址空间,用来存放若干代码段和数据段。若干打开文件,以及至少一个线程。一个进程内的多线程共享该进程的所有资源,线程自己拥有很少资源。第119页线程与进程的比较(1)拥有的资源进程调度需进行进程上下文的切换,开销大。同一进程内的线程切换,仅把线程拥有的一小部分资源变换了即可,效率高。同一进程内的线程切换比进程切换快得多。不同进程的线程切换…(2)调度(3)并发性引入线程后,使得系统的并发执行程度更高。进程之间、进程内的多线程之间可并发执行。(4)安全性同一进程的多线程共享进程的所有资源,一个线程可以改变另一个线程的数据,而多进程实现则不会产生此问题。共享方便。第120页系统对线程的支持1)用户级线程有关线程的所有管理工作都由用户程序通过调用用户态运行的线程库完成。自己设计线程调度算法。内核以进程为单位进行调度。一个线程阻塞,其依附的进程也阻塞。多线程对应核心级一个进程。如,POSIX的Pthread线程库第121页
运行时系统(Run-timesystem)是一个管理线程的过程集合,包括:thread_create、thread_exit、thread_wait。第122页内核用户空间内核空间运行时系统进程表线程表进程线程2)核心级线程有关线程的管理工作都由内核完成。应用程序通过系统调用来创建或撤销线程。一个线程的阻塞,不影响其他线程的执行。
WindowsLinux多处理机系统第123页内核用户空间内核空间进程表线程表进程线程3)两级组合既支持用户级线程,也支持核心级线程。用户级多个线程对应核心级多个线程。当内核了解到一个线程阻塞后,通知运行时系统,重新调度其他线程。第124页内核线程Solaris用户线程LWP内核线程运行时系统LWP轻进程:LightWeightProcess可以把LWP看作一个可以执行代码和系统调用的虚拟CPU。LWP建立了从用户级到内核级的桥梁。一个进程可申请多个LWP,一个LWP可交叉运行多个用户线程。LWP和内核线程是一对一的关系。第125页由于线程拥有较少的资源,又具有传统进程的许多特性,因此有的把线程叫做轻型进程。把传统的进程叫做重型进程。
Linux,线程就是轻量级进程(LightWeightProcess)。一个进程拥有一组共享其地址空间和资源的轻量级进程。Clone()函数创建进程时,系统同时为进程创建第一个线程。进程中的其它线程是通过调用线程创建原语显式创建的。Windows,创建线程的函数CreateThread(…,lpStartAddress,…)第126页作业P40 2-9 2-122-13第127页第3章进程之间的并发控制和死锁128本章主要内容并发进程的特点进程之间的低级通信:互斥、同步、信号量和P/V操作、经典IPC问题管程进程的高级通信:消息传递,共享内存死锁:多进程竞争有限资源第129页3.1并发进程的特点(1)对资源的共享引起的互斥关系
进程之间本来是相互独立的,但由于共享资源而产生了关系。间接制约关系,互斥关系。(2)协作完成同一个任务引起的同步关系一组协作进程要在某些同步点上相互等待发信息后才能继续运行。直接制约关系,同步关系。(3)进程之间的前序关系由于进程之间的互斥同步关系,使得进程之间具有了前序关系,这些关系决定了各个进程创建和终止的时间。第130页(a)S(P1,P2,P3)(b)P(P1,P2,P3,P4)(c)S(P1,P(P2,S(P3,P7),S(P4,P5,P6)),P8)第131页SFSFP1P3P2P1P3P2P4SFP3P7P8P2P6P5P4P1(a)顺序关系(b)并行关系(c)一般关系3.2进程之间的低级通信进程间通信:是指进程之间交换信息。进程间的低级通信:通过信号量实现进程之间的互斥和同步关系。进程间通信问题——IPC问题(InterProcessCommunication,IPC)第132页3.2.1进程之间的互斥共享资源:①慢速的硬设备,如打印机;②软件资源,如共享变量、共享文件和各种队列等。临界资源:就是一次仅允许一个进程使用的系统中共享资源。临界区(criticalsection):就是并发进程访问临界资源的那段必须互斥执行的程序。P42-43例子。第133页P42-43例子为了满足多进程打印文件的要求,OS建立了一个打印进程printer和一个存放打印文件名的spool目录。多个进程通过对共享变量in的操作将要打印的文件名写入spool目录项中。临界区代码如下:
(in)局部变量i
将待打印文件名送i所指位置局部变量i+1in第134页…abcprog.cprog.h7654in=7out=4Spool目录第135页进程A进程BT1T2T3T4B试图进入临界区B阻塞A离开临界区A进入临界区B进入临界区B离开临界区使用临界区的互斥不能同时有两个进程在临界区内执行等待进入临界区的进程,应释放处理机后阻塞等待在临界区外运行的进程不可阻止其他进程进入临界区不应使要进入临界区的进程无限期等待在临界区之外第136页并发进程进入临界区需要遵循的四个准则互斥使用;让权等待;有空让进;有限等待解决进程之间互斥的方法软件实现方法硬件实现方法第137页临界区互斥软件实现方法算法1:设有两个进程Pi和Pj,共享变量
intturn;当turn==i时,进程Pi允许在临界区内执行。执行顺序:Pi,Pj,Pi,Pj…第138页Pi:do{while(turn!=i);
临界区
turn=j;
剩余区}while(1);算法2:设有两个进程Pi和Pj,共享变量
booleanflag[2];初值,flag[i]=flag[j]=false如果flag[i]==true,则该值表示Pi准备进入临界区。
死锁?第139页Pi:do{flag[i]=true;while(flag[j]);
临界区
flag[i]=false;
剩余区}while(1);算法3:设有两个进程Pi和Pj,共享两个变量:
booleanflag[2];intturn;初值,flag[i]=flag[j]=falseturn为i或j都行。第140页do{flag[i]=true;turn=j;while(flag[j]&&turn==j);
临界区
flag[i]=false;
剩余区}while(1);为了进入临界区,进程Pi首先设置flag[i]为true,设置turn为j,从而表示如果另一个想进入临界区,那么它能进入。如果两个进程同时试图进入,那么turn会几乎同时设置成i和j,但只有一个赋值语句的结果会保持,最终turn值决定了谁能进入临界区。Pi
用硬件实现互斥的方法
(1)关中断
最简单的方法。在进程刚进入临界区后,立即禁止所有中断;在进程要离开之前再打开中断。因为CPU只有在发生时钟中断或其它中断时才会进行进程切换。第141页
关中断(disableInterrupt)〈criticalsection〉
开中断(enableInterrupt)
优点:简单。缺点:限制了处理机交叉执行程序的能力把禁止中断的权力交给用户进程是不明智的。(若用户进程禁止中断之后不再打开中断,其结果将会如何?整个系统可能会因此终止)。若是多处理机系统,则禁止中断仅仅对执行本指令的那个CPU有效。其他CPU仍将继续运行,并可以访问临界资源。第142页(2)使用测试和设置硬件指令锁位变量W
:为每个临界资源设置一个,以指示其当前状态。W=0,表示资源空闲可用;W=1,表示资源已被占用。testset硬件指令可定义如下:第143页
booleantestset(intw){if(w==0){w=1;returnTRUE;}else{returnFALSE;}}//一条机器指令,其执行不可被中断。Constintn=/*进程数*/intw;voidp(inti){while(1){
while(!testset(w));<criticalsection>w=0;<remaindersection>}}第144页显然,采用这种加锁语句,由于进程循环测试,白白浪费了CPU的时间。这种现象又叫做“忙等”。voidmain(){w=0;p(1);p(2);…;p(n);}3.2.2进程之间的同步同步的原因:一组进程要合作完成一项任务。[例]两个用户进程共享缓冲区。计算进程将计算结果送入共享缓冲区,打印进程从缓冲区取数据打印。缓冲区空时不取数据,满时不送数据。由于计算进程与打印进程访问缓冲区的速度不匹配,需要进行同步处理。为了使进程同步,需要引入信号量机制。第145页3.2.3信号量和P、V操作1965年,荷兰学者Dijkstra提出的一种同步机制。基本原理:两个或多个进程通过简单的信号进行合作,一个进程被迫在某一位置停止,直到它接收到一个特定的信号。为了发信号,需要使用一个称作信号量的特殊变量。第146页typedefstruct{ //信号量的类型描述
intvalue;//表示该类资源的可用数量
structprocess*list;//等待使用该类资源的进程排成队列的队列头指针。
}semaphore,sem;第147页
对信号量S的操作只允许执行P、V原语操作P操作原语://wait(s);voidP(sem&s){s.value=s.value-1;//表示申请一个资源(或通过信号量s接收消息)
if(s.value<0){addthisprocesstos.list;
block();}//资源用完,调用阻塞原语。“让权等待”}第148页V操作原语://signal(s);VoidV(sem&s){s.value=s.value+1;
//释放一个资源(或通过信号量s发消息)
if(s.value<=0){removeaprocessPfroms.list;
wakeup();}//表示在信号链表中,仍有等待该资源的进程被阻塞。调用唤醒原语。}第149页显然,P、V操作的引入,克服了加锁操作的忙等待现象,提高了系统的效率。操作系统正是利用信号量的状态来对进程和资源进行管理的。第150页根据用途不同,可以把信号量分为公用信号量和私用信号量。公用信号量(互斥信号量)用于解决进程之间互斥进入临界区。私用信号量(同步信号量)用于解决异步环境下进程之间的同步。第151页利用信号量实现进程之间的互斥设置一个互斥信号量mutex,初值为1,表示该临界资源空闲。调用P(mutex)申请临界资源。调用V(mutex)释放临界资源。只需把临界区代码置于P(mutex)和V(mutex)之间,就可实现临界资源的互斥使用了。第152页intmutex=1;P1:
… P(mutex);criticalsectionV(mutex);…第153页P2:
…P(mutex);
临界区
V(mutex);…用信号量可以方便地解决n个进程互斥地执行临界区代码的问题。信号量的取值范围:+1~-(n-1)。信号量值为负时,说明有一个进程正在临界区执行,其它的正排在信号量等待队列中等待,等待的进程数等于信号量值的绝对值。[例]若P、V操作的信号量初值为1,当前值为-3,则表示有
3个等待进程。第154页利用信号量实现
进程之间的同步第155页[例]
用信号量实现计算进程与打印进程之间的同步过程。假定计算进程和打印进程共享一个单缓冲区。为此,引入两个同步信号量s1和s2。
S1:表示缓冲区是否空,初值为1;
S2:表示缓冲区中是否有可供打印的计算结果,初始值为0。第156页计算进程Pc打印进程Ppints1=1,s2=0;Pc:… computernextdata;P(s1);
addthedatatobuffer;V(s2);…Pp:…
P(s2);
takenextdatafrombuffer;V(s1);
printthedata;…第157页能否用一个同步信号量?生产者和消费者问题生产者和消费者是相互合作进程关系的一种抽象生产者:当进程释放一个资源时,可把它看成是该资源的生产者,消费者:当进程申请使用一个资源时,可把它看成该资源的消费者。[例]上述例子中计算进程:打印数据的生产者;空缓冲的消费者打印进程:打印数据的消费者;空缓冲的生产者第158页
[例]假定有一组生产者和消费者进程,通过一个有界环形缓冲区(有k个缓冲区)发生联系。生产者向缓冲区放产品,消费者从中取产品。当缓冲区满时,生产者要等消费者取走产品后才能向缓冲区放下一个产品;当缓冲区空时,消费者要等生产者放一个产品入缓冲区后才能从缓冲区取一个产品。这个环形缓冲区是一个临界资源。互斥使用第159页empty:表示空缓冲区的个数,初值为kfull:有数据的缓冲区个数,初值为0mutex:互斥访问临界区的信号量,初值为1第160页生产者1生产者2…生产者M生产指针i消费者1消费者2…消费者N消费指针
jbuffer[k]intmutex=1,empty=k,full=0,i=0,j=0;DataTypearray[k];Producer:
…produceaproductx;
P(empty); //申请一个空缓冲
P(mutex); //申请进入缓冲区
array[i]=x; //放入产品
i=(i+1)modk;
V(full); //有数据的缓冲区个数加1V(mutex); //退出缓冲区…第161页Consumer:
…P(full);
//申请一个产品
P(mutex); //申请进入缓冲区
y=array[j]; //取产品
j=(j+1)modk; V(empty); //释放1个空缓冲
V(mutex); //退出缓冲区…第162页注意P操作的次序若生产者进程中的两个P操作的次序交换。当缓冲区满时,生成者将在P(empty)上等待,但不释放对缓冲区的互斥使用权。此后,消费者欲取产品时,由于申请使用缓冲区不成功,它将在P(mutex)上等待。相互等待就会造成系统发生死锁现象。第163页[例]
桌上有一空盘,一次只允许放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。请用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。第164页盘子爸爸初始状态:同步信号量s1=1,表示盘子为空。放苹果发同步信号s2,放桔子发同步信号s3儿子等信号s3,发信号s1女儿等信号s2,发信号s1苹果桔子第165页Father:
while(1){p(s1);if(放入的是苹果)v(s2);elsev(s3);}Daughter:
while(1){p(s2);
从盘中取出苹果;
v(s1);}Son:
while(1){p(s3);
从盘中取出桔子;
v(s1);}
读/写问题:有一个多进程共享的数据区,这个数据区可以是一个文件或者主存的一块空间。有一些只读取这个数据区的进程(reader)和一些只往数据区中写数据的进程(writer)。此外还必须满足以下条件:任意多的读进程可以同时读这个数据区;一次只有一个写进程可以往数据区中写;若一个写进程正在写,禁止任何进程读。第166页读者和写者问题写互斥信号量wmutex:实现读写互斥和写写互斥地访问共享文件,初值为1。计数器readcount:记录同时读的读者数,初值为0。读互斥信号量rmutex:使读者互斥地访问共享变量readcount,初值为1。
第167页信号量的设置intrmutex=1,wmutex=1,readcount=0;Reader:
P(rmutex);//互斥访问readcountifreadcount=0thenP(wmutex);readcount++;V(rmutex);
读文件;P(rmutex);readcount=readcount-1;ifreadcount=0thenV(wmutex);V(rmutex);第168页若规定仅允许5个进程同时读,怎样修改程序?[解析]允许多个读进程同时读。当没有读进程正在读时,第一个试图读的读进程需要通过P(wmutex)实现读写互斥;当至少已经有一个读进程在读时,随后的读进程无需等待,可以直接进入。Writer:…P(wmutex);
写文件;
V(wmutex);
…第169页理发师问题一个理发师、一把理发椅和n把供等候理发的顾客坐的椅子。如果没有顾客,则理发师坐在椅子上睡觉,当有一个顾客到来时,就唤醒理发师,请求理发;如果理发师正在理发,又有顾客到来时,只要有空椅子,他就坐下来等待理发。请为理发师和顾客各编写一段程序来描述他们的同步问题。第170页理发师问题设两个信号量:(1)用s1制约理发师,初值为0,表示有0个顾客;(2)用s2制约顾客,表示可用椅子数,初值为n。理发师: 顾客:P(s1);查是否有顾客 P(s2);申请椅子V(s2); V(s1);唤醒理发师给一名顾客理发;坐椅子上等理发;
第171页哲学家进餐问题这是一个典型的同步问题,是一大类并发控制问题的例子。假设有5个哲学家,花费一生的时光思考和吃饭。在桌子上放着5把叉子。一个哲学家要分两次去取其左边和右边的叉子。若得到两把叉子,就开始吃饭;吃完放下两把叉子。第172页哲学家进餐问题intfork[0]=fork[1]=…=fork[4]=1;第i个哲学家所执行的程序:do{ P(mutex); P(fork[i]); P(fork[(i+1)mod5]);
V(mutex);
吃饭
V(fork[i]); V(fork[(i+1)mod5]); }while(1);第173页3.3管程1973年,Hansan和Hoare提出了具有高级语言结构的管程。管程比信号量好控制。管程是关于共享资源的数据结构及一组针对该资源的操作过程所构成的软件模块。管程保证:一次只有一个进程执行管程中的代码。从而提供互斥机制,保证管程数据的一致性。第174页管程的组成:Monitormonitor-name{
……局部于该管程的共享变量的说明
condition……条件变量
define……;本管程内定义的过程名
use……; 操作条件变量的同步原语
……本管程内定义的各过程(函数体)}第175页Monitormutexshow{
booleanbusy=false; //临界资源是否可用标志
conditionnonbusy; //等待队列的条件变量
definerequest,release;
//管程中的过程说明
usewait,signal; //引用外部模块}第176页用管程解决临界资源的互斥使用调用wait()的进程会阻塞在条件变量nonbusy的等待队列上。调用signal()会唤醒一个阻塞进程,若无阻塞进程则signal()不起作用。procedurerequest()//申请临界资源的过程
{ifbusythenwait(nonbusy);busy=true;}procedurerelease()
//释放临界资源的过程
{busy=false;
signal(nonbusy);}第177页资源忙则在nonbusy等待队列上等待,并立即退出该管程。申请成功,置资源已经占用标志。设置资源已经空闲标志唤醒nonbusy上的等待者用管程解决生产者和消费者问题Monitorprod_conshow{charbuffer[n]; 环形缓冲区
intk=0;缓冲区中的产品个数
intnextempty=0,nextfull=0;送/取产品的指针
conditionnonempty,nonfull;
defineput,get;管程中定义的过程说明
usewait(),signal();
引用外部模块的过程说明}第178页procedureput(product){//向缓冲区送产品
ifk=nthenwait(nonfull);//缓冲区满等待
buffer[nextempty]=product;k=k+1;nextempty=(nextempty+1)modn;
signal(nonempty);//唤醒等待取产品消费者
}第179页第180页pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 麻醉学循证医学应用手册
- 果树老园更新改造手册
- 2026年版权授权使用合同(合作双方)二篇
- 电工焊工试题及答案
- 7年级中考试卷历史
- 2026-2031年中国内河水运行业市场调查分析及投资前景预测报告
- 2024年陕西交通职业技术学院高职单招职业适应性测试考试模拟试卷附答案详解(突破训练)
- 2025年红枫湖职业学院单招职业技能考试题库含完整答案详解【夺冠系列】
- 2026年秦皇岛文旅职业学院高职单招职业技能考试题库附答案详解【A卷】
- 2025年渭华专修学院高职单招职业技能考试模拟试卷及答案详解【易错题】
- 2025年临夏州事业单位考试真题及答案
- (三模)豫西北教研联盟(平许济洛)2025-2026学年高三3月第三次质量检测英语试卷(含答案解析)+听力音频+听力原文
- 球馆运营制度
- 2026年北京市离婚协议书规范范本(可下载打印)
- 2026届广西北海市英语高三上期末质量跟踪监视试题含解析
- 控申业务竞赛试题
- (完整版)2026年劳动法实施细则全文
- 2025年砀山县国企考试真题
- 2026年记者(新闻基础知识)自测试题及答案
- TCABEE《有色金属工业含铊废水处理技术规范》
- DB23∕T 3269-2022 水稻基质育苗规程
评论
0/150
提交评论