JOS 4~5週目

修論を完全に破壊したのでモチベはあったのだが、エディタをカスタマイズしたくなりついでに vim から neovim に移行していたら時間が消失した。 neovim はそこそこ満足した状態になった。

f:id:itkq:20180222233951p:plain

2/11

  • stab document を軽く読む
    • GCC は -g オプションで .s ファイルに追加のデバッグ情報を埋め込み、リンカによって実行ファイルにも伝播する
    • オブジェクトファイルには stab (symbol table) アセンブラディレクティブとして埋め込まれる
  • Lab 1: Booting a PC Finish lab1 · itkq/jos@224c471 · GitHub

2/21

  • xv6 book Chapter 1: Operating system organization をまともに読む
    • process multiplexing をするために process isolation が必要で、そのためには virtual address (address space) が必要
    • strong isolation のために、application が直接物理リソースを触るのではなく OS が抽象化する
      • Unix process: 透過的なプロセッサスイッチ、exec(2) によるメモリイメージ配置抽象化、file descriptor
    • プログラマの利便性と strong isolation のための system call interface
      • ある process が fail したとき OS も落ちたようでは困る
      • x86 の kernel mode と user mode
      • monolithic kernel, micro kernel
  • Lab 2: Memory Management

2/24

  • xv6 book Chapter 2: Page Tables の序盤を読む
    • x86 は 220 の論理的な PTEs (Page Table Entries) から成る
    • Page Table は two-level tree としてストアされる
      • VA (Virtual Address) => PDE (Page Directory Entry) => PTE => Physical Page
  • Lab2, Part2: Virtual Memory に取り組むが終わらず
    • たぶんまだ物理ページと論理ページの関係がわかってない