Basic of virtual memory of Linux

Tetsuyuki Kobayashi
組込みエンジニアのためのLinux入門
     仮想メモリ編
    2007.2.22 original
    2012.10.27 revival

        小林哲之
                         1
注釈
• このスライドは2007年に作成して、CELFテク
  ニカルジャンボリーで発表したものです。
•   http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree13

• 内容的には現在でもほぼ通用するので再演
  します。




                                                         2
このスライドの対象とする方
• 今までずっと組込み機器のプロジェクト
  に携わってきて最近はOSにLinuxを使っ
  ている方々
このスライドの目的
• Linuxの仮想メモリの仕組みを理解し現
  在のプロジェクトに役立てる。
 – 仕組みを知らなくてもプログラムは動くが、
   性能を引き出すためには仕組みの理解が
   重要。




                 4
まず基本の概念から
• 仮想~、論理~ virtual, logical
  – 仮想アドレス、論理デバイス、論理セ
    クタ、仮想マシン
  – あたかも ... のように扱う
• 実~、物理~ real, physical
  – 実アドレス、物理デバイス、物理セクタ
  – そのもの、そのまんま
                   5
仮想化: あたかも・・・ 実は
•   あたかも巨大のようだが、実は少ない。
•   あたかも平らのようだが、実は凸凹。
•   あたかもたくさんのようだが、実はひとつ。
•   あたかも占有しているようだが、実は共有。
    仮想化は複雑さや個々に依存することを
    隠蔽するマジック。
    マジックなので種も仕掛けもある。
     = 実と仮想の対応付け(マッピング)
     あたかもそう見えるように変換している。
                    6
仮想化の代償
• マイナス面よりもプラス面が勝っている
  から仮想化を行うわけだが、常にプラス
  とは限らない。




               7
物理メモリと仮想メモリ
• いままでの大抵の組込み機器プロジェクトで
  は物理メモリしか扱うことがなかった。
• 最近は組み込みシステムの規模の増大化に
  伴ってLinuxやWindow CEなどPC向けOSの
  流れを持つOSを使用することが多くなってき
  た。これらのOSは仮想メモリシステムを備え
  ている。
• このスライドではLinuxについて説明する。

                      8
物理メモリ
• 単一のメモリ空間
• 機器ごとにROM,RAM,I/Oの
                          ROM
  実装アドレスが異なるので
  それを意識してプログラムする
                          RAM



                          I/O

                          I/O

                          I/O
                      9
仮想メモリ
• 利点
 – ユーザープログラムは実際のメモリマップ(実装アドレス、
   実装サイズ)に依存しなくなる。
 – 不連続な物理メモリの断片を連続する仮想メモリとして利
   用できる。
 – メモリ保護:バグによって無関係の部分のメモリが破壊さ
   れることを防止できる。
• 新しい概念の導入
 – アドレス変換
 – 多重メモリ空間
 – デマンドページング

                      10
仮想メモリの概念図




出典: フリー百科事典『ウィキペディア(Wikipedia)』
                                  11
アドレス変換
仮想アドレス空間                   物理アドレス空間

                             ROM



                            アドレスy
                             RAM
               MMU

                              I/O
 アドレスx
            Linux kernel
                              I/O
            がコントロー
                 ル            I/O

                             12
仮想メモリはCPUの中だけ
 仮想アドレス空間
                     物理アドレス空間

                       ROM



                      アドレスy
                       RAM
               MMU

 アドレスx                  I/O

                        I/O
         CPU            I/O

CPUから外にでてくるアドレスバスにのるのは物理アドレスだけ。
ロジアナでは仮想アドレスは観測できない。    13
ユーザープログラムは仮想アドレスだけ
  仮想アドレス空間        物理アドレス空間
                    ROM


                   アドレスy
                    RAM
            MMU
  アドレスx             I/O
                    I/O
          CPU       I/O


 物理アドレスを扱うのはカーネルモードだけ。
 つまりカーネル本体とデバイスドライバ。
                          14
MMUでのアドレス変換
                 31          22 21             12 11                 0
仮想アドレス           Directory Index   Page Table Index    Page Offset


Page Directory
Base Register
                        Page Directory

                         Directory             Page Table
                          Entry                                 No page! ... page fault

                                               Page Table        Page
                                                 Entry
                                                                 物理アドレス



                                                                     15
TLB
       仮想アドレスページ         物理アドレスページ




                   ...


• Translation Lookaside Buffers
• 仮想アドレスをkeyとして物理アドレスを得る
  ハッシュテーブルのようなもの
• 大抵のアドレス変換はTLBにヒットするので
  実際にPage Directory, Page Tableをアクセ
  スせずに済む。
                                     16
多重メモリ空間
プロセスごとに独立した仮想メモリ空間
                     物理アドレス空間

                       ROM




                       RAM

                        I/O

                        I/O

                       17
デマンドページング
•    ページ単位でマッピングされる
     – ページのサイズはたいていは4Kbytes
•    2段階で行われる
     1. 仮想メモリの割り当て(mmap)
        管理台帳に登録するだけ
     2. 実際にアクセスがあったときに初めて
        そのページに物理メモリが割り当てられる

    アクセスのないページには物理メモリが割り当てられないので
    仮想メモリサイズ >= 実際に必要な物理メモリサイズ
                           18
デマンドページングの動作例
(1)
              仮想アドレス空間   物理アドレス空間


read access

                      対応する
                     物理ページが
                      ない!




          ページフォールト発生
          カーネルモードへ
                                    19
デマンドページングの動作例(続)
(2)
      仮想アドレス空間   物理アドレス空間




                       DMA転送
           マッピング

カーネルがデータをロードして物理アドレスをマッピングする。
                            20
デマンドページングの動作例(続)
(3)
             仮想アドレス空間   物理アドレス空間



      data




      ユーザーモードに復帰。
      ユーザープログラムからは何事もなかったように
      データが読める。 ... でも実際に時間はかかっている。
                                   21
ページキャッシュ

       物理アドレス空間




ディスクからの読んだ内容はメモリに余裕がある限り保持しておく。
シーケンシャルにアクセスされる場合が多いので数ページ分を
まとめて先読みを行う。
そのため(2)では毎回ディスクアクセスが発生するとは限らない。
                       22
ページアウト

(2)で物理メモリの空きがなかった場合、使用頻度の低いと思われるページを
解放する。そのページの内容が変更されていなければそのまま破棄。
変更されていればスワップデバイスに掃きだす。
       仮想アドレス空間   物理アドレス空間




                                 swap device


掃きだす              ただし組込みLinuxではswap deviceを装備していない
ページ               ことが多い。           23
ページアウト(続)

解放した分のページを使って要求されたページの割り当てを行う。
このような「お手玉」をすることで実際に搭載されている物理メモリサイズ
よりも大きなサイズの仮想メモリを扱うことができる。
     仮想アドレス空間    物理アドレス空間




                          DMA転送
                no page

                                  24
ページの共有
 仮想アドレス空間
プロセスA

              物理アドレス空間




            同じファイルの同じページは複数の
            プロセスから共有される。
   プロセスB
            Read onlyのページだけでなく
                            25
            write可のページも。
コピーオンライト

         プロセスA
                   Write可でプライベートのページに
                   書き込みが発生すると・・・
write
access           r/w private




                                 ページフォルト
                                   発生



                               read only


            プロセスB
                                      26
コピーオンライト(続)

         プロセスA
write
access



                            read/write

                                    copy
                            read only


                    カーネルはコピーしてページの設定を
            プロセスB
                    read/writeに変更する
                               27
プロセスのメモリ空間
                       process A     B      C
     0x00000000




                       user space                ...

         1プロセスあたり約3GBのユーザメモリ空間


     TASK_SIZE
                        kernel
                                    カーネルの空間は各プロセスで共通。
                        space       カーネルの空間はユーザーモードでは
          0xffffffff                Read/Write/Execute不可。
TASK_SIZEはi386では0xc0000000          プロセス切り替えに伴ってユーザーメモリ
ARMでは 0xbf000000                    空間が切り替わる。           28
ユーザプロセスのメモリ空間の実例
cat /proc/<PROCESS_ID>/maps
00101000-0011a000   r-xp   00000000   fd:00   15172739   /lib/ld-2.4.so
0011a000-0011b000   r-xp   00018000   fd:00   15172739   /lib/ld-2.4.so
0011b000-0011c000   rwxp   00019000   fd:00   15172739   /lib/ld-2.4.so
0011e000-0024a000   r-xp   00000000   fd:00   15172740   /lib/libc-2.4.so
0024a000-0024d000   r-xp   0012b000   fd:00   15172740   /lib/libc-2.4.so
0024d000-0024e000   rwxp   0012e000   fd:00   15172740   /lib/libc-2.4.so
0024e000-00251000   rwxp   0024e000   00:00   0
08048000-08049000   r-xp   00000000   fd:00   11666681   /home/koba/lab/loop/a.out
08049000-0804a000   rw-p   00000000   fd:00   11666681   /home/koba/lab/loop/a.out
b7fef000-b7ff1000   rw-p   b7fef000   00:00   0
b7fff000-b8000000   rw-p   b7fff000   00:00   0
bffeb000-c0000000   rw-p   bffeb000   00:00   0          [stack]

 アドレス範囲                     file offset        inode      file name
                           r: read      device
                           w: write major:minor
                           x: execute
                           s: shared
                                                                   29
                           p: private (copy on write)
ユーザプロセスのメモリ空間の実例
         (詳細)
cat /proc/<PROCESS_ID>/smaps
      ....
0011e000-0024a000 r-xp 00000000 fd:00 15172740   /lib/libc-2.4.so
Size:              1200 kB
Rss:                136 kB     RSS = 物理メモリサイズ
Shared_Clean:       136 kB
Shared_Dirty:         0 kB
Private_Clean:        0 kB
Private_Dirty:        0 kB
0024a000-0024d000 r-xp 0012b000 fd:00 15172740   /lib/libc-2.4.so
Size:                12 kB
Rss:                  8 kB
Shared_Clean:         0 kB
Shared_Dirty:         0 kB
Private_Clean:        0 kB
Private_Dirty:        8 kB
0024d000-0024e000 rwxp 0012e000 fd:00 15172740   /lib/libc-2.4.so
Size:                 4 kB
Rss:                  4 kB
Shared_Clean:         0 kB
Shared_Dirty:         0 kB
Private_Clean:        0 kB
Private_Dirty:        4 kB                               30
      ....
システムコールmmap
#include <sys/mman.h>

void *mmap(void *start, size_t length, int prot, int flags,
        int fd, off_t offset);

int munmap(void *start, sizt_t length);


• ファイルやデバイスをメモリにマップ/アンマップする
• 引数 prot
   – PROT_NONE または PROT_EXEC, PROT_READ,
     PROT_WRITEのOR演算
• 引数 flags
   – MAP_FIXED, MAP_SHARED, MAP_PRIVATE,
     MAP_ANONYMOUS, ...
                                                 31
mmapのtips
• MAP_FIXEDを指定しなければカーネルが空
  いているページをさがしてくれる。
• MAP_FIXEDを指定したときに既存のページ
  と重なっていたら、そのページは内部的に
  munmapされる。
 – なのでこのオプションは通常は使用しない。
• ファイルのオフセットはページサイズの整数
  倍でなければならない。
• mmapとmunmapのアドレス、サイズは一致
  していなくてもよい。
                    32
mmapの使い方(1)
• 巨大サイズのmallocの代用
 – コンパクションなどデータのコピーが発生しない。
 – malloc/freeと違ってmunmapするときのaddr, size
   はmmapで確保したときと異なっていてもよい。
    • まとめて1回のmmapで確保して少しづつ分割し
      てmunmapで返却するのもあり。
 – glibcのmallocの実装ではある一定以上のサイズ
   のmallocはmmapを呼び出す。
   • DEFAULT_MMAP_THRESHOLD = (128*1024)


                                           33
mmapの使い方(2)
• 高速なファイルアクセス
 – read, writeのシステムコールでは内部で物
   理ページにバッファリングしている。そこか
   らユーザの指定した配列にコピーしている
   。
 – mmapを使うことで直接ページにアクセス
   できるようになるのでデータのコピーを減ら
   すことができる。
 – Java1.4の java.nio.MappedByteBuffer
                             34
mmapの使い方(3)
• プロセス間の共有メモリ
 – 複数のプロセスから同じファイルをR/W可
   sharedでマッピングする。
 – IPCの共有メモリのシステムコール
   (shmget, shmat,..)は内部で同様のことを
   行っている。



                        35
mmapの使い方(4)
• 物理メモリ、I/Oポートのアクセス
 – デバイスファイル /dev/mem をマッピング
   することでユーザーモードで物理メモリ空
   間をread/writeすることが可能。
 – /dev/memをアクセスするにはrootの権限
   が必要。



                     36
まとめ
• 仮想メモリの使用量と物理メモリの使用
  量は異なる。実際に問題になるのは物
  理メモリの使用量。
• 仮想メモリのオーバーヘッドはいつ発生
  するのかを意識する。
 – TLBミス
 – ページフォルト
• システムコールmmapの活用。
                   37
参考文献
• Linux kernel ソース
  http://www.kernel.org/
• GNU C ライブラリのソース
 http://www.gnu.org/software/libc/
• “詳解LINUXカーネル 第2版”
  オライリージャパン
• “Linuxカーネル2.6解読室”
   SoftBank Creative
• Linux manコマンド
• その他たくさんのWEB検索結果
                                     38
2007年当時

        おまけ:最近の話題
• CELFのBootTimeResourcesより
  – KernelXIP
                           NORフラッシュが
  – ApplicationXIP         使われなくなったため
                           あまり聞かなくなった。
  – (DataReadInPlace)
• CELFのMemoryManagementResoucesより
  – Huge/large/superpages
  – Page cache compression → zramの名前でメインライン
                             化。
                             3.8ではstaging卒業の見込
                             み。
                                 39
1 of 39

Recommended

Linux の hugepage の開発動向 by
Linux の hugepage の開発動向Linux の hugepage の開発動向
Linux の hugepage の開発動向Naoya Horiguchi
2.3K views18 slides
今話題のいろいろなコンテナランタイムを比較してみた by
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみたKohei Tokunaga
61.8K views26 slides
インフラエンジニアの綺麗で優しい手順書の書き方 by
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
145.5K views34 slides
Linux女子部 systemd徹底入門 by
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
137.9K views50 slides
本当は恐ろしい分散システムの話 by
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
686K views70 slides
アーキテクチャから理解するPostgreSQLのレプリケーション by
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
30.2K views69 slides

More Related Content

What's hot

コンテナネットワーキング(CNI)最前線 by
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線Motonori Shindo
31.6K views34 slides
DockerとPodmanの比較 by
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
47.8K views37 slides
FastAPIのテンプレートプロジェクトがいい感じだった話 by
FastAPIのテンプレートプロジェクトがいい感じだった話FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話NipponAlgorithm
1.3K views18 slides
Unified JVM Logging by
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
12.9K views77 slides
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6 by
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6Hironobu Isoda
6.6K views88 slides
コンテナ未経験新人が学ぶコンテナ技術入門 by
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
140.3K views89 slides

What's hot(20)

コンテナネットワーキング(CNI)最前線 by Motonori Shindo
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo31.6K views
DockerとPodmanの比較 by Akihiro Suda
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda47.8K views
FastAPIのテンプレートプロジェクトがいい感じだった話 by NipponAlgorithm
FastAPIのテンプレートプロジェクトがいい感じだった話FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
NipponAlgorithm1.3K views
Unified JVM Logging by Yuji Kubota
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
Yuji Kubota12.9K views
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6 by Hironobu Isoda
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
Hironobu Isoda6.6K views
コンテナ未経験新人が学ぶコンテナ技術入門 by Kohei Tokunaga
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga140.3K views
不揮発メモリ(NVDIMM)とLinuxの対応動向について by Yasunori Goto
不揮発メモリ(NVDIMM)とLinuxの対応動向について不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について
Yasunori Goto21.2K views
ESP32開発環境まとめ by Kenta IDA
ESP32開発環境まとめESP32開発環境まとめ
ESP32開発環境まとめ
Kenta IDA7K views
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう! by Kohei Tokunaga
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
Kohei Tokunaga6.4K views
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理 by NTT DATA Technology & Innovation
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
containerdの概要と最近の機能 by Kohei Tokunaga
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
Kohei Tokunaga3K views
Dockerを支える技術 by Etsuji Nakai
Dockerを支える技術Dockerを支える技術
Dockerを支える技術
Etsuji Nakai82.1K views
Amazon EKS によるスマホゲームのバックエンド運用事例 by gree_tech
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech7.5K views
std::pin の勘所 by Hiroaki Goto
std::pin の勘所std::pin の勘所
std::pin の勘所
Hiroaki Goto2.7K views

Viewers also liked

Tips of Malloc & Free by
Tips of Malloc & FreeTips of Malloc & Free
Tips of Malloc & FreeTetsuyuki Kobayashi
11.5K views51 slides
Linux MMAP & Ioremap introduction by
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionGene Chang
10.4K views26 slides
Simple and efficient way to get the last log using MMAP by
Simple and efficient way to get the last log using MMAPSimple and efficient way to get the last log using MMAP
Simple and efficient way to get the last log using MMAPTetsuyuki Kobayashi
8.5K views27 slides
Tricky implementation of Go ARM soft float by
Tricky implementation of Go ARM soft floatTricky implementation of Go ARM soft float
Tricky implementation of Go ARM soft floatTetsuyuki Kobayashi
6.4K views26 slides
LinuxのFull ticklessを試してみた by
LinuxのFull ticklessを試してみたLinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたHiraku Toyooka
10.5K views19 slides
Linuxのプロセススケジューラ(Reading the Linux process scheduler) by
Linuxのプロセススケジューラ(Reading the Linux process scheduler)Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)Hiraku Toyooka
11.9K views37 slides

Viewers also liked(18)

Linux MMAP & Ioremap introduction by Gene Chang
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introduction
Gene Chang10.4K views
Simple and efficient way to get the last log using MMAP by Tetsuyuki Kobayashi
Simple and efficient way to get the last log using MMAPSimple and efficient way to get the last log using MMAP
Simple and efficient way to get the last log using MMAP
Tetsuyuki Kobayashi8.5K views
LinuxのFull ticklessを試してみた by Hiraku Toyooka
LinuxのFull ticklessを試してみたLinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
Hiraku Toyooka10.5K views
Linuxのプロセススケジューラ(Reading the Linux process scheduler) by Hiraku Toyooka
Linuxのプロセススケジューラ(Reading the Linux process scheduler)Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Hiraku Toyooka11.9K views
x86-64/Linuxに独自メモリ空間を勝手増設 by Minoru Nakamura
x86-64/Linuxに独自メモリ空間を勝手増設x86-64/Linuxに独自メモリ空間を勝手増設
x86-64/Linuxに独自メモリ空間を勝手増設
Minoru Nakamura2.5K views
Cpu Cache and Memory Ordering——并发程序设计入门 by frogd
Cpu Cache and Memory Ordering——并发程序设计入门Cpu Cache and Memory Ordering——并发程序设计入门
Cpu Cache and Memory Ordering——并发程序设计入门
frogd50.7K views
Go言語のスライスを理解しよう by Yasutaka Kawamoto
Go言語のスライスを理解しようGo言語のスライスを理解しよう
Go言語のスライスを理解しよう
Yasutaka Kawamoto31.3K views
2章 Linuxカーネル - メモリ管理1 by mao999
2章 Linuxカーネル - メモリ管理12章 Linuxカーネル - メモリ管理1
2章 Linuxカーネル - メモリ管理1
mao9998K views
0章 Linuxカーネルを読む前に最低限知っておくべきこと by mao999
0章 Linuxカーネルを読む前に最低限知っておくべきこと0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao9999.1K views
Linuxカーネル超入門 by Takashi Masuda
Linuxカーネル超入門Linuxカーネル超入門
Linuxカーネル超入門
Takashi Masuda4.8K views
条件式評価器の実装による管理ツールの抽象化 by Takuya Ueda
条件式評価器の実装による管理ツールの抽象化条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda4.7K views
15 Common Myths you were taught to believe about Cars by Eason Chan
15 Common Myths you were taught to believe about Cars15 Common Myths you were taught to believe about Cars
15 Common Myths you were taught to believe about Cars
Eason Chan83.9K views

Similar to Basic of virtual memory of Linux

TechEd2010_T2-401_EffectiveHyper-V by
TechEd2010_T2-401_EffectiveHyper-VTechEd2010_T2-401_EffectiveHyper-V
TechEd2010_T2-401_EffectiveHyper-VKuninobu SaSaki
1.6K views114 slides
N110 ws12概要 osamut_公開版 by
N110 ws12概要 osamut_公開版N110 ws12概要 osamut_公開版
N110 ws12概要 osamut_公開版Osamu Takazoe
1K views24 slides
Windows Server 2012 のストレージ強化とエンタープライズへの活用 by
Windows Server 2012 のストレージ強化とエンタープライズへの活用Windows Server 2012 のストレージ強化とエンタープライズへの活用
Windows Server 2012 のストレージ強化とエンタープライズへの活用Daichi Ogawa
6.7K views44 slides
Osc2009 Sendai Xen 0124 by
Osc2009 Sendai Xen 0124Osc2009 Sendai Xen 0124
Osc2009 Sendai Xen 0124Kazuhisa Hara
1.1K views49 slides
Osc2009 Do Xen Hara by
Osc2009 Do Xen HaraOsc2009 Do Xen Hara
Osc2009 Do Xen HaraKazuhisa Hara
1.2K views39 slides
20120609 cod ws2012概要 by
20120609 cod ws2012概要20120609 cod ws2012概要
20120609 cod ws2012概要Osamu Takazoe
655 views24 slides

Similar to Basic of virtual memory of Linux(20)

TechEd2010_T2-401_EffectiveHyper-V by Kuninobu SaSaki
TechEd2010_T2-401_EffectiveHyper-VTechEd2010_T2-401_EffectiveHyper-V
TechEd2010_T2-401_EffectiveHyper-V
Kuninobu SaSaki1.6K views
N110 ws12概要 osamut_公開版 by Osamu Takazoe
N110 ws12概要 osamut_公開版N110 ws12概要 osamut_公開版
N110 ws12概要 osamut_公開版
Osamu Takazoe1K views
Windows Server 2012 のストレージ強化とエンタープライズへの活用 by Daichi Ogawa
Windows Server 2012 のストレージ強化とエンタープライズへの活用Windows Server 2012 のストレージ強化とエンタープライズへの活用
Windows Server 2012 のストレージ強化とエンタープライズへの活用
Daichi Ogawa6.7K views
Osc2009 Sendai Xen 0124 by Kazuhisa Hara
Osc2009 Sendai Xen 0124Osc2009 Sendai Xen 0124
Osc2009 Sendai Xen 0124
Kazuhisa Hara1.1K views
20120609 cod ws2012概要 by Osamu Takazoe
20120609 cod ws2012概要20120609 cod ws2012概要
20120609 cod ws2012概要
Osamu Takazoe655 views
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ by Kuniyasu Suzaki
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティSaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
Kuniyasu Suzaki1.6K views
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3 by infinite_loop
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
infinite_loop16.6K views
Introduction of Rancher at OSC Tokyo 17 Spring by Go Chiba
Introduction of Rancher at OSC Tokyo 17 SpringIntroduction of Rancher at OSC Tokyo 17 Spring
Introduction of Rancher at OSC Tokyo 17 Spring
Go Chiba916 views
コンテナ今昔物語_2021_12_22 by 勇 黒沢
コンテナ今昔物語_2021_12_22コンテナ今昔物語_2021_12_22
コンテナ今昔物語_2021_12_22
勇 黒沢569 views
Java EE7 䛸㻌JCache  by maruyama097
Java EE7 䛸㻌JCache Java EE7 䛸㻌JCache 
Java EE7 䛸㻌JCache 
maruyama0973K views
仮想化環境の設計手法 〜プロのテクニック教えます〜 by VirtualTech Japan Inc.
仮想化環境の設計手法 〜プロのテクニック教えます〜仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想マシンにおけるメモリ管理 by Akari Asai
仮想マシンにおけるメモリ管理仮想マシンにおけるメモリ管理
仮想マシンにおけるメモリ管理
Akari Asai799 views
Awsのクラウドデザインパターンをwindows azureに持ってきてみた by Sunao Tomita
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Sunao Tomita3.4K views
SQL Server パフォーマンスカウンター by Masayuki Ozawa
SQL Server パフォーマンスカウンターSQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンター
Masayuki Ozawa5.1K views
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた by GoAzure
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
GoAzure1.9K views
WALをバックアップとレプリケーションに使う方法 by Takashi Hoshino
WALをバックアップとレプリケーションに使う方法WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法
Takashi Hoshino3.3K views
【学習メモ#1st】12ステップで作る組込みOS自作入門 by sandai
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai10K views
Hyper vを理解する by Naoki Abe
Hyper vを理解するHyper vを理解する
Hyper vを理解する
Naoki Abe11.9K views
たのしいNode.js by ishiki-takai
たのしいNode.jsたのしいNode.js
たのしいNode.js
ishiki-takai1.7K views

More from Tetsuyuki Kobayashi

some topic of ffmpeg by
some topic of ffmpeg some topic of ffmpeg
some topic of ffmpeg Tetsuyuki Kobayashi
2.2K views15 slides
New VIdeo CODEC AV1 by
New VIdeo CODEC AV1 New VIdeo CODEC AV1
New VIdeo CODEC AV1 Tetsuyuki Kobayashi
2.8K views14 slides
Try new transport protocol SRT (ver. 2) by
Try new transport protocol SRT  (ver. 2)Try new transport protocol SRT  (ver. 2)
Try new transport protocol SRT (ver. 2)Tetsuyuki Kobayashi
4.1K views28 slides
Try new transport protocol SRT by
Try new transport protocol SRTTry new transport protocol SRT
Try new transport protocol SRTTetsuyuki Kobayashi
2K views16 slides
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機 by
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Tetsuyuki Kobayashi
6.7K views27 slides
WebOS Open Source Edition を試してみた by
WebOS Open Source Edition を試してみたWebOS Open Source Edition を試してみた
WebOS Open Source Edition を試してみたTetsuyuki Kobayashi
1.7K views21 slides

More from Tetsuyuki Kobayashi(20)

Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機 by Tetsuyuki Kobayashi
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Tetsuyuki Kobayashi6.7K views
Linuxのユーザーランドをinitから全てまるごとgolangで書く by Tetsuyuki Kobayashi
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi9.5K views
組み込みLinuxでのGolangのススメ(Go con版) by Tetsuyuki Kobayashi
組み込みLinuxでのGolangのススメ(Go con版)組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ(Go con版)
Tetsuyuki Kobayashi5.3K views

Recently uploaded

JJUG CCC.pptx by
JJUG CCC.pptxJJUG CCC.pptx
JJUG CCC.pptxKanta Sasaki
6 views14 slides
SNMPセキュリティ超入門 by
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門mkoda
188 views15 slides
さくらのひやおろし2023 by
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023法林浩之
94 views58 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
73 views64 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
50 views29 slides

Recently uploaded(11)

SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda188 views
さくらのひやおろし2023 by 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之94 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.50 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4184 views
Web3 Career_クレデン資料 .pdf by nanamatsuo
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdf
nanamatsuo14 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka76 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...

Basic of virtual memory of Linux