2016年4月29日金曜日

カーネルの本質を知り演習形式でLinuxの勘所を捉える

実習Linuxカーネル―理論と実習 カーネルを効率的に理解するための実習書


この書籍は概要編と実習編からなる



概要
  •  カーネルの本質はリソースの抽象化にある
  •  カーネルが提供する抽象化されたリソースに対しては、ある統一した手続きにで、デバイス(装置)にアプローチできる
  •  本質的に、プログラムは計算機械(マシン)を操作する手段といえるが、マシンの細かい仕様(個々の装置に対してどのような信号を送れば動作するのか)を知らなくても、カーネルを通じて命令を送ることができる
  •  あるいは、仮想的な機械を想定して、コンピューター上に同じ手続きで装置を作ることもできる。メッセージやセマフォといった仕組みや、いわゆるデータ型オブジェクトといった概念も、このリソースの抽象化が実現させている
  •  プロセスとはリソースの中でも、プログラムを実行するCPU操作の抽象化である
  •  Linuxにおいてはリソースの操作はプロセスによって行われることが大前提である
  •  OSは「プロセスとリソースを管理」し、それらリソースの「メモリを管理」し、外部接続されていたり仮想的だったりする「デバイスを管理」し、それらデバイスへの媒体となる「ファイルを管理」する


実習
  1. とりあえずカーネル変数を/porcを使って読み込んでいく
  2. 並列処理を考慮に入れたLinux上のプログラミングを体験する
  3. ソーネルのソースを読んでみる
  4. カーネルの一部となる、スーパーバイザーモードで動くプログラムを作る
  5. システムコールの追加
  6. 共有メモリ機能の変更
  7. 仮想メモリ機構の理解とチューンナップ
  8. プロセス間の同期メカニズムである「イベント」について学ぶ
  9. スケジューラの変更
  10. プロセス間で利用するパイプをデバイスドライバとして実装
  11. ディスクドライバの変更
  12. ファイルシステムの作成

  • 1973年 ニューヨークで開かれたSOSPのワークショップにおいてデニスリッチーケントンプソンによって”The UNIX Time-Sharing System (Abstract).”が報告される
  •  1969年からから開発が始められたUNIXの設計思想が知られ始めたのは1973年のSOSP報告書による
  •  UNIXの設計思想には二つの新たな方向性があった、一つはOSの小規模化と機能の軽量化であった
  •  1973年時点で、OSと呼ばれるソフトウェアは大規模、多機能なソフトウェアという考え方が多い中、UNIXの設計思想は革新的だった
  •  大学を中心にUNIXは普及し始め、1990年代にはメジャーなものになっていったが、同時に肥大化、巨大化していった 
  •  1991年に開発が始められたLinuxは初期の設計思想に基づいた小規模化、軽量化が推し進められている