2

minix を含む OS のコースを受講していますが、アドバイスが欲しいです。

ls -sLinux と同じことを行う ように minix を変更する方法を見つけようとしています。

minix と linuxls -sは似ていますが、故意に : を使用してファイルを作成するdd of=XXXX bs=4096 count=1 seek=5と、linux ではファイル サイズが 4 ブロックと表示され、minix では 24 ブロックと表示されることを理解しています。

minix とは異なり、Linux は 20 個の空のブロックがあることを認識し、空のブロックを無視して論理サイズを報告するため、これが発生する理由を理解しています。
どこから始めたらよいか悩んでいたのですが、講師に教えてもらったservers/fs/stadir.cので、クラスを調べてみました。

私が関連していると思う唯一の部分(st_sizeを含む)は次のとおりです。

statbuf.st_size = rip->i_size;

      if (rip->i_pipe == I_PIPE) {
            statbuf.st_mode &= ~I_REGULAR;  /* wipe out I_REGULAR bit for pipes */
            if (fil_ptr != NIL_FILP && fil_ptr->filp_mode & R_BIT) 
                    statbuf.st_size -= fil_ptr->filp_pos;
      }

これは、minix ソース コードの 27700 ~ 27706 行です。

誰かがどこを見るべきか、または正しい場所を見ているかどうか、ヒントなどを教えてもらえますか。

4

0 に答える 0