Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
仮想記憶 ~確認編~
Search
Satoru Takeuchi
PRO
January 23, 2023
Technology
1
230
仮想記憶 ~確認編~
以下動画のテキストです。
https://youtu.be/J3x2SI_9Tkk
Satoru Takeuchi
PRO
January 23, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Linux環境のCPU上で10ミリ秒間に起こること
sat
PRO
3
76
HDDへのアクセス速度は位置によって変わる!??
sat
PRO
4
33
ボリュームマネージャLVM
sat
PRO
2
74
Best Practices of Production-Grade Rook/Ceph Cluster
sat
PRO
1
1.7k
OSSへの貢献をはじめたきっかけ、貢献で得たもの、やりたい人へのアドバイス(改)
sat
PRO
4
120
device mapperによるディスクI/O障害のエミュレーション 既存ターゲット編
sat
PRO
0
100
分散ストレージCephのデータ破壊検知修復機能は本当に動作するのか
sat
PRO
0
43
ディスクI/O障害のエミュレーション カーネルモジュール自作編
sat
PRO
0
40
分散ストレージはすごいぞ
sat
PRO
2
2.6k
Other Decks in Technology
See All in Technology
技術広報経験0のEMがエンジニアブランディングをはじめてみた
coconala_engineer
1
140
単回帰分析について数式を追いながら実装してみた
kentaitakura
0
510
技術イベントはなんとかひねり出す 日経の技術広報の取り組み/techpr3
nishiuma
0
230
Castor - Symfony Live 2024 - Paris
lyrixx
1
110
大規模データとの戦い方
knih
1
480
継続的テストモデルを実現するためにスリーアミーゴスを用いた10Xでのシフトレフトの事例
nihonbuson
3
260
LLMの現在
pfn
PRO
3
1.9k
社内共通ルールを値オブジェクトにして社内ライブラリとして運用してみた話
leveragestech
2
1.2k
統計的学習理論読み Chapter 2
kmatsui
1
290
BDD(Cucumber)コミュニティが無料提供しているコンテンツの紹介と現在起きている危機
nihonbuson
4
750
Autopsy of a Cascading Outage from a MySQL Crashing Bug
jfg956
0
200
依存ライブラリはどこに?
takesection
0
120
Featured
See All Featured
Designing for humans not robots
tammielis
247
25k
The Mythical Team-Month
searls
214
42k
From Idea to $5000 a Month in 5 Months
shpigford
376
45k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
153
14k
Infographics Made Easy
chrislema
237
18k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
Embracing the Ebb and Flow
colly
78
4.1k
Web development in the modern age
philhawksworth
201
10k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.3k
Building Adaptive Systems
keathley
29
1.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
58
14k
Transcript
仮想記憶 ~ 確認編 ~ Jan. 23rd, 2023 Satoru Takeuchi twitter:
satoru_takeuchi
はじめに • 「その54 仮想記憶 ~概念編~」で説明したことを実機で確認 • 話を簡単にするために実行ファイルはPIEではないとする ◦ その35 Address
Space Location Randomization
おさらい: 仮想記憶 • プロセスごとに固有の仮想アドレス空間を持つ ◦ プロセスは仮想アドレスしか指定できない ◦ 仮想アドレスにアクセスするとカーネルとハードウェアが連携して物理アドレスに変換し、物理メモリ にアクセス 物理メモリ(システムに搭載されているメモリ
) プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ プロセスBのメモリ プロセスBの 仮想アドレス空間
実験してみよう • 実験プログラム 1. グローバル変数fooの値とアドレスを表示して ENTERキーが押されるのを待つ 2. もう一度(1)と同じことをする 3. fooの値を書き換えた後に
fooの値とアドレスを表示して ENTERキーが押されるのを待つ • やること 1. 上記プログラムを2つ動かす。それぞれを A,Bとする 2. 2つのプログラムが同じアドレスにマップされていることを確認 3. A、Bともにfooの値とアドレスが同じであることを確認 4. Aだけfooの値を書き換える(Aをstep2まで実行) 5. Bのfooの値は変わってないことを確認 (Bをstep2まで実行) 6. Bのfooの値を書き換える(Bをstep2まで実行)
初期状態 物理メモリ(システムに搭載されているメモリ ) プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ プロセスBのメモリ プロセスBの 仮想アドレス空間
foo(=0) foo(=0) &foo (=0x571260) &foo (0x571260)
プロセスAのfooの値を書き換え 物理メモリ(システムに搭載されているメモリ ) プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ プロセスBのメモリ プロセスBの 仮想アドレス空間
foo(=100) foo(=0) &foo (=0x571260) &foo (0x571260)
プロセスBのfooの値を書き換え 物理メモリ(システムに搭載されているメモリ ) プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ プロセスBのメモリ プロセスBの 仮想アドレス空間
foo(=100) foo(=100) &foo (=0x571260) &foo (0x571260)
まとめ • 「その54 仮想記憶 ~概念編~」で述べたことが実証できた • 📝「どうやって仮想アドレスを物理アドレスに変換しているか」について説明する動 画を作成見込み