SlideShare a Scribd company logo
1 of 14
BSDカーネルの設計と実装


      第5章

  5.13.2 初期化と起動

             BSD読書会
            @geek_alice
システム起動の流れ
①はじめにローダーがディスクからカーネル
イメージを物理メモリへ読み込む
②カーネルイメージは物理メモリの先頭の連
続した領域へ読み込まれる。
③カーネルの非初期化メモリセグメントに相
当する領域をゼロで埋める。
④カーネルのロードが完了すると、ローダは
カーネルで指定された開始アドレスから実行
する。
カーネル実行開始

●
    カーネルの実行が始まるときは、MMUの機能
    が無効になる。よって全てのアドレス参照は物
    理アドレスに対して直接行われる。
●
    カーネルは最初に仮想アドレス空間を表現する
    ために必要なpmapと関連するデータ構造を用意
    する。
初期段階の準備作業
①ロードされたカーネルイメージと入出力
するために、メモリマップされたアドレス
空間を静的に確保するためのディレクトリ
とページテーブルを確保して初期化する。
②カーネルのページテーブルページのため
の固定長のメモリを確保する。
③ユーザ構造体とカーネルスタックを確保
し初期化する。
初期段階の準備作業
④カーネルアドレス空間中の特殊領域を予
約する。
⑤構造体pmapが使用する様々な内部データ
構造を初期化する。
準備作業が終わると
●
    MMUを有効にする。


●
    カーネルはプロセス番号0番のコンテキス
    トで動作を開始する。
仮想アドレス空間上での動作
①pmap_bootstrap()でpmapデータ構造を準
備する。(powerpc/powerpc/pmap.c 532)
②vm_page_startup()でvm_page構造体を確保
し、小規模な固定長のメモリプールを確保
する。(vm/vm_page.c 165)
③次に仮想記憶システムの機種依存部分の
設定を行う。
仮想アドレス空間上での動作

④最後にpmap_init()を実行し、複数のユーザア
ドレス空間の管理と、カーネルの仮想記憶デー
タ構造とカーネルのpmapを同期するために必
要な資源を確保する。
 (powerpc/powerpc/pmap.c 1089)
pmap_init()
1089 pmap_init(vm_offset_t phys_start, vm_offset_t phys_end)
1090 {
1091
1092    CTR0(KTR_PMAP, "pmap_init");
1093
1094    pmap_upvo_zone = uma_zcreate("UPVO entry", sizeof (struct pvo_entry),
1095       NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM |
UMA_ZONE_NOFREE);
1096    uma_zone_set_allocf(pmap_upvo_zone, pmap_pvo_allocf);
1097    pmap_mpvo_zone = uma_zcreate("MPVO entry", sizeof(struct pvo_entry),
1098       NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM |
UMA_ZONE_NOFREE);
1099    uma_zone_set_allocf(pmap_mpvo_zone, pmap_pvo_allocf);
1100    pmap_initialized = TRUE;
1101 }

カーネルのページテーブルを保持するのに最低限必要な固定メモリを確保
する(一般に1Gバイトのアドレス空間が割り当てられる)
pmap_growkernel()

●
    カーネルが動作している間、ページテーブ
    ルの領域を動的に拡張することができる。
●
    一度割り当てられると解放されることはな
    い。
単一マップされた物理ページ

●
    pv_entryは構造体の配列となっており、ひとつ
    の配列要素が1つのアドレス変換を表す。
●
    vm_page構造体の機種依存情報に含まれるリス
    トの先頭ポインタはpv_entry構造体を指す。
                    vmspace    vm_map_entry
     pv_entry 5     vm_map
                   (機種非依存                     Vnode オブジェ ト
                                                        ク
                     情報)       開始アド ス
                                   レ
                                                             vm_page 5
                     vm_pmap   終了アド ス
                                   レ
     pv_entry 18   (機種依存情報)
                               objオフセット
                                                             vm_page 18
                    統計情報
     pv_entry 79                   …
                                                             vm_page 79
複数マップを伴う物理ページ
               vmspace    vm_map_entry
               vm_map
              (機種非依存
pv_entry 5      情報)       開始アドレス

                vm_pmap   終了アドレス
              (機種依存情報)           ト
 pv_entry                 objオフセッ
                                         Vnode オブジェクト

               統計情報                                     vm_page 5
                              …
pv_entry 18
                                                        vm_page 18
               vmspace    vm_map_entry
 pv_entry      vm_map
              (機種非依存                                    vm_page 79
                情報)       開始アドレス
                          終了アドレス
pv_entry 79     vm_pmap
              (機種依存情報)    objオフセット

 pv_entry      統計情報
                              …
pv_entryリストがあると何がいいの?

pv_entryリストがなければ、何千ものプロ
セスが共有ライブラリを共有して動作して
いる場合、ページを書き込み時コピーの状
態にするために何千ものプロセスをすべて
検査しなければならない。
4.4BSDからFreeBSDまで
バッファキャッシュが使用するメモリは、仮想記憶シ
ステムとは独立に管理されていた。
そのためpv_entry構造体のテーブルをあらかじめ用意
していても問題はなかった。しかしFreeBSDではバッ
ファキャッシュと仮想記憶システムが融合したため、
ファイルデータをキャッシュするのに多くのページが
使用されるようになり専用のページは使用されずに無
駄となった。

FreeBSDからはpv_entryは動的に割り当てるようになった

More Related Content

What's hot

Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
 
Maglica - A Simple Internal Cloud Tool at #techkayac
Maglica - A Simple Internal Cloud Tool at #techkayacMaglica - A Simple Internal Cloud Tool at #techkayac
Maglica - A Simple Internal Cloud Tool at #techkayac
Gosuke Miyashita
 
レイトレ空間構造入門
レイトレ空間構造入門レイトレ空間構造入門
レイトレ空間構造入門
Toru Matsuoka
 
mrubyのfiberを試してみた
mrubyのfiberを試してみたmrubyのfiberを試してみた
mrubyのfiberを試してみた
Kindai University
 

What's hot (20)

HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
Windows改造計画
Windows改造計画Windows改造計画
Windows改造計画
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
 
Cコンパイラの改造(未)
Cコンパイラの改造(未)Cコンパイラの改造(未)
Cコンパイラの改造(未)
 
Erlang で再帰
Erlang で再帰Erlang で再帰
Erlang で再帰
 
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
 
Basic of virtual memory of Linux
Basic of virtual memory of LinuxBasic of virtual memory of Linux
Basic of virtual memory of Linux
 
optimal Ate pairing
optimal Ate pairingoptimal Ate pairing
optimal Ate pairing
 
xv6 + mist32 + mruby
xv6 + mist32 + mrubyxv6 + mist32 + mruby
xv6 + mist32 + mruby
 
Ras piでrt linux
Ras piでrt linuxRas piでrt linux
Ras piでrt linux
 
Maglica - A Simple Internal Cloud Tool at #techkayac
Maglica - A Simple Internal Cloud Tool at #techkayacMaglica - A Simple Internal Cloud Tool at #techkayac
Maglica - A Simple Internal Cloud Tool at #techkayac
 
scryptos onsite(plaid CTF)
scryptos onsite(plaid CTF)scryptos onsite(plaid CTF)
scryptos onsite(plaid CTF)
 
FPGAでゲーム機を作ろう! 第6回
FPGAでゲーム機を作ろう! 第6回FPGAでゲーム機を作ろう! 第6回
FPGAでゲーム機を作ろう! 第6回
 
レイトレ空間構造入門
レイトレ空間構造入門レイトレ空間構造入門
レイトレ空間構造入門
 
mrubyのfiberを試してみた
mrubyのfiberを試してみたmrubyのfiberを試してみた
mrubyのfiberを試してみた
 
実はこんなこともできる Fireworksの裏技
実はこんなこともできる Fireworksの裏技実はこんなこともできる Fireworksの裏技
実はこんなこともできる Fireworksの裏技
 
MmapScanner
MmapScannerMmapScanner
MmapScanner
 
Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話
 

Viewers also liked

Libro software project management
Libro software project managementLibro software project management
Libro software project management
joglezr
 
Virtualbox port forwarding
Virtualbox port forwardingVirtualbox port forwarding
Virtualbox port forwarding
geek_alice
 
Bs dread5.13.5
Bs dread5.13.5Bs dread5.13.5
Bs dread5.13.5
geek_alice
 
Cc whats up_with_global_warming
Cc whats up_with_global_warmingCc whats up_with_global_warming
Cc whats up_with_global_warming
ashital
 
Web based intro and tutorial
Web based intro and tutorialWeb based intro and tutorial
Web based intro and tutorial
Thomas Sprow III
 
Employer branding through Social Media
Employer branding through Social MediaEmployer branding through Social Media
Employer branding through Social Media
S. JANET JOSE
 

Viewers also liked (18)

Score m.5
Score m.5Score m.5
Score m.5
 
Libro software project management
Libro software project managementLibro software project management
Libro software project management
 
Nyrorganicopportunitypresentationpowerpoint 141204174458-conversion-gate01
Nyrorganicopportunitypresentationpowerpoint 141204174458-conversion-gate01Nyrorganicopportunitypresentationpowerpoint 141204174458-conversion-gate01
Nyrorganicopportunitypresentationpowerpoint 141204174458-conversion-gate01
 
Virtualbox port forwarding
Virtualbox port forwardingVirtualbox port forwarding
Virtualbox port forwarding
 
Bs dread5.13.5
Bs dread5.13.5Bs dread5.13.5
Bs dread5.13.5
 
Challenger program
Challenger programChallenger program
Challenger program
 
Cc whats up_with_global_warming
Cc whats up_with_global_warmingCc whats up_with_global_warming
Cc whats up_with_global_warming
 
สรุปGassolidliquid
สรุปGassolidliquidสรุปGassolidliquid
สรุปGassolidliquid
 
Configure wifi
Configure wifiConfigure wifi
Configure wifi
 
Web based intro and tutorial
Web based intro and tutorialWeb based intro and tutorial
Web based intro and tutorial
 
Challenger program
Challenger programChallenger program
Challenger program
 
Challenger program
Challenger programChallenger program
Challenger program
 
Visites guidées à Paris par Des Mots et des Arts
Visites guidées à Paris par Des Mots et des ArtsVisites guidées à Paris par Des Mots et des Arts
Visites guidées à Paris par Des Mots et des Arts
 
Cc whats up_with_global_warming
Cc whats up_with_global_warmingCc whats up_with_global_warming
Cc whats up_with_global_warming
 
Employer branding through Social Media
Employer branding through Social MediaEmployer branding through Social Media
Employer branding through Social Media
 
Periodic Classification
Periodic ClassificationPeriodic Classification
Periodic Classification
 
Human eye class 10
Human eye class 10Human eye class 10
Human eye class 10
 
Презентация iWowWe
Презентация iWowWe Презентация iWowWe
Презентация iWowWe
 

Bsd daemon read