IT

【超初心者向け】プリエンプションとは?シンプルにまとめます。

本記事は教養記事シリーズその52です。その他の教養記事は【超初心者向け】3分で分かる!教養記事シリーズ目次をご覧ください。

★この記事の流れ★

プリエンプションとは

本記事は初学者の理解を優先しているため正確性に欠ける場合があります。致命的なミスはご指摘いただけますと助かります。

プリエンプション

プリエンプションは,英語で「preemption」と書きます。「emption」は古い用法ですが「購入」という意味です。「pre」は前もってという意味の接頭語ですので,preemptionは前もって購入すること,つまり「先取り」の意味になります。

 

何を先取りするの?

 

端的に言ってしまえば,プログラムの実行を先取りします。通常であれば,アプリケーション自身がタスクの制御を行います。これをノンプリエンプション方式と呼びます。対して,OS側がアプリケーションのタスク管理をしてしまうのが,プリエンプションという方式になります。

プリエンプション方式の根底にあるのが,マルチタスク方式と呼ばれる制御方法です。一昔前のコンピュータでは,一度に一つのアプリケーションしか実行することができませんでした。しかし,CPU性能の向上により,OS側が複数のアプリケーションを「タイムスライス」と呼ばれる単位ごとに区切って制御することで,あたかも同時に複数のアプリケーションを動かしているようにすることができます。

実行プログラムの切り替えのことを「コンテキストスイッチ」と呼びます。

 

プリエンプティブな方式を採用することで,アプリケーション側は他のアプリケーションの影響を受けることなく実行をすることができます。一方,コンテキストスイッチのためには複数の追加の処理が必要になります。現在の家庭用PCでこそ問題はありませんが,CPUの性能が高くなければ迅速な処理を行うことは難しいでしょう。

プリエンティブ方式を採用する場合には,デッドロックを起こさないようにするためにも,カーネルの機能との兼ね合いを考える必要があります。

 

ひとこと

言われてみれば当たり前ですが,CPUの性能にPCのタスク設計等が依存することは面白いです。量子コンピュータが実用化されれば,どのような方式が登場するのか,気になるところです。

 

応用情報の参考書ならコチラをどうぞ!

ABOUT ME
zuka
京都大学で機械学習を学んでいます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※ Please enter your comments in Japanese to prevent spam.