実習Linuxカーネル―理論と実習 カーネルを効率的に理解するための実習書
この書籍は概要編と実習編からなる
概要
- カーネルの本質はリソースの抽象化にある
- カーネルが提供する抽象化されたリソースに対しては、ある統一した手続きにで、デバイス(装置)にアプローチできる
- 本質的に、プログラムは計算機械(マシン)を操作する手段といえるが、マシンの細かい仕様(個々の装置に対してどのような信号を送れば動作するのか)を知らなくても、カーネルを通じて命令を送ることができる
- あるいは、仮想的な機械を想定して、コンピューター上に同じ手続きで装置を作ることもできる。メッセージやセマフォといった仕組みや、いわゆるデータ型オブジェクトといった概念も、このリソースの抽象化が実現させている
- プロセスとはリソースの中でも、プログラムを実行するCPU操作の抽象化である
- Linuxにおいてはリソースの操作はプロセスによって行われることが大前提である
- OSは「プロセスとリソースを管理」し、それらリソースの「メモリを管理」し、外部接続されていたり仮想的だったりする「デバイスを管理」し、それらデバイスへの媒体となる「ファイルを管理」する
実習
- とりあえずカーネル変数を/porcを使って読み込んでいく
- 並列処理を考慮に入れたLinux上のプログラミングを体験する
- ソーネルのソースを読んでみる
- カーネルの一部となる、スーパーバイザーモードで動くプログラムを作る
- システムコールの追加
- 共有メモリ機能の変更
- 仮想メモリ機構の理解とチューンナップ
- プロセス間の同期メカニズムである「イベント」について学ぶ
- スケジューラの変更
- プロセス間で利用するパイプをデバイスドライバとして実装
- ディスクドライバの変更
- ファイルシステムの作成
- 1973年 ニューヨークで開かれたSOSPのワークショップにおいてデニスリッチーとケントンプソンによって”The UNIX Time-Sharing System (Abstract).”が報告される
- 1969年からから開発が始められたUNIXの設計思想が知られ始めたのは1973年のSOSP報告書による
- UNIXの設計思想には二つの新たな方向性があった、一つはOSの小規模化と機能の軽量化であった
- 1973年時点で、OSと呼ばれるソフトウェアは大規模、多機能なソフトウェアという考え方が多い中、UNIXの設計思想は革新的だった
- 大学を中心にUNIXは普及し始め、1990年代にはメジャーなものになっていったが、同時に肥大化、巨大化していった
- 1991年に開発が始められたLinuxは初期の設計思想に基づいた小規模化、軽量化が推し進められている