SchoolWork-LaTeX/操作系统/作业/第五六章作业.tex

106 lines
5.8 KiB
TeX
Raw Normal View History

2024-09-02 17:47:53 +08:00
\documentclass[全部作业]{subfiles}
\input{mysubpreamble}
\begin{document}
\setcounter{chapter}{4}
\chapter{I/O设备管理}
\begin{enumerate}
\questionandanswer[]{
假定某磁盘共有 200 个柱面(编号为 0$\sim $199如果在为访问80 号柱面的请求者服务后,当前正在为访问 108 号柱面的请求者服务,同时有若干个请求者在等待服务,它们依次要访问的柱面号为:
187641694817111812084
\begin{enumerate}
\item 分别用先来先服务FCFS、最短寻道时间优先SSTF、扫描SCAN和循环扫描CSCAN算法进行磁盘调度时试确定实际的服务次序。
\item 按实际服务次序计算1中四种算法下磁臂移动的距离。
\end{enumerate}
}{
\includexopp{5.1.1}
每次磁臂移动的距离已经用蓝色字标在两次访问的柱面号之间,要注意循环扫描的返回是瞬间完成,不应算到磁臂移动的距离中。
}
\end{enumerate}
\chapter{死锁}
\begin{enumerate}
\questionandanswer[]{
在某系统中,有 N 个进程共享 R 台同类设备资源每个进程最多需要M台设备资源试问N 最多为几时才能保证系统不会发生死锁?请简略说明原因。
}{
% N最多为 $\bm{\left\lfloor R / M \right\rfloor}$ 时才能保证系统不会发生死锁。因为当N达到这个值时如果此时所有进程都按照最大资源数量申请那么总申请的资源数量为$\left\lfloor R / M \right\rfloor \times M \leqslant R$所以不会发生死锁但如果N多一个那么总申请的资源数量为$\left( \left\lfloor R / M \right\rfloor+1 \right) \times M$这就可能大于R那么就可能发生死锁。
这里的N、R、M应该均为正整数
当N固定时根据抽屉原理每个进程都恰好分到最大资源数量少一个资源并且都申请一个资源这时如果没有资源可以分配那么就死锁了如果有至少一个资源可以分配那么就不会死锁。所以R最少应取$N\times (M-1) + 1$才能保证不会发生死锁,那么
$$
R\geqslant N\times (M-1)+1 \implies N \leqslant \frac{R-1}{M-1}
$$
因为N为整数所以N最多为$\displaystyle \left\lfloor \frac{R-1}{M-1} \right\rfloor$
}
\questionandanswer[]{
考虑有 3 个进程共享 9 个资源,当前资源分配情况如下:
\begin{center}
\begin{tabular}{ccc}
\toprule
进程 & 已占资源数 & 最大需求量 \\
\midrule
P1 & 2 & 6 \\
P2 & 3 & 6 \\
P3 & 1 & 5 \\
\bottomrule
\end{tabular}
\end{center}
请回答以下问题:
}{}
\begin{enumerate}
\questionandanswer[]{
目前系统是否处于安全状态?为什么?
}{
目前已占资源总数为6那么还有3个资源这时如果分配给P2P2就达到了最大需求量那么P2运行结束后就有6个空闲资源这时可以分配给P1 4个资源P1就达到了最大需求量P1运行结束后分配给P3 4个资源P3就达到了最大需求量P3运行完后就结束了。\boldkai{所以可以找到资源分配安全序列 P2、P1、P3所以目前系统处于安全状态。}示意图如下:
\bigskip
\includexopp[1.2]{6.2.1.1}
}
\questionandanswer[]{
如果接着 3 个进程均再申请 2 个资源,可以先分配资源给哪个进程?
}{
在未实际分配资源时安全序列不变仍然为P2、P1、P3所以可以先分配资源给\boldkai{P2}
}
\end{enumerate}
\questionandanswer[]{
假如系统中有 5 个进程P0P1P2P3P4和4 种类型资源ABCDT0 时刻系统的资源分配情况如下所示:
\begin{center}
\begin{tabular}{c|cccc|cccc|cccc}
\toprule
进程 & \multicolumn{4}{c}{Al} \vline& \multicolumn{4}{c}{Need} \vline & \multicolumn{4}{c}{Av} \\
\midrule
P0 & 0 & 2 & 3 & 2 & 0 & 0 & 1 & 2 & 1 & 6 & 2 & 2 \\
P1 & 1 & 0 & 0 & 0 & 1 & 7 & 5 & 0 & & & & \\
P2 & 1 & 3 & 5 & 4 & 2 & 3 & 5 & 6 & & & & \\
P3 & 0 & 3 & 3 & 2 & 0 & 6 & 5 & 2 & & & & \\
P4 & 1 & 0 & 1 & 4 & 0 & 6 & 5 & 6 & & & & \\
\bottomrule
\end{tabular}
\end{center}
试问:
}{}
\begin{enumerate}
\questionandanswer[]{
T0 时刻该系统是否安全?
}{
尝试寻找安全序列如下图所示:
\includexopp[1.3]{6.4.1.1}
成功找到安全序列P0、P1、P3、P2、P4所以T0 时刻系统\boldkai{安全}
}
\questionandanswer[]{
T1 时刻进程 P2 提出资源请求 Re2(12 00),能否将资源分配给它?
}{
Re2 < Av进行试探性分配尝试寻找安全序列如下图所示
\includexopp[1.3]{6.4.2.1}
与T0 时刻相比有不同的地方已用红色标出所以成功找到安全序列P0、P3、P4、P1、P2所以\boldkai{}将资源分配给它。
}
\questionandanswer[]{
T2 时刻进程 P3 提出资源请求 Re3(0 022),能否将资源分配给它?
}{
Re3 < Av进行试探性分配尝试寻找安全序列如下图所示
\includexopp[1.2]{6.4.3.1}
发现找不到安全序列,所以\boldkai{不能}将资源分配给它。
}
\end{enumerate}
\end{enumerate}
\end{document}