SchoolWork-LaTeX/操作系统/平时作业/第三章作业.tex

204 lines
9.8 KiB
TeX
Raw Normal View History

2024-09-02 17:47:53 +08:00
\documentclass[全部作业]{subfiles}
\input{mysubpreamble}
\begin{document}
\setcounter{chapter}{2}
\chapter{存储管理}
\begin{enumerate}
\questionandanswer[]{
一个 32 位的系统支持的逻辑空间最大为$2^{32}$字节,假如一个分页系统的页面大小为 4KB$2^{12}$),一个页表项 4 个字节。请问:一个进程页表最多可有多少个表项?此时该进程的页表需要占多大的内存?
}{
按照题意来看,页表需要放到内存中,因此$2^{32}$字节的逻辑空间不能全部用来放分页页面。那么一个页面对应一个页表项,它们需要$2^{12}+4$字节,所以一个进程页表最多可有$$\dfrac{2^{32}}{2^{12}+4} = \dfrac{1073741824}{1025} \approx 1047552.99902439 \xrightarrow{\text{向下取整}} 1047552$$个表项。此时该进程的页表需要占$1047552\times 4 = 4190208$个字节的内存。
}
\questionandanswer[]{
在分页式系统中,其页表存放在内存中
}{}
\begin{enumerate}
\questionandanswer[]{
如果对内存的一次存取需要 $100 \mathrm{\mu s}$,试问实现一次页面访问至少需要存取时间是多少?
}{
先访问一次页表,得到页面的地址以及是否缺页,此时如果没有缺页异常,直接从内存中就能访问到页面,所以实现一次页面访问至少需要存取时间为$100+100=200 \mathrm{\mu s}$
}
\questionandanswer[]{
如果系统有快表,快表的命中率为 80\%,当页表项在快表中时,其查询快表的时间可忽略不计,试问此时平均存取时间为多少?
}{
当页表项在快表中时(并且没有缺页),此时可以认为一次页面访问只需要一次内存访问的时间,即$100 \mathrm{\mu s}$;所以此时平均存取时间(不考虑缺页)为
$$
\begin{aligned}
EX &= 100 \mu \mathrm{s}\times P(快表命中) + 200 \mu \mathrm{s} \times P(快表未命中) \\
&=100 \mu \mathrm{s} \times 0.8 + 200 \mu \mathrm{s} \times 0.2 = 120 \mu\mathrm{s} \\
\end{aligned}
$$
}
\questionandanswer[]{
采用快表后的平均存取时间比没有采用快表时下降了百分之几?
}{
$$
1 - \frac{120}{200} = \frac{2}{5} = 0.4 = 40 \%
$$
下降了$40 \%$
}
\end{enumerate}
\questionandanswer[]{
某虚拟存储器的用户编程空间共 32 个页面每页1KB主存为16KB。假定某时刻用户表中已调入主存的页面的虚拟页号和物理块号对照表为表一则与逻辑地址相对应的物理地址为表二。\\
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{tabular}{cc}
\toprule
虚拟页号 & 物理块号 \\
\midrule
0 & 5 \\
1 & 10 \\
2 & 4 \\
8 & 7 \\
\bottomrule
\end{tabular}
表一
\end{center}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{tabular}{cc}
\toprule
逻辑地址 & 物理地址 \\
\midrule
0A5CH & A(\quad) \\
1A5CH & B(\quad) \\
925DH & C(\quad) \\
\bottomrule
\end{tabular}
表二
\end{center}
\end{minipage}
可供选择的答案:
ABC1缺页 21E5DH 32A5CH 4115CH 5125CH6165CH 7越界 8以上答案都不对
}{
页面大小1KB也就是$2^{10}$字节其实准确说1KiB才是$2^{10}$字节1KB是$10^{3}$字节也就是逻辑地址的后10位代表页内偏移。
由于一共$32=2^{5}$个页面所以序号从右数0开始第10到14位是页号题目中的逻辑地址是4位十六进制数最后的H表示这是十六进制数也就是16位二进制数因此第15位最高位必定为0否则就是虚拟页号越界。以0A5CH为例
$$
0|\underbrace{000\ 10}_{\text{虚拟页号}}|\underbrace{10\ 0101\ 1100}_{页内偏移}
$$
从逻辑地址转换到物理地址,只需要把虚拟页号换成对应的物理块号即可,这里虚拟页号为二进制的 00010 也就是十进制的2对应的物理块号为4也就是二进制的00100转换后为
$$
0|\underbrace{001\ 00}_{\text{物理块号}}|\underbrace{10\ 0101\ 1100}_{页内偏移}
$$
转换成十六进制也就是125CH所以A(5)。
同理对于1A5CH
$$
0|\underbrace{001\ 10}_{\text{虚拟页号}}|\underbrace{10\ 0101\ 1100}_{页内偏移}
$$
虚拟页号00110即十进制的6在表一中没有所以是缺页从而B(1)。
对于925DH
$$
1|\underbrace{001\ 00}_{\text{虚拟页号}}|\underbrace{10\ 0101\ 1101}_{页内偏移}
$$
最高位为1根据前面的分析虚拟页号越界所以C(7)。
综上所述A(5), B(1), C(7)。
}
\questionandanswer[]{
分页存储管理系统中,逻辑地址长度为 16页面大小为4K。一个进程有 6 个页面,且页号为 1、2、3 的页面依次存放在物理块5、10、11 中,试问:
}{
4K看作是$2^{12}$也就是12位逻辑地址也就是右起3位十六进制。逻辑地址长度为16$16-12=4$位表示页号所以左起1位十六进制表示页号。有6个页面所以页号从0到5有效否则越界。
}
\begin{enumerate}
\questionandanswer[]{
逻辑地址 4010、8500 和 25000 所对应的物理地址分别为多少?
}{
这里的数字没有字母后缀,应该是十进制,需要先转化成十六进制。\\
\begin{center}
\begin{tabular}{ccc}
\toprule
十进制逻辑地址 & 十六进制逻辑地址 & 物理地址 \\
\midrule
4010 & 0|FAA & 缺页 \\
8500 & 2|134 & A134 \\
25000 & 6|1A8 & 越界 \\
\bottomrule
\end{tabular}
\end{center}
}
\questionandanswer[]{
逻辑地址 2F6AH、0578H 和 6ACDH 所对应的物理地址分别为多少?
}{
\begin{center}
\begin{tabular}{cc}
\toprule
逻辑地址 & 物理地址 \\
\midrule
2|F6A\ H & AF6A\ H \\
0|578\ H & 缺页 \\
6|ACD\ H & 越界 \\
\bottomrule
\end{tabular}
\end{center}
}
\end{enumerate}
\questionandanswer[]{
假定某采用页式存储管理的系统中主存容量为1M被分成256 块,块号为 0、1、2、…、255。现有一个共 4 页页号为0、1、2、3的作业被依次装入到主存的块 2、4、1、5 中。请回答:
}{}
% 啊为什么这里如果不加空行后面就没有parindent了加了一个空行就重新出现parindent了
\begin{enumerate}
\questionandanswer[]{
主存地址应该用多少位来表示?
}{
1M省略了单位应该是指1MB看作是$2^{20}$字节由于寻址的单位为字节所以主存地址应该用20位来表示。
}
\questionandanswer[]{
作业每一页的长度为多少字节?逻辑地址中的页内地址部分应占用多少位?
}{
1MB $=2^{20}$字节,分成$256=2^{8}$块,所以每块的大小为$\frac{2^{20}}{2^{8}}=2^{12}$字节,块大小和页大小一样,因此作业每一页的长度为$2^{12}$字节逻辑地址中的页内地址部分应占用12位。
}
\questionandanswer[]{
把作业中每一页占用的主存块起始地址填入下表。
}{
\begin{center}
\begin{tabular}{cc}
\toprule
页号 & 起始地址 \\
\midrule
0 & 02\ 000\ H \\
1 & 04\ 000\ H \\
2 & 01\ 000\ H \\
3 & 05\ 000\ H \\
\bottomrule
\end{tabular}
\end{center}
}
\questionandanswer[]{
若作业执行中要从第 0 页的第 75 单元和第 3 页的第 548 单元读信息,那么,实际应从主存的哪两个单元读信息?请把应访问的主存绝对地址用二进制编码的十六进制数表示。
}{
这里“二进制编码的十六进制数”表述不清,直接描述成“十六进制”或许更好。
第 0 页的第 75 单元为 0x02\,048第 3 页的第 548 单元为 0x05\,224。
}
\end{enumerate}
\questionandanswer[]{
在请求式分页系统中,运行一个共有 8 页的作业,且作业在主存中分配到 4 块主存块,作业执行时访问页面顺序为 70120304230321201701假如最初四个页面通过缺页中断装入请问用最佳置换算法、先入先出FIFO算法和最近最久未使用LRU算法时它们的页面缺页和置换次数分别为多少要求画出页面置换图
}{
\begin{center}
\includexopp{3.6.1}
(图中标了$\times $的是发生置换的)
\vspace{1em}
\begin{tabular}{ccc}
\toprule
页面置换算法 & 页面缺页次数 & 置换次数 \\
\midrule
最佳置换Opt & 8 & 4 \\
先入先出FIFO & 10 & 6 \\
最近最久未使用LRU & 8 & 4 \\
\bottomrule
\end{tabular}
\end{center}
}
\end{enumerate}
\end{document}