---
# System prepended metadata

title: Chapter9-3　「タスク管理」
tags: [基本情報技術]

---

# Chapter9-3　「タスク管理」
##  5/10(月) 
###### tags:`基本情報技術`



さつき：
* コンピュータから見た仕事の単位がタスク。プロセスとも言われる。
* タスクの状態遷移...イラストかわいい。
    * 実行可能状態
    * 実行状態
    * 待機状態
* ディスパッチャ：管理プログラムの役割
* タスクスケジューリング：どのタスクに使用権をわりあてるのか。
* 優先順方式：タスクに優先度を設定して、その優先順に実行していく
* ラウンドロビン方式：CPUの使用権を、一定時間毎に切り替える方式です
* マルチプログラミング：タスク管理はCPUの有効活用につきます。
* プリエンプティブ...言いにくい
    * CPUにいかに仕事をさせるか。
* 割り込み処理
* 過去問
    * 問１：Bの実行中Aに起動がかかると、Bを実行可能状態にして、Aを実行状態にする。
    * 問2：うーん...





にわ：
- 読み込み
    * 「タスク」＝CPUの実行単位。ざっくりいうと実行中のプログラム（≒プロセス）。ジョブがジョブステップに分解された後、タスクが生成される。
    * タスクには3つの状態がある。
        * READY：実行可能状態。生成直後のタスクはこの状態でCPUの待ち行列に並ぶ
        * RUN：実行状態。
        * WAIT：待機状態。入出力処理が発生し、その終了を待っている状態
    * 効率よくCPUを使えるように、上記3つの状態の間でCPUの使用権を回してる（CPUは同時に複数処理をできるわけではないので）
    * CPUの使用権は実行可能状態（READY）でないと得られないので、実行状態->待機状態で実行状態に戻りたい場合は、一旦実行可能状態を経由する必要がある
    * ディスパッチャ（派遣する人、配車係）：実行可能状態のタスクに使用権を割り当てる管理プログラム（ブラザーて・・・筆者がふざけ始めている。。。）
    * タスクスケジューリング：タスクの実行順序を決める方法。色々方式があるけど以下3つが代表的。
        * 到着順方式：そのまんま。ノンプリエンプション。
        * 優先順方式：そのまんま。プリエンプション。
        * ラウンドロビン方式：CPU使用権を一定時間ごとに切り替える方式。規定時間内に処理終わらなければ、次のタスクに使用権が回って実行中だったタスクは待ち行列の最後に回される。
        * [応用情報技術者平成28年春期 午前問19](https://www.ap-siken.com/kakomon/28_haru/q19.html)
            * ノンプリエンプティブ：OS上で実行されているタスクの切替をプログラム自身に任せ、プログラムがCPUを自発的に開放したタイミングで他のタスクへの切り替えを行うマルチタスク制御方式。OSがCPUを管理しないので、1つのプログラムを実行中は、その他のプログラムの実行は制限される。
            * プリエンプティブ：OSがCPU割り当てを管理し、状況の変化に応じてタスクの切り替えを行う方式。
        * プリエンプション、ノンプリエンプションちょっと分からん・・かったけど若干わかった気がする。
    * マルチプログラミング：見かけ上、複数のプログラムを同時実行してCPUの遊休時間を減らし、利用効率を高めるもの。
        * これをするためにタスク管理が行われている。
    * 割り込み処理：実行中のタスクに割り込んで別処理を実行し、また元のタスク実行に戻ること。
        * 内部割込み：実行中のプログラムが原因で生じる割込み。
            * プログラム割込み：オーバーフローや存在しないページへのアクセス、例外など
            * SVC割込み：入出力処理の要求など、カーネル呼び出し命令が出た時にされる割込み（Super Visor Call）
        * 外部割込み：プログラム外で生じる割込み。
            * 入出力割込み：入出力装置の動作完了、中断による割込み
            * 機械チェック割込み：電源以上など、ハードウェア異常による割込み
            * コンソール割込み：利用者による介入での割込み（コンソールにexit打ち込まれたとか）
            * タイマ割込み：規定の時間を過ぎた時に生じる割込み
- 過去問
    * 問１：OK
    * 問２：ゆっくり図書けばいける
    * 問３：消去法で行けたけど、ウォッチドッグタイマでん？ってなった
    * 問４：OK


ちさと：
* タスク（プロセス）
    * コンピュータが「実行中のプログラム」と識別する単位
    * CPUは複数のことを同時に処理できるわけじゃない。タスク管理の働き（割り込み処理など）で実現できてる。
* タスクの状態（３つ）
    * READY（実現可能状態）：CPUの使用権を得られる状態
    * RUN（実行状態）
    * WAIT（待機状態）：RUNになるには、一旦READYにならないと使用権を得られない。直でRUNにはなれない。

    * プログラムを実行するには、CPUの使用権が必要。これをタスク間で効率よく回すために３つの状態がある。
* ディスパッチャ（訳：係などを派遣する人）
    * READYで順番待ちしてるタスクに使用権を割り当てる管理プログラム
* タスクスケジューリング
    * どのタスクに使用権を割り振るか決める
    * 方式（３つ）
        * 到着順方式：READYになった順に割り当てる。タスク優先度などは考えない。実行途中でCPU使用権が奪われたりしない（＝ノンプリエンプション）
        * 優先度順方式：タスク優先度が高いものから。実行途中で使用権が奪われる（＝プリエンプション）
        * ラウンドロビン方式：制限時間あり。時間内に終わらなかったら、次のタスクに使用権が移る
* マルチ（多重）プログラミング
    * CPUが使われてない時間（入出力処理の間とか）にも他のタスクを処理させて無駄をなくす
* 割り込み処理
    * 実行中のタスクを中断 → 別の処理に切り替え　→ 終わったら元のタスクに戻る
    * 内部割り込み（実行中のプログラムが原因で起こる）
    * 外部割り込み（プログラム外が原因で起こる）

* 過去問
    * 問１：文章読むの大変！
    * 問２：ノートに丸描いて数えたらできた
    * 問３：なんとなく内部外部っぽいやつで考えた
    * 問４：上に同じ