??xml version="1.0" encoding="utf-8" standalone="yes"?>色噜噜狠狠先锋影音久久,久久―日本道色综合久久,久久99精品国产99久久http://www.shnenglu.com/chxzwj/category/17957.html有希望是q福的…?/description>zh-cnSun, 20 Nov 2011 08:01:24 GMTSun, 20 Nov 2011 08:01:24 GMT60存储pȝ理http://www.shnenglu.com/chxzwj/articles/159408.htmlchxzwjchxzwjMon, 31 Oct 2011 13:10:00 GMThttp://www.shnenglu.com/chxzwj/articles/159408.htmlhttp://www.shnenglu.com/chxzwj/comments/159408.htmlhttp://www.shnenglu.com/chxzwj/articles/159408.html#Feedback0http://www.shnenglu.com/chxzwj/comments/commentRss/159408.htmlhttp://www.shnenglu.com/chxzwj/services/trackbacks/159408.html

1. E序的处理步?/span>

1) ~译

2) 链接

① 静态链?/span>

② 动态链?/span>

3) 装入

① l对装入方式

② 静态重定位

③ 动态重定位

2. 内存的分配方式:

1) L分配方式

① 分页理

② 分段理

③ D页式管?/span>

2) q箋分配方式

① 单一q箋分配

② 固定分区分配

③ 可变分区分配Q有四种方式Q首ơ适应法Q@环首ơ适应法Q最佳适应法Q最差适应法?/span>

3. 虚拟存储器:

1) h分页

① Opt

② Lur

③ fifo

2) h分段



chxzwj 2011-10-31 21:10 发表评论
]]>
操作pȝ概论http://www.shnenglu.com/chxzwj/articles/158847.htmlchxzwjchxzwjFri, 21 Oct 2011 13:26:00 GMThttp://www.shnenglu.com/chxzwj/articles/158847.htmlhttp://www.shnenglu.com/chxzwj/comments/158847.htmlhttp://www.shnenglu.com/chxzwj/articles/158847.html#Feedback0http://www.shnenglu.com/chxzwj/comments/commentRss/158847.htmlhttp://www.shnenglu.com/chxzwj/services/trackbacks/158847.html

1. 操作pȝ的概c特征、功能和提供的服?/span>

1) 操作pȝ是计机pȝ资源的管理者,为用h供接口?/span>

2) 操作pȝ的功能与特征

① 操作pȝ功能模块作ؓҎ子程序,为用h供系l调用?/span>

② 操作pȝ作ؓ资源的管理者?/span>

③ 操作pȝ以进E组lŞ式ؓ用户提供服务?/span>

④ 操作pȝ作ؓ服务提供者?/span>

2. 操作pȝ的发展与分类Q单道批处理Q多道系l,实时pȝQ分时系l?/span>

3. 操作pȝ的运行环?/span>

1) 操作pȝ的进E空_用户E序区,用户数据区,用户栈区Q核心栈区,pȝE序以及数据区?/span>

2) 中断也称外中断,主要是指cpu指o以外的事件的发生Q异常称为内中断Q也叫例外或者陷入,主要来自于cpu指o内部的事件。异怸能被屏蔽Q一旦出玎ͼ立即处理?/span>

3) 中断的分U?/span>

4) 中断/异常相关概念

① 断电QCPU刚执行完的那条指令成为断炏V?/span>

② 恢复点:中断时程序计数器所指的地址为恢复点?/span>

③ 态和目?/span>

④ 中断向量以及PS和PC

5) 中断异常处理q程Q整个中?异常从发现到处理完毕是由软g和硬件相互配合协调完成的。在中断处理q程中,一般包括保存现场、分析中?异常原因、进入不同中?异常的响应处理程序、最后可能重新选择E序q行、恢复现场等q程?/span>

6) pȝ调用是管态和目态之间的接口。应用程序通过陷入Q进入内核态,os内核q行异常处理E序Q系l程序根据系l调用的cdP索系l调用的散{表中的服务程序地址Q到具体的服务程序进行相应的pȝ调用Q结束后Q进行进E调度程序,恢复q程现场?/span>

7) 用户界面Q用户用命令语a描述要求计算机去做的事情?/span>

① 命o语言Q系lؓ支持命o语言的解释执行,讄了一个命令解释程序负责解释执行用户当前输入的命oQ用户在l端上输入一条命令时Q命令解释程序要做的工作如下Q判断命令的合法性;识别命oQ如果是单命令,则进行系l调用)Q如果是不认识的命o关键字,则在U定的目录下查找与命令挂念子同名的执行文Ӟ创徏子进E去执行“执行文g”Q等待子q程l束后,q回l箋d下一条命令?/span>

② 囑Ş用户界面Qwindowspȝ初始化后Qؓ用户生成了一个explore.exe的进E,q行的是L口界面的解释E序?/span>

4. 操作pȝ体系l构

1) 大内?/span>

2) 微内?/span>



chxzwj 2011-10-21 21:26 发表评论
]]>
q程与线E?/title><link>http://www.shnenglu.com/chxzwj/articles/158824.html</link><dc:creator>chxzwj</dc:creator><author>chxzwj</author><pubDate>Fri, 21 Oct 2011 07:09:00 GMT</pubDate><guid>http://www.shnenglu.com/chxzwj/articles/158824.html</guid><wfw:comment>http://www.shnenglu.com/chxzwj/comments/158824.html</wfw:comment><comments>http://www.shnenglu.com/chxzwj/articles/158824.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/chxzwj/comments/commentRss/158824.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/chxzwj/services/trackbacks/158824.html</trackback:ping><description><![CDATA[<div><div><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; "></span></p><div><div><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">1. </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程与线E?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">1) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程概念Q由E序和代码、进E空间、系l资源、栈区组成,为对q程理Q通过PCB实现?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">2) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程的状态和转换Q创建,qAQ运行,dQ结束?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q到创建:W一个进E有pȝ初始化生,以后有父q程通过创徏q程的系 l调用生?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">创徏到就l:创徏完成后,q入qA状态?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">③ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">qA到运行:被调度程序选中Q分配到处理Z执行?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">④ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q行到结束:调用l束q程pȝ调用或者异常流产,q行l束?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">⑤ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q行到就l:旉片到或者被高优先q程打断</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">⑥ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q行到等刎ͼ通过pȝ调用Q请求某U资源,未得刎ͼ处于{待状态;pȝ调用是目态到态的q程?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">⑦ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">{待到就l:{待的事件来?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">3) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程控制Q?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程创徏与终l:主要有初始化PCB表,|进EؓqA状态?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">模式切换Q两U模式,目态和态;划分的理由是保护操作pȝ和操作系l的数据表格不被可能出错的程序破坏。从态到目态是通过操作pȝ内核E序修改E序状态字实现Q从目态到态是通过异常Q也叫自陗例外、内中断Q不可屏蔽,有指令出错或者缺触发)或者外中断Q有g产生Q可屏蔽Q。(内中断和外中断,l称中断Q;q程从目态到态,只需保存q程的处理机信息。进行切换,要保存进E空间信息?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">③ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程切换Q保存处理机信息Q修改进E控制块Q修改存储管理数据?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">4) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">作业与进E的关系</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">批处理系l中作业与进E的关系Q由SPooling输入q程作业放入输入井Q成为后备作业,׃业调度程序选择后备作业Q创建根q程Q可以有根进E创建更多的子进E,共同完成作业Q由作业l止E序l至完成的作业,随后作业送入输出井,有输E把数据送入打印机?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">分时pȝ中作业与q程的关p:用户通过命o语句逐条Cpȝ应答式地输入命oQ提交作业步骤?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">③ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">交互式地提交批作业:pȝ有专门的调度E序Q负责从作业队列中,选取作业Qؓ选取的作业创建根q程Q执行作业说明书中的命o.</span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">5) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程通信Q方法:׃n存储ҎQ需要进行pv操作Q由于进E空间相对独立的Q因此要通过Ҏ的系l调用实玎ͼQ消息传递方式(通过发送和接受原语实现通信Q?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">6) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">多线E概念与多线E模型:q程只作为除cpu以外的资源;U程则作为处理机的分配单位?/span></p><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">2. </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">处理?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">1) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">调度的基本概?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">高调度Q从外存上等候调度的作业中,选择一个调入内存,分配资源Q创E,挂到qA队列上?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">中调度Q把暂时无法q行的进E调入外存,减少内存I间的浪费;{内存空间空Ԍ把外存有条g的进E重新调入内存。引入中U调度,主要提高内存使用率和提高pȝ的吞吐量。调度出ȝq程为挂L态;中调度实质为兑换?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">③ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">低调度Q进E调度?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">2) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程调度的方式:</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">剥夺式调度:有优先原则Q时间片原则?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">非剥夺式调度Q除q程q行l束或者进入阻塞状态以外,q程一直占用处理机?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">3) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程d攑ּ处理机的原因有:</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程执行完毕</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程q入d状?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">4) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">在可剥夺的进E调度中Q新qA的进E会按照某种原则Q剥夺正在运行的q程的处理机Q进E申误度的时机Q有以下情况Q?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">中断处理完毕Q引h个进E变成就l状态?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程释放临界区,引v{待该界区的进E就l?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">③ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">当进E发生系l调用,引v某个旉发生Q导致其他等待进E就l?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">④ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">引v其他M原因Dq程为就l态时?/span></p><p style="margin-left:41.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">MQ当有新q程qAӞ引发q程调度的申诗?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">5) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">在可剥夺式进E调度系l中Q即便没有新的就l进E,Z使所有就l进E占用处理机Q可在下q情况下甌q程调度Q?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">旉中断发生Q时间片刎ͼ其他q程h调度?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">M引v优先U发生变化时Q应h重新调度?/span></p><p style="margin-left:41.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">操作pȝq不一定要在引发进E调度原因时Q马上进行进E调度?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">6) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程的调度、切换、时机:一般来_h调度--->调度----->切换Q三个事件应该一气呵成;但在现在操作pȝ中,不能q行q程的调度与切换的情冉|Q?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">处理中断q程中?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程在操作系l那内核临界Z?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">③ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">其他需要完全屏蔽中断的原子操作q程中?/span></p><p style="margin-left:41.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">在上q的q程中,引发调度的条Ӟq不能马上进行调度,pȝ只是讄h调度标志Q等走出上述q程后,才进行调度和切换。应当进行进E调度和切换的时机如下:</span></p><p style="margin-left:41.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; "><1>,发生引v调度事gQ且当前q程q入d状态,可马上进行调度(若os只有在这U情况下q行调度Q说明os是非剥夺调度。)</span></p><p style="margin-left:41.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; "><2>,当中断处理结束或者自陷处理结束后Q返回被中断q程的用h程序现场前Q若|上h调度标志Q即可马上进行调度与切换。(实现了剥夺式调度Q?/span></p><p style="margin-left:41.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">切换往往是在调度之后发生的;典型的进E切换需要保存原q程当前切换点的现场信息Q恢复被调度q程的现Z息。现Z息有QPCQPSQ其他寄存器的内宏V内核栈指针Q进E存储空间的指针?/span></p><p style="margin-left:41.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Zq行q程现场切换Q操作系l内核将原进E的上述信息推入当前q程的内核栈保存它们Qƈ跟新堆栈指针。内总新进E的内核栈中装入新进E的现场信息Q还要更新当前进E空间的指针Qƈ且作废处理机联想存储器中有关原进E的信息。在内核完成清除工作后,重新讄PC寄存器,控制转到新进E的E序Q开始运行?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">7) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">调度的基本准则:</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">从用戯度:周{旉D,响应旉短,截止旉的保?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">从系l角度:吞吐量达Q处理机利用率高Q各c资源^衡利用?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">8) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">调度法Q?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">先来先服务调度算法(可不剥夺式调度)</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">优先U调度算法,两种Q非可剥夺式优先U调度算法和可剥夺式优先U调度算法?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">③ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">旉片轮转算法发Q先采用先来先服务,然后旉片到Q把q程挂到qA队列的末。时间片太大Q那么将退化ؓ先来先服务算法;若时间片太小Q那么切换过于频J,处理机开销变大Q效率降低?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">④ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">短进行优先调度:优先选择q行旉短的进E。(不可剥夺方式Q?/span></p><p style="margin-left:41.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">短进E优先算法和先来先服务算法都是非剥夺的,因此不能用于分时pȝ中,q是因ؓ不能对用户及时响应?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">⑤ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">最高响应比优先法Q对短进E优先的改进Q属于非可剥夺式法。按照此法Q每个进E都有一个优先数Q该优先C但是要求的服务时间的函数Q而且是该q程得到的服务所p的等待时间的函数。进E的动态优先计公式:优先?nbsp;= Q等到时?h服务旉Q?Q情感求服务旉Q,h服务旉是分母,故对短进E有利,他的优先数高Q可以优先运行。但׃{待旉是分子,故长q程{待较长的时_从而提高其调度优先敎ͼ被分l了处理机。进E一旦得到锤击,他就一直运行到q程完成Q中间不被抢占。可以看?#8220;{待旉+h服务旉”是pȝ对作业的响应旉?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">⑥ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">多反馈队列调度法:采用多队列Q每U队列的优先U不同,优先U大的队列,旉片短。除最后一U别采用旉片轮转法后,其他的队列采用先q先出算法?/span></p><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">3. </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">q程同步</span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">1) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">同步关系Q互斥关p;临界资源Q界区</span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">2) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">实现临界D问题的gҎQ?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">屏蔽中断</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Test_and_set指o</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">③ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Swap指o</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">④ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">信号?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">⑤ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">程Q由一l同步变量和使用同步变量的过E组成;是更高的同步与互斥的抽象,但其解决同步与互斥的能力低于信号量机制?/span></p><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">4. </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">死锁Q在一个进E集合里面,若每个进E都在等待某些释放资源的旉的发生,而这些事件又必须有这个进E集合中的某些进E生,成q些集合处于死锁状态?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">1) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">死锁条gQ?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">互斥。必需要用互斥的资源</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">占用{待?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">③ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">非剥?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">④ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">循环{待</span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">2) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">死锁处理{略Q?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">死锁防止Q通过应用~程或者资源设计破坏死锁条件?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">死锁避免Q分配资源时Q通过判断如果满q次资源分配后,仍存在一条\径,使系l不会进入死锁状态,如果没有q种路径Q则拒绝分配?/span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">3) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">死锁防止Q?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">破坏互斥条g</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">破坏占有{待条g</span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">③ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">破坏非剥夺条?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">④ </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">破坏循环{待条g</span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">4) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">死锁避免Q银行家法</span></p><p style="margin-left:42.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">5) </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">死锁与解除Q?/span></p><p style="margin-left:21.0000pt; text-indent:20.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">① </span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">:定时q行死锁程序?/span></p><p style="margin-left: 21pt; text-indent: 20pt; margin-bottom: 0pt; margin-top: 0pt; text-align: left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">② </span><span style="font-size: 10.5pt; font-family: 宋体; ">解除Q删除某个进E,释放资源?br />信号量机制相关代码:<br /></span></p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">//整型信号?br />wait(S)<br />{<br />   </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(S</span><span style="color: #000000; "><=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br />   S</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />}<br />signal(S)<br />{<br />   S++;<br />}</span></div>     ׃整型信号量不满q程同步的第四个原则“让权{待”Q当wait操作时若信号量S<=0Q那么就会不断的循环试S的|不会释放CPU,记录型信号量可以解决q个问题Q?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">// 记录型信号量<br />typedef </span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "><br />{<br />   </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> value;<br />   </span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> process </span><span style="color: #000000; ">*</span><span style="color: #000000; "> L;<br />}semaphore;<br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> wait(semaphore S)<br />{<br />   S.value</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />   </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(S.value</span><span style="color: #000000; "><</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />   {<br />      add </span><span style="color: #0000FF; ">this</span><span style="color: #000000; "> process to S.L;<br />      block(S.L);<br />   }<br />}<br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> signal(semaphore S)<br />{<br />   S.value</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />   </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(S.value</span><span style="color: #000000; "><=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />   {<br />      remove a process P from S.L;<br />      wakeup(P);<br />   }<br />}</span></div>以下丑և几个l典的同步问题:<br />1Q生产者消费者问?br />问题描述Q生产进E和消费q程׃n大小为n的缓冲区Q只要缓冲区没有满,生者就可以把品放入缓冲区Q只要缓冲区不空Q消费者就可以从缓冲区中取出消息?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Semaphore mutex </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />Semaphore empty </span><span style="color: #000000; ">=</span><span style="color: #000000; "> n;<br />Semaphore full  </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />producer()<br />{<br />   </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />   {<br />      make a product;<br />      wait(empty);<br />      wait(mutex);<br />      add a product to buffer;<br />      signal(mutex);<br />      signal(full);<br />   }<br />}<br />consumer(){<br />   </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">) <br />   {<br />      wait(full);<br />      wait(mutex);<br />      remove a product from buffer;<br />      signal(mutex);<br />      signal(empty);<br />   }<br />}</span></div>2,读者写者问?br />问题描述Q若q个读者和一个写着׃n一个文Ӟ写着在这个文件上写的时候不允许有读者读Q党读者在读这个文件的时候,不允许写?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">int</span><span style="color: #000000; "> count </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;                                 //记录读者的数量<br />semaphore mutex </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;                      //更新cout变量?br />semaphore rw </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;                           //读者和写着互斥讉K<br />writer()<br />{<br />   </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />   {<br />      wait(rw);<br />      writing;<br />      signal(rw);<br />   }<br />}<br />reader()<br />{<br />   </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />   {<br />      wait(mutex);<br />      </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(count </span><span style="color: #000000; ">==</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)                           //若当前没有读者,甌阅读<br />         wait(rw);<br />      count</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />      signal(mutex);<br />      reading;<br />      wait(mutex);<br />      count</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />      </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(count </span><span style="color: #000000; ">==</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)                          //若当前没有读者,释放信号量,写者可以进?br />         signal(rw);<br />      signal(mutex);<br />   }<br />}<br /></span></div>3Q打印机问题Q问题描qͼ3个ƈ发进E,׃n打印机,只有一个缓冲区QR从输入设备读信息Q读出后Q放入缓冲区Q进EM在缓冲区中加工信息;q程p把加工后的信息,输出Q?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Semaphore m1 </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;      </span><span style="color: #008000; ">//</span><span style="color: #008000; ">是否有未被处理的数据</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">Semaphore m2 </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;      </span><span style="color: #008000; ">//</span><span style="color: #008000; ">是否有被处理的数?/span><span style="color: #008000; "><br /></span><span style="color: #000000; ">Semaphore empty </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />Semaphore mutex </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />R()<br />{<br />   </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />   {<br />      wait(empty);<br />      wait(mutex);<br />      put data to buffer;<br />      signal(mutex);<br />      signal(m1);<br />   }<br />}<br />M()<br />{<br />   </span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />   {<br />      wait(m1);<br />      wait(mutex);<br />      process the data;<br />      signal(mutex);<br />      signal(m2);<br />   }<br />}<br />P()<br />{<br />   wait(m2);<br />   wait(mutex);<br />   output the data;<br />   wait(mutex);<br />   wait(empty);<br />}</span></div><br /><p> </p><p style="margin-bottom:0pt; margin-top:0pt; text-align:left; "></p></div></div><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; "></span></p></div></div><img src ="http://www.shnenglu.com/chxzwj/aggbug/158824.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/chxzwj/" target="_blank">chxzwj</a> 2011-10-21 15:09 <a href="http://www.shnenglu.com/chxzwj/articles/158824.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.cnhuirui.cn" target="_blank">ҹþӰԺ</a>| <a href="http://www.eiszar86.cn" target="_blank">þþþavר </a>| <a href="http://www.b3382.cn" target="_blank">˾Ʒþö</a>| <a href="http://www.deiden.cn" target="_blank">ŷþþþþþѡ9999</a>| <a href="http://www.j8hq8.cn" target="_blank">99ھƷþþþþþ</a>| <a href="http://www.qvella.cn" target="_blank">99ȳ˾ƷѾþ</a>| <a href="http://www.lyfulinmen.com.cn" target="_blank">þþƷۺɫ</a>| <a href="http://www.lntyzx.com.cn" target="_blank">þþƷһ</a>| <a href="http://www.6r9q.cn" target="_blank">91þþƷһëƬ</a>| <a href="http://www.11soso.cn" target="_blank">91Ʒۿ91þþþþ</a>| <a href="http://www.bethesdagroup.cn" target="_blank">þùƷ99Ʒ987</a>| <a href="http://www.05958.cn" target="_blank">˾þƵ</a>| <a href="http://www.hgysc.cn" target="_blank">þƵһ</a>| <a href="http://www.wkbxdlr.cn" target="_blank">þۺɫHEZYO</a>| <a href="http://www.suoguai.cn" target="_blank">޹Ʒһþhs</a>| <a href="http://www.e3668.cn" target="_blank">þˬˬƬav </a>| <a href="http://www.rereyy.cn" target="_blank">һɫþۺ</a>| <a href="http://www.u33w.cn" target="_blank">vaþþþúݺ</a>| <a href="http://www.yslianzheng.cn" target="_blank">޹þþþƷ</a>| <a href="http://www.lishi5.cn" target="_blank">þ97Ʒþþþþþò</a>| <a href="http://www.take-art.cn" target="_blank">þõӰһ</a>| <a href="http://www.vf369.cn" target="_blank">þɫۺҹž</a>| <a href="http://www.vlcz.cn" target="_blank">þþƷձҰ</a>| <a href="http://www.davidgroup.com.cn" target="_blank">ѹۿþþƵ</a>| <a href="http://www.googledad.cn" target="_blank">þ˳ƷCAOPOREN</a>| <a href="http://www.adu123.cn" target="_blank">ݺݾƷþþĻ</a>| <a href="http://www.yuzeyuanyi.cn" target="_blank">þþþþҹӰԺ</a>| <a href="http://www.xajh2.cn" target="_blank">þþƷһ</a>| <a href="http://www.net901.cn" target="_blank">һһþaaۺϾƷ</a>| <a href="http://www.etfp.cn" target="_blank">ƷƷþþþ</a>| <a href="http://www.fu-shing.cn" target="_blank">ƷþþþþĻ </a>| <a href="http://www.ejectorpin.cn" target="_blank">þþþAVƬ</a>| <a href="http://www.worldedu.org.cn" target="_blank">ۺϾþü</a>| <a href="http://www.hao266.cn" target="_blank">뾫Ʒþþþþ</a>| <a href="http://www.xibu520.cn" target="_blank">ŷպĻþ</a>| <a href="http://www.dq97.cn" target="_blank">þþ뾫Ʒպý</a>| <a href="http://www.chuangwote.com.cn" target="_blank">ݺɫþþһ</a>| <a href="http://www.jinxing168.net.cn" target="_blank">һŷƬþ</a>| <a href="http://www.chemzt.cn" target="_blank">97þóƷɰ</a>| <a href="http://www.laobianjing.cn" target="_blank">91鶹Ʒ91þþ</a>| <a href="http://www.42856.com.cn" target="_blank">ձһƷþþþӰԺ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>