ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:82.57KB ,
资源ID:5692381      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5692381.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统进程描述及控制2.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统进程描述及控制2.docx

1、操作系统进程描述及控制22.5经典进程的同步问题在多道程序环境下,进程同步问题十分重荽,出现一系 列经典的进程同步问题,其中有代表性有:-生产者一消费者问题-哲学家进餐问题-读者一写者问题生产者一消费者问题问题描述P1cl c2pmcmL记录型信号量解决“生产者一消费者问题设置两个同步信号量及一互斥信号量empty :说明空缓冲单元的数目,其初值为有界缓冲区的大小n。Full :说明满缓冲单元的数目(即产品数目),其初值为0.Mutex:说明该有界缓冲区是一临界资源,必须互斥使用,其初值为1。int in=0,out=0; item buffern; semaphore mutex=1 , e

2、mpty =n , full=O ; void proceducerO do producer an item nextp ; wait (empty);wait(mutex);bufferin = nextp ;in = (in + l) % n ; signal(mutex); signal(full);while(TRUE); void consumerO do wait(full);wait(mutex);nextc = bufferout;out = (out+l)%n; signal (mutex); signal(empty); consumer the item in next

3、c ; while(TRUE); void mainO cobegin proceducerQ; consumerQ;coend1.互斥信号量的RV操作在每一程序中必须成对岀现. 2.资源信号量(full,empty)也必须成对出现,但可分别处于不同的程序中.3.多个P操作顺序不能颠倒.4.先执行资源信号量的P操作,再执行互斥信号量的P操作,否则可能引起进程死锁.5.它是一个同步问题:(1)消费者想要取产品,有界缓冲区中至少有一个单元是满的。(2)生产者想要放产品,有界缓冲区中至少有一个是空的。6.它是一互斥问题有界缓冲区是临界资源,因此,各生产者进程和各消费者进程必须互斥执行。2 .利用AN

4、D信号量解决生产者一消费者问题对于生产者一消费者问题,也可利用AND信号量来解决,即用Swait(empty , mutex)来代替wait(empty)和wait(mutex);用Ssignal(mutex , full)来代替signal(mutex)和signal(full);用Swait(full, mutex)来代替wait(full)和wait(mutex),以及用 Ssignal(mutex , empty)代替 Signal(mutex)和 Signal(empty)o利用AND信号量来解决生产者一消费者问题的算法描述如下:int in=0,out=0; item buff e

5、r n; semaphore mutex=l, empty=n , full=O ;void proceducerO (do ( producer an item nextp Swait(empty,mutex);buffer in = nextp ;in=(in+l) % n;Ssignal(mutexffull);while(TRUE); void consumerO (do( Swait(full,mutex); nextc=bufferout; out=(out+l)%n; Ssignal(mutexfempty); consumer the item in nextc ; while

6、(TRUE); void main() ( cobegin proceducerO; consumer。; coend)3.用管程机制解决生产者一消费者问题建立 Producer-consumer(PC)管程D put(x)过程生产者利用此过程将自已的消息放到缓冲池中,若 发现缓冲已满(count n)测等待。D get(x)过程消费者利用此过程将缓冲池中的消息取走,若发现缓 冲已空(count0),则等待。过程cwait和csignal对条件变量notfull和notempty进行操作(1)cwait(condition)当管程被一个进程占用时,其他进程调用该过程时阻塞,并挂在 条件cond

7、ition队列上(2)csignal(condition)唤醒在cwait执行后阻塞在条件condition队列上的进程,如果 这样的进程不止一个,则选择其中一个实施唤醒操作;如果队列为 空,则无操作而返回。PC管程可描述如下Monitor procducerconsumer ( item buff er N;int in,out;condition notfulLnotempty; int count;public:void put(item x)(if ( count = N) cwait(notfull); bufferin=x;in=(in+l) % N;count+;csignal(

8、notempty); Void get (item x) (if(count=0) cwait(notempty): x=buffer out; out=(out+l)%N;count-;csignal(notfull);)( in=O;out=O;count=0;PCvoid main()(cobegin proceducer(); consumerO; coend nextc;)生产者一消费者描述void producerO( item x; while(TRUE)( produce an item in nextp; PC.put(x);)Void consumerQ( item x;

9、while(TRUE)( PC.get(x); consume the item哲学家进餐问题问题描述有五个哲学家,他们的生活方式是交替地进行思考和进 餐。他们共用一张圆桌,分别坐在五张椅子上。在圆桌上有五 个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取 用其左.右最靠近他的筷子,只有在他拿到两支筷子时才能进 餐。进餐毕,放下筷子又继续思考。哲学家进餐问题可看作是并发进程并发执行时,处理共享资源 的一个有代表性的问题。哲学家4筷了 cp2哲学家进餐结构图所有信号量均被初始化为,第i位哲学家的活动可描述为: do(waitchopsticki); wait(chopstick(i+l)%

10、 5);eat ;:signal(chopsticki); signal(chopstick(i+l)% 5);think; while(TRUE);三、“读者一写者问题问题描述:一个数据对象(数据文件或记录)可被多个进程共享。其中, reader进程要求读,writer进程要求写或修改。允许多个 reader进程同时读共享数据,但绝不允许一个writer进程与其 它的reader进程或writer进程同时访问,即writer进程必须与 其它进程互斥访问共享对象。读者一写者问题的同步算法描述设置一个共享变量和两个信号量:共享变量Readcount :记录当前正在读数据集的读进程数目, 初值为0

11、。读互斥信号量Rmutex :表示读进程互斥地访问共享变量 readcount,初值为1.写互斥信号量wmutex :表示写进程与其它进程(读,写) 互斥地访问数据集,初值为1.读者一写者问题可描述如下:semaphore rmutex=l, wmutex=lint readcount=0 ;void reader()(do(wait(rmutex);if (readcount =0) wait(wmutex); readcount+ ; signal (rm utex); perform read operation ; wait (rm utex);readcount-;if (readc

12、ount=0) signal(wmutex);signal (rm utex); while(TRUE);void writer()(do ( wait(wmutex); perform write operation ; signal(wmutex); while(TRUE);)void mainO( co begin reader();writerO; coend最多只允许RN个读者同时读 int RN;semaphore L=RN,mx=l;void reader()(do( Swait(L,l,l);Swait(mxffl/O); perform read operation; Ssi

13、gnal(Lrl);while(TRUE) ; void writer()(do( Swait(mx,l,l;LRN,O); perform read operation; Ssignal(mx,l); while(TRUE);void main()( co begin reader();writer(); coend利用信号量集机制解决读者一写着问题信号量例题1.桌子上有一个空盘子,只允许放一个水果。爸爸可以向盘中放苹果, 也可以向盘中放橘子,儿子专等吃盘中的橘子,女儿专等吃盘中的苹 果。规定当盘空时,一次只能放一个水果,请用信号量实现爸爸、儿 子、女儿三个并发进程”的同步。Semaphor

14、e empty=l/orange=apple=0; father:do( wait (empty); 将水果放入盘中; if (放入的是橘子) signal(orange); else signal(apple);while(l);Son:do( wait(orange); 从盘中取岀橘子; signal(empty); 吃橘子; while(l);Daughter:do wait(apple);从盘中取出苹果; signal ( empty);吃苹果;while(l);儿子,女儿的同步过程描述如下:2.6进程通信一高级通信一、进程通信的类型进程通信是指进程之间的信息交换。根据所交换的信息量的

15、多少分为: :低级通信 进程之间交换的信息量较少且效率低。如进程同步和互斥。以信号量机制为例来说明,它们之所以低级的原因在于:1效率低,生产者每次只能向缓冲池投放一个产品(消息),消费者每次只能从缓冲区中取得 一个消息;2通信对用户不透明,OS只为进程之间的通信提供了共享存储器。在进程之间要传送大量数据时,应当利用OS提供的高级通信工具,该工具最主要的特点是:(1) 使用方便。OS隐藏了实现进程通信的具体细节,向用户提供了一组用于实现高级通 信的命令(原语),用户可方便地直接利用它实现进程之间的通信。或者说,通信过程对用户 是透明的。这样就大大减少了通信程序编制上的复杂性。(2) 高效地传送大

16、量数据。用户可直接利用高级通信命令(原语)高效地传送大量的数据。高级通信进程之间交换的信息量较多且效率高。又分: A共享存储器系统指进程之间通过对共享存储区读写来交换数据。(1)基于共享数据结构的通信方式。(2)基于共享存储区的通信方式。A消息传递系统指进程间的通信以消息为单位,程序员可通过通信原语 实现通信,按其实现方式不同可分为:(1)直接通信方式发送进程直接把消息发送给接收进程。(2)间接通信方式发送进程把消息发送到某个中间实体(信箱), 接收进程从中取得消息。A管道通信系统 发送进程(写进程)以字符流形式将大量数据送入管道 (管道:用于连接读进程和写进程以实现它们之间通信的共享文件。)

17、, 接收进程(读进程)从管道接收数据。A客户机服务器系统实现方法:套接字(Socket),远程过程调用和远 程方法调用RPC(Remote Procedure Call)二,消息传递系统直接通信方式(消息缓冲通信)发送进程利用OS所提供的发送命令,直接把消息发送给接收进程。 。要求:发送进程和接收进程都以显式方式提供对方的标识符。D系统提供的两条通信原语:Send(Receiver,message);发送一个消息给接收进程; Receive(Senderfmessage);收Sender发来的消息;生产者.消费者问题的解决repeatProduce an item in nextp; .sen

18、d (consumer,nextp);until false;repeatReceive(producer,nex tc);consume the item in nextc until false二、消息传递系统-间接通信方式(信箱通信)发送进程把消息发送到某个中间实体(信箱),接收进程从 中取得消息。系统提供的若干条原语。信箱创建和撤消原语。两条通信原语Send (mai I box,message)将一个消息发送给指定信箱; Recei ve(mai I box,message)从指定信箱中接收一个消息; 信箱的分类:私用信箱,公用信箱,共享信箱2.7线程线程是近年来操作系统领域出现的一

19、个非常重要 的技术,其引入进一步提高了程序并发执行的程度, 从而进一步提高了资源的利用率和系统的吞吐量。-线程的基本概念线程间的同步和通信-内核支持线程和用户级线程-线程控制一、线程的引入操作系统中引入进程的目的,是为了使多个程序能并发执行,以提高 资源利用率和系统吞吐量,那么,在操作系统中再引入线程,则是为了减 少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。进程的两个基本属性:进程是一个可拥有资源的独立单位;进程同时又是一个可独立调度和分派的基本单位。正是由于进程有这两个基本属性,才使之成为一个能独立运行的基本单 位,从而也就构成了进程并发执行的基础。然而,为使程序能并发执行,

20、 系统还必须进行以下的一系列操作。1) 创建进程系统在创建一个进程时,必须为它分配其所必需的,除处理机以外的所有资源, 如内存空间、I/O设备,以及建立相应的PCB。2) 撤消进程系统在撤消进程时,又必须先对其所占有的资源执行回收操作,然后再撤消PCB。3) 进程切换 .对进程进行切换时,由于要保留当前进程的CPU环境和设置新选中进程的CPU环 境,因而须花费不少的处理机时间。换言之,由于进程是一个资源的拥有者,因而在创建,撤消和切换中,系统必须 为之付出较大的时空开销。正因如此,在系统中所设置的进程,其数目不宜过多,进 程切换的频率也不宜过高,这也就限制了并发程度的进一步提高。线程的组成主要

21、包括:(1)一个被称为线程ID ( thread ID ,线程标识符)的唯一标识符;(2)两个栈,分别用于记录在内核模式下和用户模式下执行的;(3 )个被称为线程局部存储器(TLS , thread-local storage )的私 有存储区域,各个子系统、运行库和DLL都会用到该存储区域;(4 ) 一组代表处理器状态的CPU寄存器中的内容;(5)有时候线程也有它们自己的安全环境,如果多线程服务器应用程序要模仿其客户的安全环境,则往往可以利用线程的安全环境。二.线程与进程的比较1) 调度2) 并发性3) 拥有资源4) 独立性5) 系统开销6) 支持多处理机系统三、线程的状态和线程控制块(1)

22、线程运行的三个状态与传统的进程一样,在各线程之间也存在着共享资源和相互合作的 制约关系,致使线程在运行时也具有间断性。相应地,线程在运行时也 具有下述三种基本状态:1) 执行状态,表示线程已获得处建机而正在运行;2) 就绪状态,指线程已具备了各种执行条件,只须再获得CPU便 可立即执行;3) 阻塞状态,指线程在执行中因某事件受阻而处于暂停状态,例 如,当一个线程执行从键盘读入数据的系统调用时,该线程就被阻塞。(2)线程控制块TCB如同每个进程有一个进程控制块一样,系统也为每个线程配置了一 个线程控制块TCB ,将所有用于控制和管理线程的信息记录在线程控制 块中。(3)多线程OS中的进程属性通常

23、在多线程OS中的进程都包含了多个线程,并为它们提供资源。OS 支持在一个进程中的多个线程能并发执行,但此时的进程就不再作为一 个执行的实体。多线程OS中的进程有以下属性:1)进程是一个可拥有资源的基本单位。2)多个线程可并发执行。3)进程已不是可执行的实体。2.8线程的实现一.线程的实现方式1.内核支持线程所谓的内核支持线程KST(Kernel Supported Threads),也都同样 是在内核的支持下运行的,即无论是用户进程中的线程,还是系统进程中 的线程,他们的创建,撤消和切换等也是依靠内核,在内核空间实现的。此外,在内核空间还为每一个内核支持线程设置了一个线程控制块,内核是根据该控

24、制块而感知某线程的存在,并对其加以控制。当前大多数OS都支持内核支持线程。内核支持线程主要有如下四个优点:(1)在多处理器系统中,内核能够同时调度同一进程中多个线程并行执行;(2)如果进程中的一个线程被阻塞了,内核可以调度该进程中的其它线程占有处理 器运行,也可以运行其它进程中的线程;(3)内核支持线程具有很小的数据结构和堆栈,线程的切换比较快,切换开销小;(4)内核本身也可以采用多线程技术,可以提高系统的执行速度和效率。内核支持线程的主要缺点是:对于用户的线程切换而言,其模式切换的开销较大,在同一个进程中,从一个线程切换到另一个线程时,需要从用户态转到内核态进行,这是因为 用户进程的线程在用

25、户态运行,而线程调度和管理是在内核实现的,系统开 销较大。2.用户级线程用户级线程ULT(User Level Threads)仅存在于用户空间中。对于这 种线程的创建、撤消、线程之间的同步与通信等功能,都无须利用系统调 用来实现。对于用户级线程的切换,通常发生在一个应用进程的诸多线程 之间,这时,也同样无须内核的支持。由于切换的规则远比进程调度和切 换的规则简单,因而使线程的切换速度特别快。可见,这种线程是与内核 无关的。我们可以为一个应用程序建立多个用户级线程。在一个系统中的 用户级线程的数目可以达到数百个至数干个。由于这些线程的任务控制块 都是设置在用户空间,而线程所执行的操作也无须内核

26、的帮助,因而内核 完全不知道用户级线程的存在。用户级线程的优点:(1)线程切换不需要转换到内核空间,对一个进程而言,其所有线程的管理数据结构均在该进程的用户空间中,管理线程切换的线程库也在用 户地址空间运行。因此,进程不必切换到内核方式来做线程管理,从而节 省了模式切换的开销,也节省了内核的宝贵资源。(2)调度算法可以是进程专用的。在不干扰操作系统调度的情况下, 不同的进程可以根据自身需要,选择不竹的调度算法对自己的线程进行管 理和调度,而与操作系统的低级调度算法是无关的。(3)=i用户级线程的实现与操作系统平台无关,因为对于线程管理的代码 是在用户程序内的,属于用户程序的一部分,所有的应用程

27、序都可以对之 进行共享。因此,用户级线程甚至可以在不支持线程机制的操作系统平台 上实现。用户级线程实现方式的主要缺点:系统调用的阻塞问题。在基于进程机制的操作系统中,大多系统调用将阻塞进程,因此,当线程执行一个系统调用时,不仅该线程被阻塞,而且进程内的所有线程都会被阻塞。而在内核支持线程方式中,则进程中的其它线程仍然可以运行。(2)在单纯的用户级线程实现方式中,多线程应用不能利用多处理 机进行多重处理的优点。内核每次分配给一个进程的仅有一个CPU,因 此进程中仅有一个线程能执行,在该线程放弃CPU之前,其它线程只能等待。3.组合方式有些操作系统把用户级线程和内核支持线程两种方式进行组合,提 供

28、了组合方式ULT/KST线程。在组合方式线程系统中,内核支持多KST 线程的建立、调度和管理,同时,也允许用户应用程序建立、调度和管 理用户级线程。一些内核支持线程对应多个用户级线程,程序员可按应 用需荽和机器配置对内核支持线程数目辺行调整,以达到较好的效果。 组合方式线程中,同一个进程内的多个线程可以同时在多处理器上并行 执行,而且在阻塞一个线程时,并不需要将整个进程阻塞。所以,组合 方式多线程机制能够结合KST和ULT两者的优点,并克服了其各自的不足。用户空间内核空间图2.18多线程模型二,线程的实现1.内核支持线程的实现在仅设置了内核支持线程的OS中,一种可能的线程控制方法是,系统在创建

29、一个新进程时,便为它分配一个任务数据区PTDA(PerTaskData Area),其中包括若干个线程控制块TCB空间,如图219所示。在每一个TCB中可保存线程标识符,优先级,线程运行的CPU状态等信息。虽然这些信息与用户级线程TCB中的信息相同,但现在却是被保存在内核 空间中。PTDA 进程资源TCB #1TCB #2 *TCB #3图2.19任务数据区空间内核支持线程的调度和切换与进程的调度和切换十分相似,也分抢占式方式和非抢占方式两种。在线程的调度算法上,同样可采用时间片轮转法. 优先权算法等。当线程调度选中一个线程后,便将处 理机分配给它。当然,线程在调度和切换上所花费的 开销,要比

30、进程的小得多。2用户级线程的实现用户级线程是在用户空间实现的。所有的用户级线程都具有相同的结 构,它们都运行在一个中间系统的上面。当前有两种方式实现的中间系统, 即运行时系统和内核控制线程。1)运行时系统(Runtime System)所谓运行时系统,实质上是用于管理和控制线程的函数(过程)的 集合,其中包括用于创建和撤消线程的函数、线程同步和通信的函数以及 实现线程调度的函数等。正因为有这些函数,才能使用户级线程与内核无 关。运行时系统中的所有函数都驻留在用户空间,并作为用户级线程与内 核之间的接口。2)内核控制线程这种线程又称为轻型进程LWP(Light Weight Process)o每一个进程都可拥有多个LWP ,同用户级线程一样,每个LWP都有自己的對据结构(如TCB),其中包括线程标识符,优先级,状态,另外还有栈和 局部存储区等。它们也可以共享进程所拥有的资源。LWP可通过系统 调用来获得内核提供的服务,这样,半一个用户级线程运行时,只要将它连接到一个LWP上,此时它便具有了内核支持线程的所有属性。 这种线程实现方式就是组合方式。任务1任务2任务3内核线程图2-20利用轻型进程作为中间系统三.线程的创建和终止1.线程的创建

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1