←OS論シラバスへ
←講義のツボメニューへ

プロセス

【2001.10.15】【第5回】
プロセスモデル
 オペレーティングシステムを含むすべてのソフトウェアは、いくつかのプロセスで構成される。
  プロセス=実行しているプログラム自身

  (「プロセス=仮想のCPU」・・・と考える)
現実には一つのCPUがプロセスからプロセスへ切り替えている

多重プログラミング


 UNIXにおけるプロセス生成
  FORKシステムコール:プロセス生成のためにUNIXで提供されている。
  呼び出し側のプロセスとまったく同一のコピーを生成する

forktest()
{
  int pid;
  printF("Start of test\n");
  pid = fork();
  printf("Returned %d\n",pid);
}


 プロセスの二種類の停止状態
  1、プロセスが論理的に実行できずに停止
   例えばプロセスが他のプロセスと相互作用するときなど
  2、OSが他のプロセスにCPUを割り当てているために停止

 プロセスの実現
  実行中(running)←→実行可能状態(ready)の切り替えで保存しなければならない情報を記録する。

 割り込み処理
  1、ハードウェアは、プログラムカウンタなどをスタックに積む。
  2、ハードウェアは、割り込みベクタの値を新しいプログラムカウンタ値にセットする。(JUMP)
  3、アセンブリ言語手続きによって、レジスタを保存する。
  4、アセンブリ言語手続きによって、新しいスタックを設定する。
  5、C言語手続きによって、サービス・プロセスをreadyにする。
  6、スケジューラープログラムは、どのプロセスを次に実行させるか決定する。
  7、C言語手続きから、アセンブラコードに戻る。
  8、アセンブリ言語手続きは、現在のプロセスを起動する。

 クリティカルセクション
  共有メモリをアクセスするプログラムにおいて、
  実際にアクセスしているプログラム部分

 クリティカルセクションと競合状態の回避
  同時に2つのプロセスが、クリティカルセクションに入らないように制御できれば競合状態を回避できる。