こんにちは、みっちゃんです。

国家試験の一つである「情報処理技術者試験」は、情報処理技術者としての知識や技能をはかるための試験です。一口に「情報処理技術者試験」といっても、試験区分(種類)は12個もあります。

その中で「基本情報技術者試験」は、ある意味、情報処理技術者を名乗る上での登竜門的な位置付けで、履歴書を彩る資格の一つだと思います。興味のある方は、是非受験してみてください(試験の詳細はこちら)。

今回の記事では、「基本情報技術者試験」の1つ上のレベルの「応用情報技術者試験」対策シリーズとして、「オペレーティングシステム」を紹介していきたいと思います。

目次(まとめ)
- オペレーティングシステムは基本ソフトウェアの一つ
- 利用者の要求に応えるコンピュータ内の役者たち
- タスク間での衝突を避ける仕組み
- 参考文献

オペレーティングシステムは基本ソフトウェアの一つ

オペレーティングシステム(OS: Operating System)とは、マイクロソフト社の"Windows"やアップル社の"Mac"として知られている基本ソフトウェアです。より厳密には、基本ソフトウェアのうち、制御プログラム(別名:カーネル)です。

"制御"プログラムと呼ばれるように、コンピュータ内のWordソフトウェアやExcelソフトウェア、それらのソフトウェアで生成されたWordファイルやExcelファイル、キーボードやマウスなどを制御しています。

利用者の要求に応えるコンピュータ内の役者たち

では、OS(カーネル)はどのように働いているのでしょうか?正直、近年のコンピュータは性能が高すぎて、なかなかイメージしづらいとは思いますが、簡単な例をあげながら説明してみたいと思います。

例えば、書類A, B, Cがあったとき、それらを印刷したいと思ったとき、みなさんどうしていますか?書類Aの印刷ボタンを押して、プリンタから出てきたら、次に、書類Bの印刷ボタンを押して、プリンタから出てきたら、書類Cの印刷ボタンを押して、プリンタから出てくるのを待つ、という感じでしょうか?

私は、待ちきれないので、先に、書類A, B, Cの印刷ボタンを全て押して、プリンタの前で出待ちをするという感じです。このとき、「書類Aの印刷」「書類Bの印刷」「書類Cの印刷」というジョブ(利用者から見た仕事)をまとめてコンピュータに与えているということになります。コンピュータ側では、"ジョブスケジューラ"が複数のジョブを順番に実行していきます。

ただし、"ジョブ"はあくまで利用者から見た仕事のことで、コンピュータから見た仕事は"タスク"と呼ばれます。今回の例では、簡単のため、印刷にしか注目していないですが、コンピュータは同時に多くの"タスク"を抱えています。"ディスパッチャ"と呼ばれる司令塔などが、タスクの実行可否を管理しています。

タスク間での衝突を避ける仕組み

研究者は、世界中の研究者と研究内容を共有するため、研究成果を英語で記事にして雑誌に載せることが求められます。わたしも様々な雑誌に記事を掲載してきましたが、数名の研究者で協力して記事を作る際にはDropboxをよく活用しました。

その際、研究者Aが執筆中の記事に、研究者Bが執筆しようとすると、エラーが生じてしまうことがありました。このように、同じ情報(記事)を複数のタスク(研究者)が取り扱おうとすると、情報にエラーが生じてしまいます。

コンピュータ内では、このようなエラーが生じる可能性がある領域"クリティカルセクション"において、"セマフォ変数"と呼ばれる変数が用意されています。情報にセマフォ変数をつけていて、変数の値が"1"のときは、タスクが情報にアクセスできるが、"0"のときにはアクセスできないといったメカニズムです。ここで、タスクがセマフォ変数に"1"をつける操作を"P操作"、"0"をつける操作を"V操作"といいます。

コンピュータの中は複雑で用語もいっぱいあるのですが、簡単なメカニズムを知ると、少しコンピュータへの思いやりの気持ちが芽生えるのかもしれません。

参考文献

きたみりゅうじ「キタミ式イラストIT塾 応用情報技術者」技術評論社