网站大量收购闲置独家精品文档,联系QQ:2885784924

Solaris的线程技术.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.Solaris简介 2.进程和程序 3.线程与进程 4.线程 4.1线程结构 4.2线程同步 4.3线程属性 5. 进程并发性问题 1.Solaris 简介 Solaris 是Sun Microsystems研发的计算机操作系统.它被认为是UNIX操作系统的衍生版本之一.目前Solaris属于混合开源软件。2005年6月14日,Sun公司将正在开发中的Solaris 11的源代码以CDDL许可开放,这一开放版本就是OpenSolaris。 2.进程和程序 进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)一个进程只能对应一个程序,一个程序可以对应多个进程。进程和程序的关系就像戏剧和剧本之间的关系。 3.线程与进程 ⑴线程是进程内一个相对独立的、可调度的执行单元。 ⑵线程是操作系统中的基本调度单元,因此线程中应包含有调度所需的必要信息。 ⑶由于线程是被调度的基本单元,而进程不是调度的单元,所以每个进程在创建时,至少需要同时为该进程创建一个线程。也就是说进程中至少要有一个或一个以上线程,否则该进程无法被调度执行。 ⑷进程是被分给并拥有资源的基本单元,同一进程内的多个线程共享该进程的资源。但线程并不拥有资源,只是使用它们。线程有生命期,有诞生和死亡。在生命期中有状态的变化。 4.1 Solaris线程的结构 Solaris包括了许多用户级的线程库, 可用来进行快速、轻量级的线程创建、终止和转换。 Solaris核心线程池很小, 较小的核心线程池可以确保线程间的一致性。核心线程由核心去调度,核心线程是LWPs(LightWeight progress 轻量级进程),这样可以保证较小的资源开销和执行时的快速反应。 4.2线程的同步 线程的使用, 主要在于一个进程中多个线程的协同工作, 所以线程的同步就很重要。线程的同步用于线程共享数据, 转换和控制线程的执行, 保证内存的一致性。如果所处理的内容与同步对象有关, 同步时线程的转换在用户级别上实现, 因此速度很快。 4.3线程的属性 在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。线程具有以下属性。 读者进程 P 1 : begin P(mutex); readnum=readnum+1 ; if readnum=1 then P(write); V(mutex); readfile P(mutex); readnum=readnum-1 : if readnum=0 then V(write); V(mutex); end 写者进程P 2 : begin P(write); write file V(write) end 读者进程Pi(i=l,2…n): begin P(s); P(Sn); V(S); readfile; V(Sn) end 写者进程P j(j=1,2…k): begin P(s); for i:1 to n do P(Sn); writefile; for i:1 to n do V(Sn); V(S); end 管程机制是用于解决进程同步问题的一种最行之有效的方法.其基本思想是将共享变量和对它们的操 作集中在一个模块(过程) 中,操作系统由这样的模块构成,模块之间相互关联,易于维护和修改,易于保证进程执行的正确性.管程作为一个模块,它的类型定义如下: monitor_name:MONITOR; 共享变量说明; define本管程内部定义、外部可调用的函数名表; use本管程外部定义、内部可调用的函数名表; 为了保证共享变量的数据一致性,管程应互斥使用.管程通常是用于管理资源的,因此管程中有进程等待队列和相应的等待和唤醒操作.在管程人口有一个等待队列,称为人口等待队列.当一个已进入管程的进程等待时,就释放管程的互斥使用权;当已进入管程的一个进程唤醒另一个进程时,两者必须有一个退出或停止使用管程.在管程内部,由于执行唤醒操作 ,可能存在多个等待进程(等待使用管程),称为紧急等待队列,它的优先级高于人口等待队列.因此, 一个进程进入管程之前要先申请,一般管程提供一个enter过程;离开时释放使用权,如果紧急等待队列不空,则唤醒第一个等待者,一般也F1管程提供外部过程leave。管程内部有自己的等待机制。 reader(读者进程) : while(true) { bulletin.enter(); bulletin.start_read(); re

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档