0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

タスク管理 コンテキスト切り替え

Posted at

image.png
 コントテキスト切り替えとは、実行状態のタスクを切り替えることです。切り替えの方式には、プリエンプティブ、ノンプリエンプティブ方式があります。

1:プリエンプティブ方式
 「待ち時間(タイムスライス)切れ」や「優先度の高いタスク」が実行可能状態になった」というきっかけで、OSが強制的に介入し、実行状態のタスクを別のタスクに切り替える方式です。このようなきっかけをプリエンプションと言います。

 OSが強制的に介入してタスクを切り替えるため、タスクが異常な動作(暴走)をしたとしても、他のタスクに切り替わります。この結果、他のタスクは何事もなく実行状態に移り、処理が進みます。つまり、あるタスクがプログラムの不備(バグ)により暴走したとしても、他のタスクには何も影響を与えず、システム全体が停止してしまうような事態にはなりません。

 現在、私たちが利用しているOS(Windows、MacOS、Linuxなd)は、プリエンプティブ方式を採用しています。

2:ノンプリエンプティブ方法式
 タスクが自らCPUを手放して、タスクを切り替える方式です。OSが強制的に介入する仕組みを実装しなくて良い分、OS本体を簡略化できます。
 一方、タスクが異常な動作(暴走)をすると、みずからCPUを手放すことは無くなりますから、他のタスクは実行状態に移れなくなります。この結果、あるタスクがプログラムの不備(バグ)により暴走すると、システム全体が停止てしまう状態となります。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?