Operating System Lecture 10/23

Menu Menu


ファイルの続き


File system Interface

 putchar, getchar
 fread, fwrite
 read, write
 seek
 file type
 directory

バッファがあるものとないものがある。何故両方あるのだろうか?

    

Unix のI/Oは、file ( /dev/rwd0a ) などにより、ファイルとしての統一されたインタフェースを持っている。

    


Disk の構造

disksetup wd0 してみよう。

    

Cylinder は、Head * Track のまとまり。


問1

Track 間の移動速度 3 msec/track のハードディスクで、Track 5, 20, 100 のアクセスの100msec後に、Track 7, 120, 70, 2 の順でアクセスが来た。これを、もっとも効率よくアクセスするためには、どのような順番でTrackにアクセスすれば良いか?

一番速くアクセスが終ることが最適かどうかについても考察せよ。公平にサービスされているだろうか?


Directory Access

ディレクトリは普通のファイルである。しかし、そこは、同時に動いているすべてのプログラムから、「同じように」見えなければならない。このために、ディレクトリへの変更は、OS経由で行なう必要がある。

Directory のアクセスは構造体を経由して行なわれる。構造体の使い方をマスタしよう。

構造体は常にポインタを経由してアクセスされる。

        DIR dir;

と、
        DIR *dirptr;

の違いを理解すること。


問2

ディレクトリを調べるには、opendir というライブラリがある。

        DIR dir;
        dir = opendir(".");

はエラーとなる。エラーを生成する簡単なCプログラムを作成し、エラーの原因を簡単に説明せよ。

        DIR *dirptr;
        struct dirent *dir;
        dirptr = opendir(".");
        dir = readdir(dirptr);
        pritnf("%s\n",dir.d_name);

もエラーとなる。エラーメッセージを正確に記述し、その修正方法を示せ。


問3

opendir では、ディレクトリの変更を行なうことはできない。それは、なぜか?


Unix の File system

Unix では以下のようなキーワードでファイルシステムが作られている。

 raw device, block device
 partition
 fragmentation
 i-node


Unix i-node

Uhix では、ディレクトリはi-nodeをさし、i-node は木構造のIndexを持つ。空いている領域は、free i-node list にためられる。

    


Unix でのディスク管理

以下は Unix のファイルシステムに関するコマンドである。
        sync
        mount
        fsck
        disksetup
        diskdefect
        tar
        dump/restore

これらについて調べて理解しよう。

また、以下のキーワードについても調べてみよう。

        log based file system
        recovery
        tfs
        NFS
    


Windows の File system

 FAT16
 VFAT
 FAT32
 NTFS


FAT (File Allocation Table )

MSDOSやWindows で用いれている手法。ディレクトリの中に、一連のブロックへのポインタがリストで格納されている。どのBlockが開いているかを簡単に調べるために Bit Vector を作り、これもファイルシステムの中の特別な部分に置かれる。

    


Link, Link count

Unixでは複数のディレクトリが同じi-nodeを指し示すことがある。また、もしファイルがディレクトリから削除されても、そのファイルをまだopenしているプロセスがいることがある。このように複数のプロセスまたはディレクトリが一つのi-nodeをさすことをリンクという。リンクカウントは、そのi-nodeをさしているディレクトリの数とオープンしているプロセスの数の和である。これが0になって初めてファイルが削除されたことになる。

また、Unixではi-nodeではなく、名前によってもリンクすることができる。この場合は、リンクカウントは関係しない。これはシンボリックリンクと呼ばれる。ディレクトリはハードリンクすることはできないが、シンボリックリンク(Symbolic link)することはできる。何故だろうか?

Symbolic link は、異なるファイルシステム間でもリンクすることができたり、NFSで接続が切れている場合でもリンクすることができる。Unix によって、環境変数によってリンク先を変えることができる条件付きSymbolic link を導入している場合がある。Symbolic link では、cd .. の結果が奇妙になることがあるので注意しよう。(実際に奇妙な結果になる例を考察してみよ)

    


Authentication

ファイルには、OnwerとGroupとmode が付いている。これにより、誰からアクセスできるか、誰からアクセスできないかを決定する。

Unix ではグループで管理する。これは比較的小さな一つのファイルで管理できるところに特徴がある。

    

しかし、個人個人を対象としたきめ細かなかんりはできない。そのようなことをしたければ、Access/Capability list を使う。

    


User

/etc/passwd , /etc/master.passwd で管理されている。Uid は数字で16bitのシステムが多かったが、今では32bitが普通。パスワード自体は/etc/master.passwd にあり直接検索できない。また見ることができたとしても、encode されているので解析は不可能ではないが難しい。

Group

複数のユーザをまとめて名前を付けたもの。

hosts.equiv

信じられる(trusted)ホストのリスト

NIS (Network Information Service)

Passwd や Group の情報をネットワーク上で一元管理するためのシステム。昔は、Yellow Page といった。NIS+ という分散データベースを用いるより複雑なシステムもある。


NFS の場合

NFSでは、exports と、fstab で、どれをaccessするかを決めている。


Setuid, Setgid

su コマンド

sendmail の setuid bit の意味は?

(ファイルそのものに、セキュリティの属性を持たせることは正しいのか考えてみよう )


宿題

「課題 1. ファイル操作とファイル・システム」を、来週までに、おこなうこと。(一週間、延長します)レポートはメールで

    Subject: Practice on Operating System Lecture 10/10

というように、課題を出した日付をサブジェクトに入れたメールで提出して下さい。サブジェクトを間違えないこと!

宿題は毎週出るので提出が延びるとはまりますので気を付けてください。


Shinji KONO / Tue Oct 23 01:00:46 2001