Iganinのブログ

日頃の開発で学んだ知見を中心に記事を書いています。

「オペレーティングシステムの仕組み」の感想

読んだ本 

オペレーティングシステムの仕組み (情報科学こんせぷつ)

オペレーティングシステムの仕組み (情報科学こんせぷつ)

題名通りオペレーティングシステムに関する書籍です。 大学の講義の副読本や情報工学が専門外の方がカフェなどで肩に力を入れずゆったり読むのに調度良い難易度と分量かと思いました。 特に数式等も出てこず、一部C言語でのコード記載もありますが、ポインタの基礎的な理解があれば十分そうです。 高校3年次もしくは大学初年度の方、もしくは情報工学を専攻せずにIT関連の職についた方がOSの基礎的な理解を欲したときに読むのに適しているように感じます。

 

感想など

私自身、大学では情報工学とは関係ない専攻だったため、本書の記載から学ぶことは大いにありました。 概要という形では目次をみていただくのが良いかと思いますが、プロセス・スレッド、排他制御と同期、メモリ管理、アクセス制御など普段アプリ開発を行なっている際にも よく見かける内容に関しての概念や実装がとても丁寧に記載されています。 上記に関しては基本情報処理技術者試験や応用情報処理技術者試験を受けられた方は既知の内容かもしれませんが、 より詳しく、ハードウェアとの関わりやC言語でのコード記載も含めながら記されていますので、上記の経験がある方も一読するとより理解が深まるかと思います。

本書を読んでいてPersonal Computerが説明のベースにあるのかなと感じましたので、 今後は iOS, Androidなどのモバイル端末OSの仕組み、 HDD以外の2次記憶装置との間のページングアルゴリズムあたりを調べられたらなと感じました。 特に自分が主に業務で扱っているモバイル端末におけるOSの仕組みとPCのOSの仕組みとの間にどのような差異があるのか、 どういった要請によりそのような差異が生じざるを得なかったのかに興味があります。(ほとんど差はなさそうな気もしますが)

OSの役割について、抽象化というキーワード出てきます。

  • ハードウェアに依存した詳細の隠蔽
  • ハードウェアの持つ物理的な制約の緩和
  • ハードウェアの共有

上記を実現し、ハードウェアを気にせずに処理を行うことができるようにする役割をOSは果たしています。

「抽象化」という概念はOS以外にもみられます。 サーバやDBなどのフルマネージドサービスがクラウドにより提供されることにより、パッチ処理やDBの拡張、物理的なラック構成などオンプレミスで発生する 通常の運用・保守業務のことは気にせずサービスに集中できるようになっています。また、Swiftなどの言語ではメモリアクセスやメモリ管理をあまり気にせずプログラムを作成できるようになっています。 (Objective-Cの初期のMRC方式ではこの辺りなかなか大変だったはずです、C言語のメモリ管理もなかなか骨が折れますね。) 「抽象化」はより豊かなサービスや世界を作るキーワードのひとつだなと感じています。それが進むことによって、下位レイヤーを気にせず、 より簡単により豊かなものを作ることができるようになります。今後どのレイヤーが抽象化されていくのか、それによってどのような変化が生まれるか、はITに限らず興味深い題材の一つですね。