\documentclass[全部作业]{subfiles}
\input{mysubpreamble}
\begin{document}
\setcounter{chapter}{3}
\chapter{文件系统}
\begin{enumerate}
    \questionandanswer[]{
        一个文件系统的盘块大小为1KB，每块地址用4B表示，当分别采用连
续、链接、二级索引和UNIX S V 分配方案时，试确定各方案能管理的最大文件，
管理一个10MB的大文件和一个10KB的小文件时所需的管理专用块数，以及要
访问大文件的第9M+3.5KB单元时需要的磁盘I/O操作次数。

A$\sim $D:（1）不受限制 （2）1KB （3）256KB （4）64MB
（5）16GB （6）1KB+256KB+64MB+16GB
（7）10KB+256KB+64MB+16GB
    }{
        二级索引管理的最大文件：
        $$
        256\times 256\times 1 \mathrm{KB} = 2^{8}\times 2^{8}\times 1 \mathrm{KB} = 2^{16}\mathrm{KB} = 2^{6} \mathrm{MB} = 64 \mathrm{MB}
        $$
        二级索引专用块数：
        $$
        10\text{KB}/1\text{KB} =10  \text{个存储块}
        $$
        $$
        \left\lceil 10/256 \right\rceil  = 1 \text{个二级索引块}, \quad \left\lceil 1/256 \right\rceil =1 \text{个一级索引块}
        $$
        $$
        10\text{MB}/1\text{KB}=10\times 2^{10}\text{个存储块}
        $$
        $$
        10\times 2^{10}/256 = 10\times 2^{2} = 40 \text{个二级索引块}, \quad \left\lceil 1/256 \right\rceil =1 \text{个一级索引块}
        $$
        UNIX专用块数：
        $$
        10\text{MB}-10\text{KB}-256\text{KB} = (10\times 2^{20} - 10\times 2^{10} - 256\times 2^{10}) = 10213376\text{B} = 9974\text{KB}
        $$
        $$
        \left\lceil 9974/256 \right\rceil = 39  \text{个二级索引块}, \quad \left\lceil 39/256 \right\rceil =1 \text{个一级索引块}
        $$
        $$
        1+39+1=41 \text{个管理专用块}
        $$
        大文件的某处信息需要的IO次数：
        $$
        \left\lceil 9\times 2^{10} +3.5 \right\rceil + 1  = 9221
        $$
        \begin{center}
            \begin{tabular}{cccccc}
            \toprule
               &  & 连续分配 & 链接分配 & 二级索引 & UNIX  \\
               \midrule
             \multicolumn{2}{c}{管理的最大文件} & A(1) & B(1) & C(4) & D(7) \\
             \hline
             \multirow{2}{*}{管理用的专用块数} & 10KB 文件 & 0 & 0 & 2 & 0 \\
               & 10MB 文件 & 0 & 0 & 41 & 41 \\
             \hline
             大文件的某处信息 & 9M+3.5KB & 1 & 9221 & 3 & 3 \\
            \bottomrule
            \end{tabular}
        \end{center}
    }
    \questionandanswer[]{
        在 Unix 文件系统中，文件的物理组织为 Unix 直接间接混合寻址方式，假设一个进程要在第 4200 字节、第 210000 字节和第800000 字节三个偏移处读文件，请问分别要访问多少次磁盘？并以必要的图示说明访问之过程。假设该文件的 FCB（即文件说明或文件控制块）已读入内存，每个磁盘块大小为1K，块号用 32 位的指针表示。
    }{
        32位即4B，所以一个索引块能存储 $1\text{KB}/4\text{B}=256\text{个块指针}$。

        \includexopp[1.1]{4.2.1}

        图中用不同颜色写出了不同偏移处的计算步骤以及访问过程。访问磁盘次数即不同颜色的箭头数量，在第 4200 字节、第 210000 字节和第800000 字节三个偏移处读文件，分别要访问1、2、3次磁盘。
    }
    \questionandanswer[]{
        假设文件系统的盘块大小为 4KB, 某文件的物理结构采用连续文件方式，假设该文件的首个盘块的盘块号为 85，那么该文件的第8292 字节单元在第几个盘块上？其盘块号为多少？该字节单元是盘块内的第几字节？
    }{
        $$
        8292\text{B}/4\text{KB} = 8292 \div (4\times 2^{10}) = 2 \cdots\cdots 100
        $$
        \includexopp[1]{4.3.1}

        所以该文件的第8292字节单元在第3个盘块上，其盘块号为87，该字节单元是盘块内的第101字节。
    }
\end{enumerate}
\end{document}