LoginSignup
2
2

More than 1 year has passed since last update.

タスク管理

Last updated at Posted at 2022-08-01

コンピュータの複数の処理

タスクとはコンピュータが「実行中のプログラムですと識別する」仕事の単位。
プロセスとも言われている。
厳密には違うが基本情報技術者では同じとしている。
コンピュータのコマンド、アイコンのダブルクリックしたりするとプログラムがメモリにロードされて実行状態に入る。これをタスクという。
コンピュータは一つのプログラムで動いていない。色んなプログラムが実行状態にある。

CPUは複数のことを同時に処理できるわけではない。
CPUの使用権を足す区間で持ち回り、割り込みを処理したりすることで実現できている。

気づき

クリックやキーボード、マウスはCPUの持ち回しで処理できているのか。
すごいな。

タスクの状態遷移

タスクには3つの状態がある。

実行可能状態(READY)

いつでも実行可能なCPUの使用権がm割ってくるのを待っている状態。
この状態になってCPUの待ち行列に並んでいます。

実行状態(RUN)

CPUの使用権が与えられて、実行中の状態。

待機状態(WAIT)

入出力処理が発生したので、その終了を待っている状態。

実行可能状態実行状態になることができる
実行状態で入出力処理が発生したら待機状態になる。
待機状態で入出力処理が終わったら実行可能状態になる。(CPUの順番待ち)
待機状態から実行状態になることはできない。
必ず待機状態⇨実行可能状態⇨実行状態の流れを組まなければならない。

## 気づき
こうしてqiitaをしているときもCPUの使用権の回してるんだな。
待機状態⇨実行可能状態⇨実行状態の流れはかっこいいな。

ディスパッチャとタスクスケジューリング

CPUの使用権を割り当てるのは、ディスパッチャという管理プログラムの役割だ。
実行可能状態のタスクにCPUの使用権を割り当てるこれをディスパッチという。
このタスク実行順序を定める必要がある。それをタスクスケジューリングと呼ぶ。
タスクスケジューリングには代表的な3つがある。

到着順方式

実行可能状態になったタスク順に、CPUの使用権を割り当てる方式。
実行の途中でCPUの使用権が奪われることはありません

優先順(プライオリティ順)方式

タスクそれぞれに優先度を設定している。
その優先度の高いものから順に実行していく方式。
実行中のタスクよりも優先度の高いタスクが行列に並ぶと、実行の途中でCPU使用権が奪われることがある。(これをプリエンプションという)

ラウンドロビン方式

一定時間ごとに切り替える方式。
規定の時間内に処理がおわらなかった場合、次のタスクに使用権が与えられる。
実行中だったタスクは待ち行列の最後に回される。

イベントドリブンプリエンション

タスクに優先順位はなく、実行可能になった順に実行する方式。
いつまでもCPUを解放しないタスク(無限ループ)が存在すると他のタスクが実行できない。

処理時間順(SJF:Shortest Job First)方式

処理時間の短いタスクを先に実行する方式。
処理時間が他のタスクに比べて極端に長いタスクがある場合、CPU資源が与えられない可能性がある。

マルチプログラミング

タスク管理の役割はCPUの有効活用に尽きる。
CPUの遊休時間を最小限にとどめることが大事になる。
マルチ(多重)プログラミングというは、複数のプログラムを見掛け上同時に実行して見せること。
こうするおとCPUの利用効率を高めることができる。
プログラムAはプログラムBよりも優先度が高く、かつお互いの入出力処理は競合しないものとする。
こういう条件だと図のように遊休時間がでなくて済む。
p237

割り込み処理

時効中のタスクを中断して、別の処理に切り替え、そちらが終わるとまた元のタスクに復帰するという処理のことを割り込み処理という。
実行状態、実行可能状態、待機状態はこの割り込み処理によってタスクの状態が切り替わってる。
マルチプログラミングにとって必須の仕組み

割り込み処理の原因

実行中のプログラミングが原因んで生じるナブの割り込みとプログラム外の要因で生じる外部割り込みがある。
割り込み処理の原因を紹介する。

内部割り込み

プログラム割り込み

オーバフロー、存在しないページへのアクセス、書き込みできない主記憶装置に書き込もうとした時に生じる

SVC(Super Visor Call)割り込み

入出力処理を要求する、カーネル呼び出し命令が発行された時に生じる

外部割り込み

入出力割り込み

入出力装置の動作完了時や中断時に生じる

機械チェック割込み

電源の異常や主記憶装置の障害など、ハードウェアの異常発生時に生じる

コンソール割り込み

オペレータ(利用者)による介入が行われた時に生じる

タイマ割り込み

規定の時間を過ぎた時に生じる割り込み

気づき

カーネルとは?

カーネル呼び出し命令とは

  • システムコール 【system call】 スーパーバイザコール / supervisor call / SVC
    システムコールとは、コンピュータ上で実行中のプログラムが、オペレーティングシステム(OS)のカーネルの特権的な機能を呼び出す仕組み。また、そのための命令や関数などのインターフェース仕様(API)。「サービスコール」(service call)「カーネルコール」(kernel call)と呼ぶシステムもある。

  • アプリケーションソフトなど利用者が直接操作するプログラムの多くは一般的な動作モードであるユーザーモードで実行されるため、特権命令を実行するにはシステムコールによりカーネルに処理を依頼する必要がある。この手続きは内部割り込み(ソフトウェア割り込み)を発生させる形で実装されることが多いため「SVC割り込み」とも呼ばれる。
    出典 https://e-words.jp/w/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%B3%E3%83%BC%E3%83%AB.html

コンソール割込みとは具体的に?

汎用コンピュータシステムを管理するため管理者がコンソール(操作卓)から指令を出したときに発生
出典 https://programmer.exblog.jp/813189/

コンソールからのコマンドをするとこの割り込みが発生するのかな。

問題を解いた時の気づき

プリエンプティブとは?

検索しても見つからなかったため、近いのがあったからこれにした。

プリエンプションとは、コンピュータ上で実行中のプログラム(タスク)を強制的に一時中断し、他をプログラムの実行に切り替えること
出典 https://e-words.jp/w/%E3%83%97%E3%83%AA%E3%82%A8%E3%83%B3%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3.html

リアルタイムOSとは?

リアルタイムOSとは、OS(オペレーティングシステム)の種類の一つで、時間的な制約がある処理を実行するための機能や特性を備えたもの
出典 https://e-words.jp/w/%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0OS.html#:~:text=%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0OS%E3%81%A8%E3%81%AF%E3%80%81OS,%E7%94%A8%E3%81%A8%E3%81%97%E3%81%A6%E3%82%88%E3%81%8F%E7%94%A8%E3%81%84%E3%82%89%E3%82%8C%E3%82%8B%E3%80%82

MPU

マイコン関連の書籍やWebサイトなどで「MCU」と「MPU」という言葉をよく見かけますが、この2つは何が違うのですか?どのように使い分ければよいのでしょうか?

どちらもCPU(Central Processing Unit)を搭載した演算処理を行う半導体デバイスです。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2