岩波講座 ソフトウエア科学6「オペレーティングシステム」#1

最初にコンピューターを使ったのはFujitsu Micro 8 (FM-8)だった気がする。 F-BASICしか使わなかった。 次にはエプソンQC-10IIというCP/Mか何かが動くマシンを使った記憶もある。 私が最初にOSとして独立したものを使ったのは、このCP/M風のものだったのだろう。
あれから30年以上、コンピューターとオペレーティングシステムを使っている訳だが、 コンピューターについても、オペレーティングシステムについても、 良く理解しているとは言えないように感じている。 コンピューターサイエンスについてもちゃんと体系的に学ぶ機会はなかった。 だが、オペレーティングシステムについて、学びたいとは長く思っていた。
今、手元に「岩波講座 ソフトウエア科学6『オペレーティングシステム』前川 守 著」と言う 35mmほどの厚さの書籍がある。 これの全てを理解することを目標に、読んでいきたい。

「まえがき」について

一般のユーザーの言うオペレーティングシステムは、以下ようなものが含まれているらしい。
  • ユーザーインターフェイス
  • ウィンドウシステム
  • ネットワーク機能
  • リアルタイムシステム機能
  • エディター
  • 文書処理機能
  • コンパイラー

ここで、分からないのは「リアルタイムシステム機能」である。 「エディター」と「文書処理機能」は、UNIXを意識したものであろう。 UNIXにはedやviといったエディターがあるし、 文書処理ソフトウエアであるroffはUNIX V7にも含まれていたはずである。
リアルタイムと言うと、最近の文脈で言えば、リアルタイムオペレーティングシステムというのがある。FreeRTOSやRTEMS、eCosなどである。 思い出すと、UNIXにもUNIX-RTやUNIX-RTRというのがあったので、それを意識してのことかもしれない。
だが、少なくとも現在では、RT-LinuxやINTimeなどはあるものの、汎用オペレーティングシステムにリアルタイムオペレーティングシステムの機能は含まれないと言って良いように思う。INTimeは使われている製品を使ったことはあるが、Windowsとどう統合されているか分かっていないので、的外れかもしれないが。
一方で、NetBSDでもlibrt (POSIX Real-time Library)というのはあって、 sem_init(3)などはここで実装されているのである。 もしかしたら、ここでのリアルタイムシステム機能とは、 librtのことを言うのかもしれない。
「(オペレーティングシステムの構築の)各となる技術は、 実用的なシステムを大きな誤りをおかさず構築できるようになった、 と言う意味で、一定の水準に達したと言うべきであろう」 とも書かれている。 また「ただし、その技術は飽和点に達したということではなく、 実用的な意味で一定水準に達したというこである。 今後、画期的な技術が出現し、オペレーティングシステムの構築法が 根本的に変わることを否定するものではない。」とも書かれている。 この書籍に書かれた概念が変わるような画期的な方法が既に出現している のであれば、この書籍を読む意味はあまりないのかもしれない。 それが分かった時に読むのを止めれば良いだけであるので、気にするのは 止めておこう。
「並列処理とその制御が基本となっている。この並列処理は通常のプログラミング ではあまり出現しないものであり、オペレーティングシステムのむずかしさの 主たる原因にもなっている。」という記述もある。 まず、並列処理とは何であろうか。 ここで気になるのは、ここでは登場していないが「並行処理」という用語も 存在していると言うことである。この書籍の目次には、「並行プロセス」「コンカレントプログラミング」「マルチプログラミング」という用語も登場している。
並行処理から並列処理へというウェブページによると、 「並行処理の目標は…CPU使用率を上げてパフォーマンスを向上させること」とある。 また、「単一コア・システムの時代、並行処理は非同期処理に関連して理解されて」 いたとの記述もある。 今は知識が乏しくここで出現した「並列処理」と言う用語を明確には把握できない。 読み進めて行くにあたっては注意することにしよう。 いずれにしても、現在はマルチプロセッサーが当然の時代であり、マルチタスクで複数のプロセスを実行するのも、複数スレッドも使用するのが当然になっているように思う。 私にはスレッドはうまく理解できていないが、それは別の話である。 もし、複数プロセス、複数スレッドが理解の障害になるのだとしたら、それを解説する書籍は、現在は数多く存在するはずである。
そして、この書籍は「核技術」を扱い、 ユーザーインターフェイスやウィンドウシステム、 エディター、文書処理などは含まないそうである。 いわゆるオペレーティングシステムのカーネルの実現する機能のうち、 ネットワーク機能を除いたものを説明して行くようだ。
分からなかった箇所について、調べたこと、理解したことを書いて行くことにしよう。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

plgarc/wip/llama.cppでpkgsrcのBLASサポートを探る

この記事は、 NetBSD Advent Calendar 2024 の13日目の記事です。 llama.cppを使ってみる 以前に、 NetBSD/amd64でllama.cppを使ってみる という記事で llama.cpp を使ってみていました。 あれか...