Operating System Lecture 5/14

前回の課題について

システムの使い方

http://bw-www.ie.u-ryukyu.ac.jp/~kono/internal/ に システムの使い方を置いてあります。少なくとも、 Mule の日本語チュートリアルを復習しておくこと。

プロセス

Operating System上にはいろいろなプロセスがあり、それらを一つの CPUが順に実行していく。 コンピュータの基本的な要素は、計算を行なう CPUと結果を格納するメモリやディスクである。


実際には要求される動作には様々なものがあり、それらが一つ一つ、 CPUやメモリを必要とする。これを仮想的なコンピュータにまとめた ものがプロセスである。それらを、実際のコンピュータの持つ物理的な CPUやメモリに配分する作業を担当するのがOperating Systemである。


プロセスうち、いくつかの処理は、特別な扱いを受ける。

* Interrupt                      CPUに信号が伝わった時点で行われる処理
* DMA (direct memory access)     CPUを経由しないデータ転送
* Kernel Process                 Operating System 自身が必要とする仕事
これ以外の処理は、平等に時間分割(Time sharing)されて実行される。

しかし、仕事のないプロセスにCPUを割り当てても意味がない。プロセス には決まった状態があり、そのうち、実行可能な状態のプロセスのみが 実行される。

* new                プロセスが生成された
* ready              実行可能な状態
* running            実際に実行されている
* waiting            何かを待っている
* terminated         終了中
これらの状態遷移を引き起こす操作には以下のようなものがある。
* new                fork system call
* running->waiting   wait system call / I/O call (read/write)
* waiting->ready     外部からの入力, I/O 終了
* ready->terminated  kill, exit


ファイル入出力

プロセスの入出力は、システムコール、特に、ファイルを経由して 行われる。プロセスがアクセスしているファイルには、プロセスごとに 番号がついている。これをファイル・ディスクリプタという。



ディスクリプタには、open system callによって、ファイルシステム上の ファイルを結びつけることができる。ファイルだけなく、他のプロセス との間を結ぶソケットや、その一方向版であるパイプを結びつけること もできる。

Unix では最初の3つのディスクリプタは、ユーザが持つログイン・シェル の入出力に接続されている。

この切り替えはcloseと dupによって行われる。


fork and exec

fork は、同じメモリ空間上で、異なるコンテキスト(context)を生成する。 exec は、同じコンテキストで別なプログラムを実行する。


相手のプロセスの待ち合わせ(join)は、Unixではwait という システムコールを使っておこなわれる。


例えば、

        % du /usr/local
とした時には、以下のようなプロセスの状態遷移が起きる。
       tcsh           du
        |
        +---- fork --> new
        |              |
       wait           running
        :              |
        :              v
     completion    <--interrupt-terminated
        |
        v
      runnning

問題

以下のシェルスクリプトを実行した時に、どのようなプロセスの状態 遷移が起きるかを記述してみよ。

       % ( du -s /usr/local ; echo end ) & 


宿題

情報工学実験Iの課題 4.2 プロセスの生成を来週までに、おこなう こと。レポートはメールで

    Subject: Operating System Lecture 5/14
というように、課題を出した日付をサブジェクトに入れたメールで 提出して下さい。なお、実験の時間は特に決めませんが、レポート の締め切りは守ること。

今日の授業に出なかったものは、この日の課題を

    Subject: Operating System Lecture Practice 5/14
というサブジェクトでメールで提出すること。