Title:タスク(プロセス)管理
タスク | CPUから見た処理単位 |
プロセス |
タスクの状態遷移
実行可能状態(ready state) | タスクは実行できる状態にあり、CPU使用権が与えられるのを待っている状態 |
実行状態(running state) | CPU使用権を与えられ処理を実行している状態 |
待ち状態(wait state) | 入出力の完了、あるいは他のタスクからの合図を待っている。 |
①タスクの生成 | 生成されたタスクは、実行可能待ち行列に加えられる。 | →実行可能状態 |
②ディスパッチング(CPUの割り当て) | →実行状態 | |
③プリエンプション(タイマ割込みなど) | 割当て時間の終了。優先度の高いタスクの割込み | →実行可能状態 |
④システムコールによる入出力要求など | 入出力処理の発生。CPUの使用権を放棄。 | →待ち状態 |
⑤入出力動作完了待機の完了 | 待ち状態の原因の事象が完了した。 | →実行可能状態 |
⑥タスクの消滅 | タスクの実行の完了 |
タスクの管理 | TCB(Task Control Block:タスク制御ブロック) |
TCBの内容 | タスクID | |
優先順位 | ||
タスクの状態 | ||
レジスタ群格納アドレス | PSW(プログラム状態語) | |
プロテクション状態、実行時間など |
コンテキスト切換え(コンテキストスイッチング) | プログラム情報、主記憶アドレスの切換え |
context switching |
Title:タスクのスケジューリング
スケジューリング方式 | トリガ(きっかけ)と優先順位 |
イベントドリブン方式 | トリガ |
タイムスライス方式 | 一定時間(タイムクウォンタム) |
到着順方式 | FCFS(First Come First Served) |
優先順位がなく実行状態になった順に実行する方式。プリエンプションが発生しない。 | |
静的優先順位方式 | 静的に決められた最も高い優先順位をもつタスクから実行される。 |
*スタベーション | (starvation) |
優先順位が低いタスクにはCPU使用権が与えられず、なかなか実行されない。 | |
動的優先順位方式 | スタベーションを回避するため、待ち時間が一定時間以上となるとタスクの優先順位を動的に高くし実行できるようにする。 |
(エージング方式) | |
ラウンドロビン方式 | 実行可能待ち行列に到着した順に従ってタスクにCPU時間を一定時間(タイムゥウォンタム)ずつ割り当てる。 |
フィードバック待ち行列方式 | ラウンドロビン方式に優先順にをつけたもの。優先順位を下げ、実行時間を少しづつ長くする。 |
処理時間順方式 | SPT(Shortest Processing Time First) |
プリエンプティブなOS | プリエンプションの機能をもつOS |
リアルタイムOS | (RTOS) | 非同期に発生する複数の要求(事象)に対し、定められた時間内に、対応するタスクの処理を終わらせなければいけない制御系の組み込みシステムで使用されている。 | |
静的優先度ベース | イベントトリブン方式 | ||
イベントトリブンプリエンプション方式 | |||
時間内に処理を終了することを目的に優先順位を動的に変える。 | デッドラインスケジューリング方式 |
Title:同期制御
同期制御 | 他のタスクと協調し合いながら処理を進める方法です。 |
合図を待ち合わせる。 | |
イベントフラグ | SETシステムコール |
CLEARシステムコール | |
WAITシステムコール | |
Post/Wait命令 | 2ビット表現 |
タスク間の通信手段 | |
記憶空間共有型 | 複数のタスクから参照や書込みができる共有領域(共有メモリ:Shared Memory)を用いてデータの交換を行う。 |
OSが提供する機能 | メールボックス、メッセージキューなど |
パイプ機構 | ファイルやメモリを経由してデータの出力を入力とする。 |
Title:排他制御
クリティカルセクション(危険域) | 複数のタスクが共有する共有資源(shared resource)に対し、同時に更新処理を行うとエラーを引き起こす処理部分を言う。 |
TSL命令 | (Test and Set Lock) |
ロック/アンロック | |
セマフォ | セマフォ(semaphore)は、ダイクストラによって考案された排他制御メカニズム。セマフォ変数とそれを操作するP操作、V操作から構成される。 |
2値セマフォ | 1と0の2つの値しかとらないセマフォを言う。 |
ゼネラルセマフォ | n個のタスクをクリティカルセクションに入れる。んから0の整数値をとる。 |
ENQ/DEQ命令 | 共有資源の占有使用要求および解放を行う排他制御専用の命令です。 |
Title:デッドロック
静的防止法 | 占有する順番を決める。 |
Title:プロセスとスレッド
プロセス | タスクと同じ意味を持つ。 |
スレッド | CPU資源のみが割り当てられる。 |