📄 ch4.htm
字号:
<p><font color="#FFFFFF"><span lang="EN-US"> </span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">4.4.1<span style="mso-spacerun: yes">
</span>进程调度<o:p>
</o:p>
</span></font></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">一、同构型多处理机系统中的进程调度</font></span></p>
<p><font color="#FFFFFF"><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.静态分配(</span><span lang="EN-US">Static
Assignment</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.动态分配(</span><span lang="EN-US">Dynamic
Assignment</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">3</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.自调度(</span><span lang="EN-US">Self-Scheduling</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)</span></font></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">二、异构型多处理机系统中的进程调度</font></span></p>
<p><span lang="EN-US"><font color="#FFFFFF"> <o:p>
</o:p>
</font></span></p>
<p><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF">4.4.2<span style="mso-spacerun: yes">
</span>自调度<o:p>
</o:p>
</font></span></p>
<p><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(</span><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)自调度方式。系统中有一个公共的线程或进程的就绪队列,所有的处理机在空闲时,都可自己从该队列中取出一个进程或线程运行。</span></font></p>
<p><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(</span><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)成组调度。这时由系统将一组相关的进程或线程,同时分配到—组处理机上运行,进程或线程与处理机一—对应。</span></font></p>
<p><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(</span><span lang="EN-US">3</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)专用处理机分配方式。它是将同属于一个应用程序的一组线程,分配到一组处理机上,在应用程序末结束前,处理机专用于处理这组线程。</span></font></p>
<p><span lang="EN-US"><font color="#FFFFFF"> <o:p>
</o:p>
</font></span></p>
<p><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF">4.4.3
成组调度<o:p>
</o:p>
</font></span></p>
<p><font color="#FFFFFF"><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.面向所有的应用程序平均分配处理机时间</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.面向所有的线程平均分配处理机时间</span></font></p>
<p><span lang="EN-US"><font color="#FFFFFF"> <o:p>
</o:p>
</font></span></p>
<p><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF">4.4.4
专用处理机分配<o:p>
</o:p>
</font></span></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">把这种调度方式用于并发程度相当高的多处理机环境,是根据下述一些理由:</font></span></p>
<p><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(</span><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)在具有数十个乃至数百个处理机的高度并行的系统中,单个处理机的利用率已远不像在单机系统中那么重要。</span></font></p>
<p><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(</span><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)可以避免了进程或线程的切换,从而可大大地加速程序的完成。</span></font></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">根据实践证明:在同时加工的应用程序中,其线程数的总和不应超过系统中处理机的数目。</font></span></p>
<p> </td>
</tr>
<tr>
<td width="100%" align="left" height="53" colspan="2">
<p style="TEXT-ALIGN: center" align="center"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF"><a name="ch46"></a>4.6<span style="mso-spacerun: yes">
</span>死锁的基本概念<o:p>
</o:p>
</font></span></p>
<p><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">所谓死锁(</span><span lang="EN-US">Deadlock</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">),是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进。</span></font></p>
<p><span lang="EN-US"><font color="#FFFFFF"> <o:p>
</o:p>
</font></span></p>
<p><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF">4.6.1<span style="mso-spacerun: yes">
</span>产生死锁的原因<o:p>
</o:p>
</font></span></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">产生死锁的原因可归结为两点:</font></span></p>
<p style="MARGIN-LEFT: 36pt; TEXT-INDENT: -36pt; mso-list: l25 level1 lfo26; tab-stops: list 36.0pt"><font color="#FFFFFF"><span lang="EN-US" style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(1)<span style="font-style: normal; font-variant: normal; font-weight: normal">
</span></span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">竞争资源。</span></font></p>
<p style="MARGIN-LEFT: 36pt; TEXT-INDENT: -36pt; mso-list: l25 level1 lfo26; tab-stops: list 36.0pt"><font color="#FFFFFF"><span lang="EN-US" style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(2)<span style="font-style: normal; font-variant: normal; font-weight: normal">
</span></span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">进程推进顺序非法。</span></font></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">一、竞争资源引起死锁</font></span></p>
<p><font color="#FFFFFF"><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.可剥夺和非剥夺性资源</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.竞争非剥夺促资源</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">3</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.竞争临时性资源</span></font></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">二、进程推进顺序不当引起死锁</font></span></p>
<p style="MARGIN-LEFT: 15.75pt; TEXT-INDENT: -15.75pt; mso-list: l9 level1 lfo33; tab-stops: list 15.75pt"><font color="#FFFFFF"><span lang="EN-US">1.</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">进程推进顺序合法</span></font></p>
<p style="MARGIN-LEFT: 15.75pt; TEXT-INDENT: -15.75pt; mso-list: l9 level1 lfo33; tab-stops: list 15.75pt"><font color="#FFFFFF"><span lang="EN-US">2.</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">进程推进顺序非法</span></font></p>
<p><span lang="EN-US"><font color="#FFFFFF"> <o:p>
</o:p>
</font></span></p>
<p><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF">4.6.2<span style="mso-spacerun: yes">
</span>产生死锁的必要条件<o:p>
</o:p>
</font></span></p>
<p><font color="#FFFFFF"><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.互斥条件</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.请求和保持条件</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">3</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.不剥夺条件</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">4</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.环路等待条件</span></font></p>
<p><span lang="EN-US"><font color="#FFFFFF"> <o:p>
</o:p>
</font></span></p>
<p><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF">4.6.3<span style="mso-spacerun: yes">
</span>处理死锁的基本方法<o:p>
</o:p>
</font></span></p>
<p><font color="#FFFFFF"><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.预防死锁</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.避免死锁</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">3</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.检测死锁</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">4</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.解除死钡</span></font></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">死锁的检测和解除措施,有可能使系统获得较好的资源利用宰相系统吞吐量,但在实现上难度也最大。</font></span></p>
<p> </td>
</tr>
<tr>
<td width="100%" align="left" height="53" colspan="2">
<p style="TEXT-ALIGN: center" align="center"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF"><a name="ch47"></a>4.7
死锁的预防和避免<o:p>
</o:p>
</font></span></p>
<p><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF">4.7.1<span style="mso-spacerun: yes">
</span>死锁的预防<o:p>
</o:p>
</font></span></p>
<p><font color="#FFFFFF"><span style="mso-bidi-font-size: 10.0pt; mso-ascii-font-family: Times New Roman; m
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -