マナビング基本情報技術者

ポーリング制御とは?割込み・排他制御との見分け方

基本情報技術者試験 平成29年度秋期 午前 問17 / ソフトウェア › オペレーティングシステム

過去問にチャレンジ

平成29年度秋期 午前 問17

ソフトウェア制御における,ポーリング制御はどれか。

  1. ア

    CPUが状態レジスタ又はビジー信号などを読み出して,入出力装置の状態を監視する。

  2. イ

    実行中の処理を一時的に中断して,緊急度の高い別の処理を実行する。

  3. ウ

    送信側のタスクがメモリにデータを格納し,受信側のタスクにそのアドレスを伝える。

  4. エ

    複数のタスクが利用する共有資源を,一つのタスクが占有できるようにする。

会話形式の解説

講師講師
この問題では、ソフトウェア制御の方式からポーリング制御を選びます。選択肢には割込みやタスク間通信、排他制御の説明も混ざっています。それぞれ「誰が、何のために、何をする動作か」を読み取るのがコツです。
受験者受験者
ポーリングという言葉は聞いたことがあります。ただ、割込みとの違いがあいまいで、どちらも装置とやりとりする仕組みに見えてしまいます。
講師講師
違いは、どちらから動くかです。ポーリングは、CPUが自分から入出力装置の状態を何度も確かめに行く方式です。装置が使える状態になったかどうかを、CPUが繰り返し確認します。
受験者受験者
そうすると、CPUが状態レジスタやビジー信号を読み出して装置の状態を監視する、という説明がそのまま当てはまりそうです。ビジー信号は、装置が今は使用中だと示す信号のことですよね。
講師講師
その理解で大丈夫です。状態レジスタは装置の状態を記録しておく場所です。CPUがそれを読みに行くのですから、能動的に確かめる動作で、ポーリング制御に当たります。
受験者受験者
実行中の処理を中断して緊急度の高い処理を先に行う、という説明は割込みですね。でも、割込みが起きた後にCPUが装置を調べることもあるので、少し迷いました。
講師講師
迷いやすいところですね。割込みでは、処理が切り替わるきっかけが装置などからの通知です。CPUが自分から見に行くわけではありません。この選択肢の中心は「中断して切り替える」ことなので、ポーリングとは逆の考え方になります。
受験者受験者
メモリにデータを置いて受信側にアドレスを伝える説明は、装置の監視が出てこないので違うと思います。何の仕組みでしょうか。
講師講師
タスク間通信の方式です。タスクは、OSが管理する処理の単位のことです。タスクどうしでデータを受け渡すための仕組みで、装置の状態を監視する動作は含まれていません。
受験者受験者
残りの、共有資源を一つのタスクに占有させるという説明は排他制御ですね。ほかのタスクが使えるようになるのを待つ点が、ポーリングに似ている気もしました。
講師講師
排他制御の目的は資源の使い方の調整です。一つのタスクが使っている間はほかのタスクが同時に使えないようにして、データの矛盾を防ぎます。セマフォなどで実現します。装置の状態を見に行くこととは目的が別なので、ポーリングではありません。
受験者受験者
整理すると、CPUが自分から状態を見に行くのがポーリング、通知を受けて処理を切り替えるのが割込み、データの受け渡しがタスク間通信、資源を一つのタスクに使わせるのが排他制御ですね。
講師講師
そのとおりです。ポーリングは仕組みが単純です。ただ、待っている出来事がなかなか起きないときも確認を繰り返すので、そのぶんCPUの時間を使います。割込みは装置からの知らせを待つ受動的な方式です。能動的か受動的かで対比しておくと、別の言い方で出題されても見分けやすくなります。

まとめ

ポーリング制御は、CPUが状態レジスタやビジー信号を読み出し、入出力装置の状態を自分から繰り返し確かめる方式です。実行中の処理を中断して緊急度の高い処理を行うのは割込みで、装置などからの通知をきっかけに動きます。メモリにデータを置いてアドレスを伝えるのはタスク間通信で、共有資源を一つのタスクに占有させるのはセマフォなどで実現する排他制御です。CPUから能動的に見に行くか、通知を受けて受動的に動くかで区別すると、ポーリングと割込みを見分けやすくなります。

解答・解説

正解はアです

この問題のテーマ

ソフトウェアで入出力などを制御する方式のうち、ポーリング制御がどれかを問う問題です。割込み、タスク間通信、排他制御と区別できるかが問われています。

解き方の考え方

ポーリングは「CPUの側から装置の状態を何度も見に行く」方式だと押さえておくのが近道です。各選択肢について、誰が何を確かめる動作なのか、あるいは何を目的にした仕組みなのかを読み取り、この定義と合うかを比べます。処理を中断して切り替える仕組み、データを受け渡す仕組み、資源の使用を一つのタスクに限る仕組みは、どれもポーリングとは目的が別です。

選択肢ごとの解説

  1. ○ア  CPUが状態レジスタ又はビジー信号などを読み出して,入出力装置の状態を監視する。
    状態レジスタやビジー信号を読み出して装置の状態を監視するという説明は、CPUが自分から装置の様子を確かめにいく動作です。装置が使える状態になったかどうかを、CPUが繰り返し確認するのがポーリングなので、この説明はポーリング制御に当たります。
  2. ×イ  実行中の処理を一時的に中断して,緊急度の高い別の処理を実行する。
    実行中の処理をいったん止め、緊急度の高い処理を先に行うという説明は、割込みの仕組みです。割込みでは、装置などからの通知をきっかけに処理が切り替わります。CPUが自分から状態を見に行くわけではないので、ポーリングとは逆の考え方になります。
  3. ×ウ  送信側のタスクがメモリにデータを格納し,受信側のタスクにそのアドレスを伝える。
    送信側がメモリにデータを置き、受信側にはそのアドレスだけを伝えるという説明は、タスクどうしでデータを受け渡すタスク間通信の方式です。装置の状態を監視する動作は含まれていないので、ポーリング制御には当たりません。
  4. ×エ  複数のタスクが利用する共有資源を,一つのタスクが占有できるようにする。
    複数のタスクで使う共有資源を一つのタスクに占有させるという説明は、同時に使われて矛盾が起きないようにする排他制御です。排他制御にはセマフォなどが使われます。目的は資源の使用を調整することで、装置の状態を監視することではありません。

補足

ポーリングは、CPUが自分から状態を確かめに行く能動的な方式です。一方、割込みは装置からの知らせを待つ受動的な方式です。ポーリングは仕組みが単純ですが、待っている出来事がなかなか起きないときでも確認を繰り返すため、そのぶんCPUの時間を使います。

POINT

  • ポーリングは、CPUが入出力装置の状態を一定間隔で繰り返し確認する方式です。
  • 割込みは、装置などからの通知をきっかけに、実行中の処理を中断して別の処理へ切り替える方式です。
  • メモリにデータを置いて相手にアドレスを伝えるのは、タスク間通信の方式です。
  • 共有資源を一つのタスクだけに使わせるのは排他制御で、セマフォなどで実現します。

※出典:平成29年度秋期 基本情報技術者試験 午前 問17