Comments
Description
Transcript
オペレー ティングシ ス テ ム 3 2.1 プロセス
Operating System 2016 プログラムカウンタ、レジスタなどを持つ プロセスは仮想的なコンピュータを持つ 3 1つのアドレス空間にひとつの制御スレッドを持つ 公式見解 実行中のプログラム プログラムが入出力できるすべてのことに伴う実 行中のコード片 非公式見解 プロセスの一般定義 オペレーティングシステム 3 2.1 プロセス 起動 fork 起動 fork 終了 exit 孫プロセス Operating System 2016 終了 exit 子プロセス 終了 exit 2.1.1プロセスモデル(1) 消滅 exit 親プロセス 子プロセス 2 Operating System 2016 概念的には複数のプロセスが同時に実行 しかし、実際にはどんな瞬間もCPUの数だけ 同時性 真の並列性 → マルチプロセッサ 疑似並列性 → マルチプロセッシング 並列性 プログラムカウンタ、レジスタなどの値 つまり仮想的なCPUを持つと言っても良い 4 コンピュータのすべての実行可能なソフトウェアはプ ロセスから構成されている プロセスは以下の物を持つ 起動 init 起動 fork コンピュータのすべての実行可 能なソフトウェアは、プロセス中 に組織されるプロセスモデルと してモデル化される プロセス 概念的に4つのプログラム カウンタで逐次処理 4つ逐次処理を一つのプロ グラムカウンタで処理 Operating System 2016 1. システムの初期化:「init」 2. プロセス中でプロセス生成システムコール: 「fork」 3. ユーザからの新たなプロセスの生成要求 : 「コ マンド」 4. バッチジョブが新たに開始 : 「入力キューから 取り出し」 プロセス生成を引き起こす4つの主な場合 2.1.2プロセスの生成 Operating System 2016 a. 4つのプログラムによるマルチプログラミング b. 4つの独立な、逐次プログラムの概念モデル c. 一度には1つのプログラムしか実行出来ない つまり、CPUは ひとつ プロセスモデル(2) 7 5 卵 … 資源 Operating System 2016 応急処置 Operating System 2016 4. 他プロセスから強制終了(非自発的) : 「kill」 • 不法な命令・アドレス、0割り算など 3. 致命的エラーで終了 (非自発的) • コンパイル時にファイルがないなど 1. 正常に終了した場合(自発的) : 「exit」 2. エラーで終了(自発的) : 「exit」 8 6 割込 蜂に刺された息子 作業再開 どこまで作業したか記憶 息子の応急処置を開始 ケーキ作り 2.1.3プロセスの終了 砂糖 CPU コンピュータ科学者 プロセス終了を引き起こす4つの主な場合 小麦粉 誕生日ケーキレシピ プログラム プロセスとプログラム 実行可能 9 Operating System 2016 実行中(running):実際にCPUを使用している 実行可能(ready):他プロセスの実行で一時中断 待ち(blocked):外部事象発生待ちで待機中 11 1. プロセスが入力待ちでブロックされる 2. スケジューラが他の1つのプロセスを選択する 3. スケジューラがこのプロセスを選択する 4. 入力が利用可能になった プロセスはOSが管理する事象の変遷と運営方 針による結果で状態遷移しながら処理される プロセスが取りうる状態 待ち 実行中 2.1.4プロセスの状態 (1) Operating System 2016 • すべてのプロセスは平等 親プロセスは子プロセスを生成できる 子プロセスは更に孫プロセスを生成できる プロセスの親はひとつのみ 親は子を勘当できない 子は親から継承した性質を 変えられる 各OSで UNIXではプロセスとその全ての子孫は「プロセス グループ」と呼ぶ Windowsにはプロセス階層の概念はない プロセスの階層 プロ セス シェ ル ログ イン 端末1 ... 端末n init 起 動 ↑ 中 断 ↓ ブ ロ ッ 解 ク 除 ↓ ↑ Operating System 2016 割り込みハンドラ プロセス開始・終了 デスパッチャーなど 上位層は逐次プロセスで構成 下位層はプロセス・スケジューラで構成 単純なプロセス階層モデル構成 2.1.5プロセスの状態(2) Operating System 2016 まずinitと呼ばれる特別なプロセスがブ ートイメージ内に存在する。 initは接続されている端末数が格納 されているファイルを読み出す その後,端末ごとに1つの新プロセスを 生成する。 これらのプロセスは誰かがログインする のを待つ。 ログインが行われると、そのログインプ ロセスは、コマンドを受け付けるシェルを 実行する。これらのコマンドは,さらに多 くのプロセスを起動して処理を進めるこ ともある。 このように,システム内の全プロセスは initをルートとする単一の木構造に属し ている。 Unix起動時 12 10 その 他 Operating System 2016 典型的なプロセステーブルのエントリ Operating System 2016 仮想プロセッサの状態の完全な掌握 使用しているメモリ空間の完全な復元 使用しているファイルアクセス状態の継承 誰が管理する? オペレーティングシステム どのようにして目的を達成するか? プロセスに関する重要な情報を管理 プロセス情報を管理するプロセステーブル (Process Control Block:PCBと呼ぶ場合もある) プロセスモデル要件 2.1.6プロセスの実現 15 13 14 Operating System 2016 16 1.ハードウェアがスタックポインタやプログラムカウンタなどをス タックに積む 2.ハードウェアは新たなプログラムカウンタを割込みベクトルから ロードする 3.アセンブリ言語で記述された手続きがレジスタ内容を(プロセス テーブルのエントリに)保存する 4.アセンブリ言語で記述された手続きが新たなスタックを設定する 5.C言語で記述されたサービス手続きが実行される(通常、入力を 読み出しバッファに格納する) 6.スケジューラが次に実行すべきプロセスを決定する 7.C言語で記述されたサービス手続きからアセンブリコードに戻る 8.アセンブリ言語手続きが次に実行するプロセスを起動する 割り込み発生時にOSの最下位レベルで行う処理概要 Operating System 2016 仮想メモリ管理システム 複数のプロセスがひとつの物理メモリ空間を如何 に効率的にかつ安全に共有するか メモリ空間管理が必要 プロセスが要求した動的な空間 メモリ空間の主たる課題 プログラム空間、データ空間、スタック空間 呼び出されたプロセス固有の空間 プロセスとメモリ空間の管理 割込み コード2 3 2 1 0 Operating System 2016 実行 17 割込みの種類別に割込み処理プログラムの先頭アドレスを持つポインタ配 列だと思うと良い(割り込みコードをアドレスに変換する) 割込みベクトルとは