Presentation is loading. Please wait.

Presentation is loading. Please wait.

オペレーティングシステム (プロセス管理とスケジューリング)

Similar presentations


Presentation on theme: "オペレーティングシステム (プロセス管理とスケジューリング)"— Presentation transcript:

1 オペレーティングシステム (プロセス管理とスケジューリング)
2009年10月5日

2 初期化中 稼動状態 電源オン POST ブートストラップ IPL OS コマンド インタプリタ ユーザ・ タスク1 ユーザ・ タスク2
ハードウェアのリセット処理によりプロセッサが働き始める。つまり、リセットベクタで指定されたプログラムを実行する 初期化中 稼動状態 電源オン POST I/Oのチェック メモリチェック 初期化 ブートストラップ IPL OS IPLを読み込む コマンド インタプリタ OSを読み込み システムタスクとして稼動 ユーザ・ タスク1 ユーザ・ タスク2 OSの初期化終了後、コマンド・インタプリタを起動 ユーザーからのコマンドを処理する ユーザ・ タスクn

3 プロセスの概念(23ページ) プロセッサを抽象化したもの 固有の記憶空間が与えられる 実行のひとつの単位
プログラム、データ、レジスタの中身… を含む 固有の記憶空間が与えられる 記憶空間などを共有しているもの→スレッド スレッドとプロセスを明確に区別しない→タスク 実行のひとつの単位 プロセスは(理想的には)複数が同時に走行 (現実にはプロセッサはプログラムを処理するために使われる資源で、複数のプロセスで共有)→次回

4 並行処理と並列処理 並行処理(Concurrent Processing) 並列処理(Parallel Processing)
複数のプロセスにより処理すること 複数のジョブが互いに独立したプロセスになる 並列処理(Parallel Processing) ひとつのジョブを複数のプロセスに分割

5 タスクとジョブ タスクはコンピュータからみた仕事の単位 ジョブは人間からみて目的のある一区切りの仕事
シングルタスクOS ひとつのタスクしか扱わないOS マルチタスクOS 複数のタスクを扱えるようにしたOS ジョブは人間からみて目的のある一区切りの仕事 逐次的なジョブ処理 シングルタスクOSでもマルチタスクOSでも処理できる 並行的なジョブ処理 マルチタスクOSでないと処理できない ※ タスクはプロセスとスレッドを区別しない言い方

6 ジョブ管理とタスク管理の関係 ジョブ実行のスケジューリング タスク実行のスケジューリング 並行的(マルチジョブ) 逐次的(シングルジョブ)
資源の量と全体の処理時間をもとに、優先度をつけて処理 逐次的(シングルジョブ) ただ順番に処理する。スケジューリングの必要がない。 タスク実行のスケジューリング 機械的に処理される。 タスクはOSからみた仕事の単位であるから。 OSが資源の利用状況を見ながら、スケジューリング

7 ハードウェアの管理 Uni-Processor Multi-Processor 管理する主体(=プロセッサ)がひとつ 管理する主体が複数ある
つまり、プロセスの実行管理だけを考えればよい Multi-Processor 管理する主体が複数ある どのプロセッサが何を管理するか、という管理も必要! 計算機の実装方式が複数ある OS内部の管理表は唯一でなければならないが、 複数プロセッサ間で管理のための方法が単一ではない!

8 プロセスの構造(25ページ) テキストセグメント データセグメント ヒープ領域 スタックセグメント 共有セグメント レジスタコンテキスト

9 レジスタコンテキスト プロセッサの持つレジスタの内容 汎用レジスタ 浮動小数点数レジスタ プログラムカウンタ、リンクレジスタ
スタックポインタ、フレームポインタ ステータスレジスタ マルチメディア拡張のためのレジスタ

10 プロセス管理 プロセス制御ブロックPCB(Process Control Block) プロセスの状態 コンテキスト 優先順位
実行可、待ち、消滅中、など コンテキスト レジスタ、資源管理表 優先順位 タイムスライス、実行優先度、経過時間、など PCBは線形リストを形成する 線形リストによりキューを実現 線形リストはタスクの状態ごとに存在する

11 タスク構造体 プロセスやスレッドの状態 スケジューリングポリシー 仮想記憶 スレッドの情報
/usr/src/linux/include/linux/sched.h struct task_struct がLinux OSのタスク構造体 current が参照するタスクが現在実行中のタスク タスク構造体型のデータはカーネル空間に存在 タスク構造体から参照される管理表は多い

12 プロセスの存在形態(27ページ) 実行中タスク 実行可能タスク 実行待ちタスク 入出力 仮想記憶処理 登録済タスク 条件待ちタスク 通信
異常停止タスク 同期 未登録タスク 実行不可能タスク 生成中タスク その他条件 消滅中タスク

13 プロセスの状態 [sakai@star linux]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root ? S Sep03 0:04 init [3] root ? S Sep03 0:02 syslogd -m 0 root ? S Sep03 0:00 klogd -x rpc ? S Sep03 0:00 portmap root ? S Sep03 0:00 /usr/sbin/automou named ? S Sep03 0:00 /usr/sbin/named - root ? S Sep03 0:00 xinetd -stayalive ntp ? SL Sep03 0:08 ntpd -U ntp -g lp ? S Sep03 0:13 lpd Waiting root ? S Sep03 0:01 /usr/sbin/dhcpd e root ? S Sep03 0:02 crond xfs ? S Sep03 0:21 xfs -droppriv -da root ? S Sep03 0:00 smbd -D root ? S Sep03 0:14 nmbd -D daemon ? S Sep03 0:00 /usr/sbin/atd root ? S Sep03 0:00 login -- sakai root tty2 S Sep03 0:00 /sbin/mingetty tt sakai tty1 S Sep03 0:00 -bash sakai tty1 S Sep03 0:00 xinit root ? S Sep03 344:10 X -auth /home/sak sakai tty1 S Sep03 0:00 kterm -fn 8x16 -f sakai tty1 S Sep03 1:43 gkrellm -g -0+0 sakai tty1 S Sep03 0:14 twm sakai pts/4 S Sep03 0:00 bash root ? S Sep13 0:00 sendmail: accepti smmsp ? S Sep13 0:00 sendmail: Queue r sakai tty1 S Oct09 0:01 aumix-X11 sakai tty1 R Oct19 1:54 /usr/lib/mozilla- sakai pts/12 R 11:44 0:00 ps aux

14 例: プロセスの待ち状態 入出力待ちの場合、デバイスのほうにキューを持たせる struct lp_struct {
struct pardevice *dev; unsigned long flags; unsigned int chars; unsigned int time; unsigned int wait; char *lp_buffer; #ifdef LP_STATS unsigned int lastcall; unsigned int runchars; struct lp_stats stats; #endif wait_queue_head_t waitq; unsigned int last_error; struct semaphore port_mutex; wait_queue_head_t dataq; long timeout; unsigned int best_mode; unsigned int current_mode; unsigned long bits; }; struct __wait_queue { unsigned int flags; #define WQ_FLAG_EXCLUSIVE x01 struct task_struct * task; struct list_head task_list; #if WAITQUEUE_DEBUG long __magic; long __waker; #endif }; typedef struct __wait_queue wait_queue_t; struct __wait_queue_head { wq_lock_t lock; long __creator; typedef struct __wait_queue_head wait_queue_head_t;

15 スケジューリング(28ページ) 現実にはCPU数がプロセス数より少ない プロセスにCPUを割付たり取り上げたりする
プロセススケジューリングのアルゴリズム プロセスにCPUを割付たり取り上げたりする プロセスのディスパッチャー B-sh系 /usr/bin/time gogo -test 1000 >a 2>&1 & nice -19 /usr/bin/time gogo -test 1000 >b 2>&1 & C-sh系 /usr/bin/time gogo -test 1000 > & a & nice +19 /usr/bin/time gogo -test 1000 > & b &


Download ppt "オペレーティングシステム (プロセス管理とスケジューリング)"

Similar presentations


Ads by Google