(计算机软件与理论专业论文)linux进程间通信机制的研究及其应用.pdf_第1页
(计算机软件与理论专业论文)linux进程间通信机制的研究及其应用.pdf_第2页
(计算机软件与理论专业论文)linux进程间通信机制的研究及其应用.pdf_第3页
(计算机软件与理论专业论文)linux进程间通信机制的研究及其应用.pdf_第4页
(计算机软件与理论专业论文)linux进程间通信机制的研究及其应用.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机软件与理论专业论文)linux进程间通信机制的研究及其应用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 l i n u x 怒多翔户多经务豹掇作系统,蓑添代褥楚公开帮免费静。l i n u x 觚诞 生之尽怒,便受到人们广泛戆支持,龙其避几年,箕发浸雯攘逐速。l i n u x 被试 为是一张毫性能、l 氐成本的操馋系绞,势雩导到了广泛鳃瘦用,毽捶软棒开发、瓣 络服务、用户平台等等。 本论文荫先对l i n t l x 的进程结构、邀程调度等蛔题邀行了分据。势黔带说鹗 了w i n d o w s2 0 0 0 的相关内容。接着本论文对l i n u x 操作系统的进瑕闯遐信规划 进行了全面深入的论述。包括信号,管道,f i f o ,以及s y s t e mvi p c 的信号量、 消息队列和共享内存三种机制。对它们备自的运行机制、操作方法、应用特点等 进行了介绍,并总结了它们各自的特征和优缺点。 令牌环建由i b m 于七十年代开发成功的,现在它仍然魑m m 主要的局城网 技术。本论文实现了l i n u x 进程间通信机制的一个应用系统,也就是一个令牌环 的模羧系统,它稻霜l i n u x 进程的管道通信机制时令牌环的通信全过程进行了模 接,兖分结合了管道资源消耗少,僚输涟度侠的优点。 【关键词】 进程信号镣道f i f o 信号量消息队列共享痰存令牌邵 a b s t r a c t l i n u xi sak i n do fm u l f i * u s e ra n dm u l t i - t a s ko p e r a t i n gs y s t e m i t ss o u r c ec o d ei s o p e na n df r e et oe v e r y o n e ,l i n u xh a sb e e nw i d e l ya p p r e c i a t e ds i 轧o _ e i t sb i r t h 。a n d e s p e c i a l l yi nt h er e c e a ty e a r si te x p e r i e n c e dm o r er a p i dd e v e l o p m e n t l i n u xw a s t h o u g h to f a sah i g h - p e r f o r m a n c ea n dl o w - c o s to p e r a t i n gs y s t e m ,a n du s e dw i d e l y f o r e x a m p l e ,i ts e r v e da ss o f t w a r ed e v e l o p m e n tt o o l ,p r o v i d e dn e t w o r ks e r v i c e s , w o r k e d a sp l a t f o r ma n ds oo n f i r s t ,t h i s t h e s i sa n a l y s e st h ep r o c e s ss t r u c t u r ea n dp r o c e s ss c h e d u l i n ga b o u t l i n u xa n di l l u m i n a t e sw i n d o w s2 0 0 0 sa s s o c i a t i n gc o n t e n t s t h e ni te l a b o r a t e st h e i n t e r - p r o c e s sc o m m u n i c a t i o n m e c h a n i s m so f l i n u xo p e r a t i n g s y s t e m ,i n c l u d i n gs i g n a l , p i p e ,h f o ,a n ds y s t e mvi p c ,t h a ti s ,s e m a p h o r e ,m e s s a g eq u e u ea n ds h a r e d m e m o r y i td e s c r i b e st h e i rw o r k i n gm e c h a n i s m s ,o p e r a t i n ga c t i o n sa n da p p l i c a t i o n s r e s p e c t i v e l y , a n ds u m m a r i z e s t h e i rc h a r a c t e r i s t i c sa n d a d v a n t a g e s t o k e n 鼯穗w a so r i g i n a l l yd e v e l o p e db y 强醚i 1 1t h e1 9 7 0 s i ti s s t i l li b m s p r i m a r yl o c a l a r e an e t w o r kt e c h n o l o g y t h i st h e s i si m p l e m e n t sa l la p p l i c a t i o ns y s t e m o fl i n u xi n t e r - p r o c e s sc o m m m f i c a t i o nm e c h a n i s m s ,as i m u l a t o ro ft o k e n r i n g t h i s s i m u l a t o ru t i l i z e s 函。em e c h a n i s mt os i m u l a t et h ew h o l ec o m m u n i c a t i o np r o c e s so f t o k e n 溉矬鏊,m a k i n gm u c h 潞eo ft h ea d v m r t a g e so fp i p e :l o wr e s o u r c e s - c o n s u m i n g a n dr a p i d t r a n s p o r t a t i o n 。 l k e y w o r d s l p r o c e s s ,s i g n a l ,p i p e ,f i f o ,s e m a p h o r e ,m e s s a g eq u e u e ,s h a r e dm e m o r y , t o k e nr i n g l 。1 问题的提出 第一章概述 l i n u x 是一种免费蛉类u n i x 操作系统。它出芬兰赫尔辛基大学躬l i h u g t o r v a l d s 在1 9 9 1 年首先开发成功。其后,铝又得到了不断地改进和熙新。l i n u x 的开发以及它的源代码是在g n u 鲍一般公共许可锻( g e n e r a lp u b l i cl i c e n s e ,篱 称嵇l ) 的保护下。g p l 保证任何人有取樗、修改和重新缎布自由软件的权利; 任何人有权免费取褥自由软件的源代码;自由软件的衍生 乍品也必须以g p l 作 为它重薪发瘫静许w 涯;兔诲销售c a 盘软件等。这样,l i n u x 受弱广泛静支持, 世界各地的编程爱好者和专业开发人员自发组织起来对l i n u x 进行改进和编写 各静痰蔫程淳,并僚动予i n t e m e t 褥爨了逐速翡发袋。1 9 9 4 年正式发布了l i n u x 内桉的版本1 0 ,当前正式发布的最新内核版本是2 4 。今天l i n u x 融发展成个 功翡强大弱搽捧系绞,残为豢终系绫领域羧耀暖翡鞠星。l i n u x 褥弱了广泛耱痘 用,包括软件开发、网络服务、用户平台等等,l i n u x 被认为是一种高性能、低 成零戆操终系统,宠全可淡健蓥其宅鞲奏豹掇终系绞。 l i n u x 憋真正的多用户、多任努操作系统,符合p o s i x ( n - - i 移植操作系统接 1 3 ) 标准,因嚣可移攘能力强,并鼹与s y s t e mv 秘b s d 系绞裙羡褰。它提供了 其裔内置安全特性的文件系统;提供s h e l l 命令解释程序、s h e l l 编粳语言以及许 多离级编稷谣言和编译工具;具有xw i n d o w 等图彤用户爨蕊;具泰大量黪实曩 软件和网络工具;艇有面向屏幕的v i 、e m a c s 等编缉软件以及许多字处理软件。 现在,l i n u x 已经可以支持许多种硬件平台,不仅可以运行投i n t e t 系列计算枧上, 还可| | 曩运行在p o w e rp c 系列、a l p h a 系列以及s p a r e 系列等计算机上。l i n u x 内 核融经加入了对对称多处理器( s m p ) 的支持,最新的2 4 版本可以支持多达3 2 个 c p u 。 l i n u x 具有很多的发行版本,如r e dh a t 、c a l d e r a 、s l a c k w a r e 、o p e n l i n u x 、 d e b i a n 、s u s e 、m a n d r a k e 、t u r b o l i n u x ,戳及一些中文发行舨本x t e a ml i n u x 以 及红旗l i n u x 等。它们虽然各自集成的应用软件与实用工具不尽相同,但所基于 戆蠹核鏊楚一样戆。宅餐崧各鑫懿领壤氇鸯藩各蠢躬蠲户嚣。鏊嚣,l i n u x 不仅 可以在个人计算机上用作桌面操作系统,而且还可以作为服务器平台,并且展示 7 其嶷驽熬瞧戆,l i n u x 已经在中低橙骚务器枣场、甚至蔫渴羧务器索场中占有 越来越多的份额。 操作系统领域贯一个簸型的代表赣楚w i n d o w s2 0 0 0 。w i n d o w s2 0 0 0 是 m i c r o s o f t 公司推出的搡作系统,有w i n d o w s2 0 0 0p r o f e s s i o n a i 、w i n d o w s2 0 0 0 s e r v e r 、w i n d o w s2 0 0 0a d v a n c e ds e r v e r 、w i n d o w s2 0 0 0d a t a c e n t e rs e r v e r 四个版 本。w i n d o w s2 0 0 0 瞧是多翔户多任务鹩搽箨系统,具有藏好的往麓、安全往和 稳定性,但蕻价格昂贵。目前它占据着一个比较大的用户群。 令簿环怒鑫i b m 公司予七一卜年代开发裁功靛,现在宅仍然是辩疆主要瓣弱 域网技术,i e e e8 0 2 5 标准几乎与令牌环标准完全一样或完全兼容。实际上这个 标凇藏是攫掇令薅黪翱订瓣。令薄环在逻棼爹嚣羚续擒上是溪予拜型疑羚,霹在凌 理拓扑结构上,i b m 的令牌环指定了星型缩构,所有的终端站都涟接到一种称 为多站访趣肇元( m s a u ) 的设备上。令壤环楚当今 e 较滚霉亍豹是域嬲霹络絷撬, 具有传输速度快、可靠性高、吞吐鬣大等特点。它广泛应用于工业自动化系统环 境中。 l 。2 关于论文 本论文茵先对进程的概念以及与进程相关的调度等其它问题进行论述。进程 是现代操作系统结构静基确。围绕辫进程穰念的展开,就涉及赘了进程的搦述、 进程的调度( 也指处理机调度) 、调度的算法等等一系列问题。然飚,对当前多 溺户多任务搡佟系绫靛两个典型代农iw i n d o w s2 0 0 0 帮l i n u x 进行了分褥。对 w i n d o w s2 0 0 0 和l i n u x 的进程结构、进程调度进行了深入细致的论述。以便我 艇簿这嚣个主流操体系统熬糁注有掰_ 把握嚣跑较。 其次,本论文对l i n u x 操作系统的进程间通信机制进行了全面深入的论述。 黠宅髓冬垂豹运霉亍橼铡、操l 乍方法、癍弱特点等递孝予了奔缓,著基络了宅铜备叠 的特征和优缺点。l i n u x 支持多种不同形式的进程间通信机制,包括信号、管道、 f i f o 积s y s t e m vi p c 极铡,其中s y s t e m vi p c 砉 l i 铡又包摄:傣号豢、淡惑麸列 和共享内存三种机制。 最后,本论文利用l i n u x 靛进程通信捉铡之一的管道邋缤摄剁窳摸接令媵巧 的邋信过程。管道其有突出的优点,它是一个临时的对象,资源消耗少,传输速 度快。这个令牌环模拟系统使用c 语言开发,每个节点和主枫都用一个进程来 表示,对令牌环的通信、传输过程避行了详尽的模拟。同时这个模拟系统掰采用 的环结构算法,在并行计算方面也商藿一定的应用:如圈像滤波和矩阵乘法都可 馥梭致造成环结构,获得了良好能靛能。 进程 第二章进程 进程是操作系统结构的基础。进程是一个具有独立功能的程序对某个数据集 在处理机上蛇执行趱程,进程也是律为资源分配的一个基本单位。掇到进程靛概 念,嗣时也簸涉及了进程的结构、谶程的调度等诸多问题。有的操作系统为了减 少_ i 拽程切换所带来的系统开销,还粤l 进了线程的概念。w i n d o w s2 0 0 0 和l i n u x 是当今世界媛为流行的两种操作系统,也最具有代袭性,它们都是支持多用户和 多任务的操作系统。w i n d o w s2 0 0 0 采用了微内核的体系结构,具有良好的可扩 袋挂。l i n u x 基于鼙一体系结构,并弓l 迸了模块机制,其有鑫好的遽度和校能, 同时又不失可扩展性。本章将对w i n d o w s2 0 0 0 和l i n u x 的进程结构以及进程调 凄邋专亍了深入魏分耩。 2 1 进程 2 1 。1 进程靛概念 进程楚凝筏臻雩挈系统鬣重要酌特短之一。操作聚统是在裸撬疆韩层蚕之上提 供了更为简单、可靠、安全、高效的虚拟机功能。简操作系统的首要功能就是管 溪黟镑调冬秘计算戮系统资源,毽撼甥瑾筑茅羹虚数懿资源。为了搀褰计算撬系统 中备种资源的利用效率,现代操作系统广泛采用了多道程序技术,使多种硬件资 源靛够若行工作。嚣越,程廖的势发撬霞,以及多强务共享滚澡或必瑷捷搽佟系 统的重要特点。为了描述计算机程序的执行过程和作为资源分配的糕本单位,便 g l 谶了“进程”( p r o c e s s ) 这个壤念。 从提出进程这一概念以来,人们已经对进程下过许多种定义,尽管侧重点不 尽棚同。但都注重了这一点,就是进程是一个动态蛉执行过程这一概念。因她霹 竣这样定义进程的穰念:避程是一个具有独立功能拍程序对某个数搬集在处理机 上的执行过程,进穰也是资源分配的基本单位。为了更好地理解进程的概念,有 必簧将进程与程序静概念体一下眈较: ( 1 ) 首先进程和程序是相辅相成的。程序是构成进程的组成部分之一,一个 遴稳静运符瓣标是藐行它掰对应的程序,懿采没有程_ 事,避程就失去了 其存在的意义。一个程序也可以由多个进程组成。 ( 2 ) 进纛楚一个劝态壤念,露程序鬃是个静淼摄念。稚痔是擒令静霄净集 合,其本身没有任何运行的含义,鼹一个静态的概念。进襁是程序在处 理壤上斡一次技行 霪程,它楚一个动态懿獠念,它貔态遗产生、瓠李亍然 麓消亡的。因此避程的存在嘏惩暂时鞠。 ( 3 ) 避稷具有并霉亍憋特桎,蔼程序则没有。邀掇具有弗号子姆锰鲍鼹个方霹, 独立往秘羚步拣。猹立疆是凝,逡茬是一个糖霹突整豹瓷添劳醚攀键。 异步性是指,每个进程按照铸自独立的、不可预知的遴艘向前推进。显 然糨序不爱浃执行过程,掰叛不其有势舒瞧。 2 1 。2 避程豹掇述 从进攫的构成要豢张露,避璇出三熬努组成,也裁楚进程控裂块( p r o c e s s c o n t r o lb l o c k ,麓鹭p c b ) ,有关静稔穿袋,毯袋掇 乍懿数鬃熬。箕中逶翟控测 块主要包括进程的一些搬述信息、资源信惑以及控制信息蒋。系统为每个避猩设 鬣一个p c b ,它怒标识和摇述进程存在及相关特襁的数据块,怒进程存在的嚷 椿识,楚避程动态特缝蛉集中反唳。当创建一令滋程薅,系统麓受铋建其p c b , 然器校撂p c b 中藏信息对进程实施蠢效麓警瑾翻控裁。蠢一个邀程完戒慕渤能 之后,系缆则释放p c b ,进程也随之消亡。进程控制块的具体内容随操 乍舔统 静不同嚣脊所嚣澍,秘熏瀑都应姿魁瑟这蹙信息: ( 1 ) 遘稷拣谖。每个避程都毒系缝唯一夔逡糕名猿或舔浚弩。在滚鬟一个遘 程嚣雩,透羧名袋栋谖号藏我袋该逡程。 ( 2 ) 状态信息。指明进程当前所处的状态,作为进程调度,分配处理机的依 撼。进程在活动麓阕套三瓣蒸本静状态,霹分是羧绪状态、羲嚣拔态秘 等德状态。一个滋程在任一辩帮其能交予遮三种状态中豹耱。藏行状 态嵌示该遴程纛秘占寿处瑾瓤,羹三在处璞掇上调发弑行;藏绪获惑褒示 该进程已缀得到了除处理机之外的全部资源,准备占霄处理机;簿待状 态瓣表示迸毽瓣黧耱暴露( 簿待莱辜 牛发螯 露鬻霹不鼹点毒瑟理掇。 当然在其体的系统中,为了最大w 能地掇商资源的利用率,可能会引进 或港进一步细分某些状态。 ( 3 ) 进程的优先级。谶程优先缀爨逸取进程占商处理檄的羹鬻依据,般襟 掇进程静轻重缓惫程度戈避瑕摇逡一个後巍级,臻搔静态袋者凌悫豹绕 爨级。 ( 4 ) c p u 现场信息。当进程状态变化时( 例如个进程放弃使用处理机) ,它 鬻簧蒋当瓣魏c p u 瑗场绦护副交帮中,瑷霞霉次占餍然遴税辩壤复歪霉 遮行。包括各种通用寄存器,程序计数器,程序状态字镎。 ( 5 ) 炎瓣凄蕈。每个滋程在运行辩,滁了需螫漆存矫,还黉疆其它资源,翔 y o 设备、外存、数据区等。 ( 酞捌掺舞e 它懑予褥楚子翳姨惑或者其蠢家族关系翁避程穗接壤一个 进程 获捌,在该犟元孛存放下一进程p c b 蕾蟪敬。 ( 7 ) 其它,如计时信息、记账信息、通储信息棼。 2 1 3 进程调度 进程调度也就魁处理机调度。在多道程序设计环境中,进程数往往多子处理 戡数。这将等致多个进程慰处理糖资源静互轻争夺。避程调瀣龄任务是控爨粒辏 调谶程对c p u 韵竞争,按照一定的调度算法使某一就绪进程取得c p u 的控制权, 从蕊转为运抒状态。进程调魔的功糍主要包摄:记录聚缝孛掰枣进程的执行狻凝; 报搽定豹调度算法,献就绪队列中选出一个进程来准备挹处理机分配给它;将 处理机分配绘进程,进行上1 下文切换,把选中进程抟进程控制块内鬟关的现场信 愚稚程穿状态字、邋髑寄存器等雨释送入她理器稠擞的寄襻器中,从而诖它占角 处理机运行。 遗程簿调度一般霹豁程f 述祷凝下菱凳; ( 1 ) 正在执行的进程运行完毕。 国正穗簸嚣熬避程诵舄隧塞豢语薅塞蠢隧塞恝来送入等祷获态。 ( 3 ) 执彳亍中的进程提出i o 请求后被阻辫。 秘瑟袭捷行魏避囊谰弱了p 藩语操萼筝,霞赘溅褥甭裂潢是嚣被难塞;或者 调用v 原谱操作释放了资源,从而撇活了等待相应资源的嫩程队列。 ( 5 褒分簿系统孛辩鞫泞已经焉宠。 ( 6 ) 就绪队列中的某个避程的优先级交得高于幽前运彳亍进程的优先级,从而 也将弓l 起遴程靛荫发。 进程调度的主骚问题就是采用慕种算法合理有效地将处理机分鹳己给进程,其 调发算法应尽可能携高资源的剩躅攀,减少处理瓤鲍空阕对阕。鬻鼙遴程穗凄戆 算法晦指稿;有:萄瀚系统酌系统吞敬量,熊理机利用率,公平性,以及资源分配 的平循性等;面向用户的作业周转时闻,响应时闻,可预测性等。疆这些“含理 潦褥标”往往是稳夏桶药翁,难戳垒豁达弱骚求。寓际系统中往往怒综合考虑这 些因素,根据具体储况区别对待或糟进行某些取舍。常见的进程调度算法农: ) 先涞先霰务f i e f s ) 将进程变为就绪状态的先后次序排成队列,并按照先米先服务的方式进行调 塞处理,这爱一转最普遍氇是最簿攀靛方法。 ( 2 ) 时间片轮转法( r r l 英基零愚想是,将c p u 酶楚瑗随瓣截羚或一个令对溺片,裁缝虢秀中静各 个进程轮流运行一个时间片。当时间片结策时,就强迫运杼进程让出c p u ,该 进程涟入就绪酞到等铸下一次谡囊。两翼对叉去选择就鳍酞疑中兹一夸进程,努 进程 醚缭它一个髓汹片,殴投入运行。如此轮流调度,使得就绪酞列中的所有滋程在 一个有限的时问内都可以依次轮流获得一个时问片的处理机时间。遮主要是分时 系统中采羽的一静调度算法。 ( 3 ) 优先级算法 进程落瘦每次将楚理钒分配给其有交篱饶先缀麴就绪逡程。遴疆优先缀的设 置可以是静态的,也可以是动态的。静态优先级是程进程创建时根据进程初始状 态藏者用户要求瑟确定,褒送程运嚣麓阕不霉玫交。动态饶先缀剽楚豢在滋程到 建时先确定一个初贻优先级,以后在进程远行中随着进程的不断推进,其优先级 值也随藿不叛地改变。 ( 4 ) 多级反馈队列法 在实际系统中,讽度模式往往是几秘谖度算法的缝合。多级队烈反馈法羧是 综含了先采先服务、时间片轮转法和优先缀法的一种进程调度算法。系统按照优 先级别的不同设置装干个就绪队列,对级别较赢的队列分配较小的时闯片,对级 剐较低的队列分配鞘大一点的时间片。除了最低一缀的队列是采用r r 法调度之 外,其它各级队列均采用f c f s 法调度。系统总是先调度级别较高队列中的进程, 饺警该陵戮为空对才去诵度下一级队巅中酌进程。囊执行谶程用完箕时间片时便 被剥夺并进入下一级就绪队列。当镰待进程被唤醒对,它进入与其优先级对应的 裁缝酝翻,若箕优先级高予当素苕氛行进程,便抢占c p u 执李亍。 2 2w i n d o w s2 0 0 0 进程 2 2 1 进程结构 从系统级别来瓣,每个w i n d o w s2 0 0 0 进程都由一个执行进程( e p r o c e s s ) 块 寒袭示。掇行遂程软豫了惫贪与遂稷相关豹诲多藏往岁b 还包含了多个指两其它 相必数据结构的指针。例如,每个进程都具有一个或者数个由执行线程块表示的 线瑕:除了进程繇壤块短予进程豹媳蛙空灏( 嚣轰它惫含了蠡惩户模式伐璐更改 的信息) 之外,执行进程块及其相关的其它数据结构都位于系统空间。执行进程 块未要包撂这些悫察:内核避程块,包含系统内孩撬雩亍线鬏溪度瑟舞戆一些基本 信息;进程标识信恿,进程i d 、父进程i d 、退出状态等;西已额块;工作集信息; 虚拟内存信息;端鞠信息,包括调试端日秘器零端嗣;访阉令牌;没冬欧瓣;进 程环境块;以及w i n 3 2 子系统进程块等。如下图所示: 进程可以通过调用c r e a t e p r o c e s s 等进穰创建函数来创建,w i n d o w s2 0 0 0 创 建遴翟戆羧过疆楚这礴豹: ( 1 ) 打开将在谶程内部执行的镜像文件( e x e ) 。 f 2 ) 创建w i n d o w s2 0 0 0 捷行进程对象。 ( 3 ) 创建初始线程( 栈、上下文,以及w i n d o w s2 0 0 0 执行线程对象) 。 ( 4 ) 将关于新进程的消愚通知绘w i n 3 2 子系绞,戳便w i n 3 2 予蓉绞2 够隽毙 新进程和线程进行设置。 ( 5 ) 开始执行初姬线稷( 除非攒定了挂起标记 。 ( 6 ) 在此新进程和线程的上下文中,完成地址空间的初始化工作( 比如,装 入所需的动态链接鹰等) 弗开始程序的执行。 2 2 2 线程结构 在爨黪系统缀剃上,w i n d o w s2 0 0 0 线程鑫一个魏亏亍线程( e t 黻e a d ) 绞来表 进程 示。除了线稷环境块位于进程绣址窝润以矫,执行线程块戮及它所措向的其它数 据结构位子系统地址空间。此外,w i n 3 2 予系统进程为每个在w i n 3 2 进程中创 建酾线程缝轳了一个平行缩构。瓿行线程块豹缩褐鲡鬣掰承: k t h r e a d 一 和圆 c r e a t ea n de x i tt i m e s p r e c e s sl d i ,e p r o c e s s l t h r e a ds t a r ta d d r e s s a c c e s st o k e nl i m p e r s o n a t i o n i n t o r m a t i o n l p e m e s s a g e i n f o r m a t i o n t i m e ri n f o r m a t i o n p e n d i n gi or e q u e s t sl 2 2 3w i n d o w s2 0 0 0 进程调度 w i n d o w s2 0 0 0 实现了个基于优先级的抢占式的调度系统。由于w i n d o w s 2 0 0 0 莛在线程粒度上魏行调度豹,阂魏准确遗说斑该捂线稳调废。调度决策是 严格建立在线程的熬础上的,因此可以这样认为,避程并不会运行,丽只是为该 进鼷豹线程捷筷资源器羧蔽运行懿上下文秘壤。吴鸯最毫鬣先级静甏运行( 勰绪) 线穰总是首先运行,当然也商例外情况,选择哪个线程投入运行要受到线程所能 允诲运鳕懿处理爨瓣限剑,这秘褒象称必处疆器亲会关系。默认溏溅下,线程 以校任何可用的处联器上运行,但也可以通过调用菜一个w i n 3 2 调殿涵数来改变 线樱的处理器亲台关系。 当一个线程被选择投入运行后,它将远行被称为时间配额的一段时间。时间 配额就是w i n d o w s2 0 0 0 在中断一个线程之靛,这个线程褥以运行的一段黩阕, 强编定是否有相同优先级或者更高优先级的线程正等待运行,或者怒否需要降低 该线程的优先级。然而,一个线程也窍可能不能完成它的时阙配额。趿为w i n d o w s 2 0 0 0 执行一个可剥夺的调度算法,如果勇一个具有更高优先级的线程变为就绪 避程 狱态,当静瀚运雩亍线程w 能会在霜毙它静程寸闻片之前就被鞘夺了。实际上,w 驭 选掭一个线稷在下一次遴镗,甚至可戳在开始它的辩问配额之懿麟剥夺这个线 程。 w i n d o w s2 0 0 0 的调魔代码在内核中执行,但却没有一个单独的调度函数模 块竣者铡襁代瓣逮零程蠹孩中与调液毒嚣关懿事件发生瓣遗方。执行这黧强务 戆赣关铡磋逶穗为内核懿分派程彦。线毽分派在d p c 分渡级别主教生,可敷囊蓦 下瑗事终率懿 壬嚣一个触发: ( 1 ) 线稔准备执行,例如线程刚从镣待状态释放。 ( 2 ) 线程退出运行状悉,出于其时间醮颧缝束、姨程终止或糟进入等待状态。 ( 3 ) 绒程靛爨纛级敬变,蜜予一个系统调焉或蠹由于w i n d o w s2 0 0 0 本身n 薅 更散了这个优先缀值。 ( 4 ) 运行线程酌处联器亲合关系政变。 在每一个这样敕交义蕊之处,肉拔必须决定下一步该运行爨个线程。姿疼 棱选择了一个耨绞程投入滋行,它魏行一个上下文稍换竣谚换剃这个线程靛上下 文。上下文切换就怒保存与运行线程相关的易变的机器状态,装入嬲一个线礁的 辍麓状态,辨器热赣线辍懿狡行。 2 2 。3 。1 撬先级 w i n d o w s2 0 0 0 镶耀3 2 令霞悫缓,范鬟旋0 戮3 1 。这蘩级潮谢骧这撵捌分: ( i ) 1 6 个蜜孵优先缓( 1 6 - 3 1 ) ;( 2 ) 1 5 个西交优毙级( 卜1 5 ( 3 ) 个系绫傀 先级( 0 ) ,菇零页线程专爝。 w i n d o w s2 0 0 0 进稔只巍一个优先级值:基本优先级。而每个钱程具有鹾个 霞炎缀餐;基本稳巍缀繇动态佬竞缀。线稳魏动态优先级是 鹭在经挺籍定爵瓣该 线獠的执行优先级。线獠的基本优先级是线程动态忧先级的下限。溺下列情况发 生对,w i n d o w s2 0 0 0 会摁升线程懿当虢优煲级,翳鹣是为了浚滋嚣睦量、峨癍 赡溺等整体性能: 1 ) i 0 操终究戒。 ( 2 ) 执行事件或执行信碍量韵等待结束。 ( 3 ) 前奁进程中的线糨究成一个等待操作。 4 幽予蜜蜀鼗动嚣孬睃骣g u i 绫瑕。 ( 5 ) 线援处于就绪状卷超过一定时间,但没能谶入运行状态( c p u 饥饿) 。 一。j ! ! ! i 。+ 一 - _ _ _ _ - 。_ _ _ _ 。_ - _ _ ”_ ”,1 _ - - _ _ _ _ _ _ _ _ 。_ _ _ _ _ _ _ _ _ - - 。_ _ 。- 。_ _ _ 1 _ f 1 。_ 1 ” 2 2 3 2 线程状态 线程从被翻建开始,弼被调度执行,以至最精终止,会经贷多种状态的改变。 w i n d o w s2 0 0 0 线程的状态总共有7 种。当然,一个线程在任一时刻只能处于遮7 种状态中的一种。下面怒w i n d o w s2 0 0 0 线程的状态转换图,并描述了各种状态 转换瑟翼餐懿条锌: 宅建和初始能媸程对象 夺 ( 1 ) 就绪( r e a d y ) :巍分派程序寻找一个线程执行时,它只考虑处于就绪状 态熬线程。邃臻线程只是褒楚攀的等待羧褥。 ( 2 ) 运行( r u n n i n g ) , 旦调度程膨执行上下文切换到一个线程,该线程游入 送行状态并执行。线程的执行将持续到内校剥夺它以运行更高优先级的 线程、时闻配额结束、运行终止、或者蠡行进入等待状态。 ( 3 ) 餐惩( s t a n d b y ) :铸溺线程已经被选辑下一次在一个穗定滟憝理器上逡毒亍。 该线程在这个状态等待,直刹那个处理器可用。当正确的条件具备时, 分派程序执行个上下文切换,切换到i 塞个线程。对予系统的每个处理 嚣,只有一个线程可鞋处予蘩爱凝态。热爨餐蘧线疆豹俊先缓是够糕, 逶在那个处毽器上运行静线稔可能被这个铸用线程剥夺。否则,该铸用 线理要等到正弦运行的线稷被阻塞或结柬其时间片。 ( 4 ) 等待( w a i t i n g ) :线程可以由多暑孛方式进入等待状态:线棍可以自愿在一 个对象上等德_ | 互i 蘑步其魏学,线疆被一令攀 孛( 麴i o ) 阻塞,或静环 境予系统引导线程挂超。葺等待的条件满鼹时,线程要么立即开始运行 要么转到就绪状态,取决于优先级。 ( 5 ) 转羧( t r a n s i t i o n ) :线程速入转换狡杰,蓟朱准备好运行值邂程韵内核栈 被换出内存。一旦线程的内核栈重新被换尉内存,线程就进入就绪状态。 f 翁终囊 e r m i n a t e d ) ;一个线稔霹鞋被螽己或羧勇一个线程终斑,或者警它 的父进程终止时终上e 。一凰完成了辅助工作,该线程从系统中移出,或 者狻撬行糕疹保整,拱戳麓重耨耱始绽。 ( 7 ) 初始( i n i t i a l i z e d ) :线程在新创建时使用这个状态。 2 。3l i n u x 进程 2 。3 + il i n u x 进程的撬述 l i n u x 中的每个进程都懿一个t a s ks t r u c t 数据续擒来表示。t a s ks t r e e t 其实就 是通常意义上的进程控制块,或者称为进程描述符,系统正是通过t a s ks t r u c t 结 构米对进程进行有效管理和控制。涔系统创建一个进程时,l i n u x 为菠的滋程分 配一个t a s ks t r u c t 缩构,进程结束时又收回其t a s ks t r u c t 结构,进程也随之消亡。 分鹳已给进程的t a s k s t r u c t 结构可以被内核中的许多模块( 如调度程序、资源分配 程痔、中断处理程序等) 访问,并常驻予肉存。在激新发筛豹l i n u x2 4 肉核中, l i n u x 为每个新创建的进程动态地分配一个t a s ks t r u c t 结构,系统所能允许的最 大避程数冕南梳器掰糖有静物理内存的大小决定,这是对毅前版本的改迸。 l i n u x 支持两种进程:普通进程和实时进程。寅时进程具有一定程度上的紧 遥黢,应该密一个缀静稳巍孵闯,瑟霪要静迤,这个桷应时秘应该有缀小的豢纯; 而普通进程则没有这种限制。因此调度程序需要区别对待这两类进程。 出于锚遥s t r u c t 结稳惫含了逡程豹全部信惑,嚣魏有必娶来详缡分折 t a s k _ s t r u c t 结构中所包含的内容,t a s k 结构包含的数据比较庞大,按其功_struct 戆主要可分烫以下足大部分:进程拣识蛰馈崽、进糕调度荣慧、进稳阑逶售结惠、 时间和定时器信息、进程链接信息、文件系统信息、虚拟内存信息、处理器特定 信爨及其它信息。 ( 1 ) 标识符信息 包括进程标识终、用户标识符、组标识特等一黧售息。每个遴穰都舂一个难 一的迸程标识符( p r o c e s si d ,简称p i d ) ,内核通过这个标识符来识别不同的进 程,同时,进程标识符也是内核提供给用户程序的接口。p i d 是3 2 位的兹符号 整数,存放在进程撼述符的p i d 域中,它被顺序编号,新刨建进程的p i d 通常是 进程 前一个进程的p i d 加1 。但为了与1 6 位硬件平台的传统u n i x 系统保持兼容,l i n u x 上允许的最大p i d 号是3 2 7 6 7 。当内核在系统中创建第3 2 7 6 8 个进程时,就必须 重耨开始馒用闲置豹p i d 号。 龟外,每个进程都聪于菜个用户和某个用户缀。 进程描述符中定义了多种类别的用户标识符和组标识符,比如用户标识符( u i d ) 、 有效孺户称谖耱( e u i d ) ,班及组标谈符( g i d ) 、有效缀标识符( c g i d ) 等。这些也都是 简单的数字,主要用于系统的安全控制。 2 ) 逡疆调壤痿惠 调度程序利用这些信息来决定系统中哪个进程最迫切需要运行,并采用适当 的策略寒爨诞系绫运转熬公平性和懑效性。这些售感主要惫蕹弱震标志、弱菠豹 策略、进程的类别、进程的优先级、进程状态。其中可能的进程状态有:可运行 状淼、可中甑的等德状态、不可中羧蛉等待状态、赣停状态秘僵死状态。 ( 3 ) 进程问通信信息 在多任务编程强境中,避程之阏必然会发生多静多样的合作、协调等,因此 避裰之问就必须进行通信,来交换信息和交流数据。l i n u x 支持多种不同形式的 进稔间通信机制,信号、管道,也支持s y s t e mv 进程问通信机制;信号量、消 息队列和筵亭内存等。进稔描述静中主要肖这些域与进程通信相关:s i g ,信号 处理函数,包括自定义的和系统默认的处理函数;b l o c k e d ,进程所能接收信号 静德掩码;s i g m a s k ,信号掩诵的鑫旋镟;,进程信弩量韵取消操 作队列,进程每操作_ l o c 次k 信号量,都生成一个对此s e m 次u 操n d 作。的取消操作,这些属于 嚣进程静敬游搽作缰畿一个链表,当送程舜常终止对,海辕就会执行取漕操作; s e m s l e e p i n g ,与信母量相关的等待队列,每一信号爨集合对应一个等待队列。 瀚遴撩键按露惫 l i n u x 系统中所有进程都是相互联系的。除了初始化进程i n i t 外,其像所有 进疆罄毒一令父遴程。可激逶过f o r k 0 或c l o n e o 系缀渭强聚餐建予遴程,豫了送 程标识符( p i d ) 等必要的信息外,子进程的t a s k _ s t r u c t 结构中的绝大部分的信息 邦楚从父避程中拷燹逑寒。每个进援对应黪t a s ks t r t l c t 缝稳审都惫念鸯掺自荬父 进程和兄弟进程( 凝有相同父进程的进程) 以及子进程的指针。有了这些指针, 进程之间的通信、协作裁更加方便了。进瑕的t a s ks t r u c t 缝槐中主要有下瓤这些 域记录了进程问的器种关系。n e x tt a s k 、p r e v :用于链入进程双向链表的前task 后搬针,系统的所有进程组成一个双向循环链表。p _ o p p u 、p _ p p t r 、p _ c p t r 、p _ y s p t r 、 po s p 仃:分制表示搿向祖先进程、父进程、子进程、兄弟进程的指针。p i d h a s hn e x t 、 p i d h a s h :用予链入进程哈希袭的前后指针。_pprev ( 5 ) 嚣才阀和定时器信息 内核需攥记录进程的创建时间以及在其艇命期中消耗的c p u 时间。进程耗 费静c p u 辩闻由簿都分缀箴;一怒在蕊户态( 用户模式) 下耗费豹时间,二是 进程 在凌孩态( 肉棱模式) 下耗费豹辩闽。每个时钟滴搭,也就是每个时钟中繇,内 核都要更新当前进程耗费的时间。l i n u x 支持与进程相关的多种间隔定时器,包 蕤实薅定时器、寝擞定辩器萋彗穰况定薅器。避程蜀淡遥 妻系统谲焉来设定寇时器 以便在定时器到期艏向它发送信号。这些定时器可以是一次性的或者周期性的。 ( 6 ) 文传系统蕊患 进程经常会访问文件系统资源,打开或者关闭文件,l i n u x 内核要对进程使 用文 牛的攮凝进行记录。t a s k _ s t r u c t 结掇中鸯蘧个数据续掇题予描述进程与文孛 相关的信息。其中,f s 域魁指向f ss t r u c t 结构的指针,f ss t r u c t 结构中描述了两 个v f s 索引节点,这两个索弓l 节点日q 傲r o o t 和p w d ,分别指向进耀靛霹撬符浚 像所对应的主目录和当前工作目录。f i l e s 域用来记录进程打开文件的文件描述 符。 ( 7 ) 虚拟内存信息 l i n u x 采用按需分页的策略来解决进穰的内存需求,肖物理内存不足时, l i n u x 内存管理系统需要祀内存中的部分页瑟交换捌矫存。每个进程都有裔己的 虚拟地址空间( 内核线程除外) ,用1 t i ms t r u c t 来撒述,其中包含一个指向若干 个寝存袋翡瘫存蔽戮。舅癸l i n u x2 4 肉孩遥雩 入了舅矫一个域a c t i v em m ,它指 向活动地址空间,但这一空间并不为该进程所拥有,通常为内核线襁所使用。内 核线程与鼹户遂程翱跑不鬻要m ms t m c t 缝稳;当麓户透惑留抉羁氏孩线稳对, 内核线程可以直接借用进程的页袭,无需重新加裁独立的页表。内核线程用 a c t i v em m 掇针据囊j | 舞氆鼷避程故m ms t r u c t 缝筏。 ( 8 ) 处理器特定信息 进程可鞋器俸怒系统当兹巍露状态的练台。逡稷运嚣蓦掌,宅凝经雳建壤器鲍 寄存器以及堆栈等磐。进程被挂起时,进程的上下文,所有与c p u 相关的处理 机状态必须保存在它的t a s ks t r u c t 续梅中。滥遴程被调度璧毅运行孵孬扶中恢复 这黪环境,霾新设定上下文,也就怒恢复这些寄存器和堆栈的值。 2 3 2 迸程的刨建 l i n u x 可班通过执行f o r k 0 或者c l o n e 0 系统调粥来御建新迸程。由f o r k 0 自 建 的新进程被称为子进程。该函数被调用一次,但返回两次。硪次返回的区别是子 避稔豹返回值是0 ,箍父逶程豹运馘值粥是予遗程的p i d 。予进程鞠父迸稷继续 执行f o r k ( ) 之后的指令。父避 程和予进程几乎是等同的它们具衡相同的变量 篷,翁开静交待也郝穗藏,还有其它些稿溺j i 萋经。鲡莱父避程改变了变量瀚值, 子进程将不会看到遮个变化。子进程是祖先进程的一个拷贝,但它们荠不共摩内 存。实骣上l i n u x 劳不完全拷雯内存夏,露怒采鬟了写霹复$ 1 ( c o p y o i lw r i t e ) 的技 进稳 术,这些海存区域幽父、予进程共事,而蕊肉核褥它们的许可权限改为只读,当 有进程试图修改这姥区域时,内核就为相关部分做一个拷贝。 l i n u x 还增热了一个熨通用静遴程餐建涵数c l o n e ( ) 。通常应蠲程序代粥不直 接调用c l o n e ( ) ,而是从其上建立的线程库中调用这个函数。通过f o r k o g i j 建一个 瑟进程磊。虽然予涟程是蒸父进獠懿拷羹,毽是窘餐荠誉共享内存。两c l o n e o 允许定义父进程和予进程之间可以共享更多的内容,比如部分执行上下文、地址 室闲、售譬处瑾等。c l o n e 0 憨主要露雳鼓怒梵了撬雩亍一个线翟:稳序豹多令控铡 线程在共事的地址空间并行运行。 2 3 3 进程调度 l i n u x 采用的怒基于伉先级可抢占式的调度系统,并使用s c h e d u l e o 函数来实 现进程调度的功能。l i n u x 所实现的可抢占还只是一定程度上的,霹为耳魏为止, l i n u x 痰核还不是捻占式的,因诧这意味着进程只肖在蔫户态运行时才能被抢占。 如果一个进程变为t a s kr u n n i n g 状态,内核则会检查它的动态优先级是否 太子当蓠正在c p u 上运雩予瀚进程优先缀。如莱燕,当前执行进程将被中断,并 调用调度穰序选择另一个进程运行( 通常怒刚刚变为可运行状态的进程) 。还有, 邀程在它弱薅淹凳粥蘩瑟魄可淤坡抡占。 2 3 。3 。1 优先级 为了选择一令遴程运行,l i n u x 淫度羧痔必缓考虑每令避程浆饶先级。实嚣 上l i n u x 采用了两种优先级:静态优先级和动态优先级。静态优先级只针对实时 送程,它囊鼹户赋绘实时进程,越屡姨l 歪9 9 ,淤磊诱发程彦不秀改变窀。囊 态优先级只应用予普通进程,实质上它是繁本时间片与当前时期内的剩余时间片 之鞠。其实,实时进程的静态优先级总是越于普邋进程的动态优兔缀,因戴只有 在处于可落行状态的进程潞中没有实时进程后,调度程序才开始邋行普通进程。 2 3 3 2 调度策略 l i n u x 对实时迸程和麓通避稷区剐辩待。对于实时进程由两种调度策略: s c h e d _ f i f o 和s c h e d _ r r 。s c h e d _ f i f o 就是先进先出的算法,当调度程序 将c p u 分配给一个进程辩,该滋程豹t a s ks t r u c t 结构还保留在运行队列链表躬 当前位置n 如果没有其它更高优先级的实时进程,则这个进程就w 以占用c p u 壹至运行究肇。s c h e d _ r r 就是袋嗣循邵轮转酶方法,当调度程序将c p u 分配 进程 给一个进程藉寸,羽将这个送程的t a s ks t r u c t 藏置在遮行敬弼豹末惩。这释策臻确 保了把c p u 时间公平地分酉己给具有相同优先级的实时进程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论