読者です 読者をやめる 読者になる 読者になる

雑記帳

ソフトを中心に雑記を書いてる割とすぐ転職したい28歳。

Linuxカーネル解読室(2日目)

ブラウザクラッシュで入力が飛んだ。
でも負けないぞよ。
少ないけど気合で毎日少しずつ進めます。

  • 序章 0.5 プロセス管理
    • プロセスは実行状態を管理する。プロセス毎にデータ構造を用意する。プロセスIDや実行優先度などある。
    • プロセスは、プロセスIDとそれを管理するプロセスグループID・セッションIDでナンバリングされる。
    • なんとシグナル機構と密接な関わりが!!
    • 親プロセスはforkシステムコールで親の属性を引き継いだ子プロセスを作る。複製後、プロセススケジューリング対象に加えられる。
    • その後、execシステムコールにより、プログラムの実行を開始する。その際、プロセス情報は破棄されexecされたモノになる。
    • execはDLLの利用はOK。動的にプログラムにリンクして実行出来る。
    • exitシステムコールはプロセス終了の合図。実メモリを解放したり、利用中のファイルを閉じたり。
    • 親プロセスをwaitして子プロセスを待てる。Linuxカーネルはexitした子のデータ解放を、親がwaitするまで一部保留する。留保中はZOMBIEになる。
    • シグナルは非同期事象を伝える仕掛け。そのイベントで、デフォルト動作、無視、シグナルハンドラ動作の何れかを実行する。
    • シグナル動作には、プロセス終了やプロセスの中断、コアダンプなどある
    • スレッドはプロセスの一種。
    • プロセスと(スレッドと)の違いは、プロセス空間を共有していることと、スレッド間で関係情報を保持している点。
    • スレッド操作はPOSIXライブラリによって提供される。
  • 序章 0.6 メモリ管理
    • 2種類のメモリ管理でRAMチップのメモリ領域を管理する。一つは実メモリ管理、一つは仮想記憶。
    • 実メモリ管理では、ページという単位で管理している。ページはCPUがサポートするメモリ管理の最小単位。
    • Buddyシステム(隣あった空き領域を結合する機能)と、Slabアロケータ(フラグメント防止とメモリキャッシュ効率化)がの2つがキモ。
    • 仮想記憶の機能により、物理的なメモリフラグメントを意識する必要が無くなる。
    • Linuxはページング機構を提供しているが、参照が発生したものだけ実際に割り当てをしている。(デマンドページング)
    • 参照率が低いものはスワップしてシステムへ返却する。ここでいうスワップとはページ単位で追い出すページアウトに相当し、プロセス全体を追い出すいわゆるスワップアウトではない。(Linuxでの呼び方)


明日はファイルシステムとネットワーク。