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 終了中
fork は、同じメモリ空間上で、異なるコンテキスト(context)を生成する。
exec は、同じコンテキストで別なプログラムを実行する。
相手のプロセスの待ち合わせ(join)は、Unixではwait という
システムコールを使っておこなわれる。
例えば、
% du /usr/localとした時には、以下のようなプロセスの状態遷移が起きる。
tcsh du | +---- fork --> new | | wait running | <--interrupt-terminated completion | runnning
以下のシェルスクリプトを実行した時に、どのようなプロセスの状態 遷移が起きるかを記述してみよ。
% ( du -s /usr/local ; echo end ) &
情報工学実験Iの課題 4.2 プロセスの生成を来週までに、おこなう こと。レポートはメールで
Subject: Operating System Lecture 5/1というように、課題を出した日付をサブジェクトに入れたメールで 提出して下さい。なお、実験の時間は特に決めませんが、レポート の締め切りは守ること。
5/8 はムーンビーチで学会があるので休講とします。