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というように、課題を出した日付をサブジェクトに入れたメールで提出して下さい。サブジェクトを間違えないこと!
宿題は毎週出るので提出が延びるとはまりますので気を付けてください。