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 15, 2023
Technology
2
290
仮想記憶 ~概念編~
以下動画のテキストです。
https://youtu.be/8E85MD6INYs
Satoru Takeuchi
PRO
January 15, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Rook: Intro and Deep Dive With Ceph
sat
PRO
0
88
会社員しながら本を書いてきた知見の共有
sat
PRO
3
770
デバイスにアクセスするデバイスファイル
sat
PRO
1
32
ファイルシステムのデータを ブロックデバイスへの操作で変更
sat
PRO
1
28
デバイスドライバ
sat
PRO
0
45
マルチスレッドの実現方法 ~カーネルスレッドとユーザスレッド~
sat
PRO
2
110
共有メモリ
sat
PRO
3
67
マルチスレッドプログラム
sat
PRO
3
56
Linuxのブートプロセス initramfs編
sat
PRO
2
76
Other Decks in Technology
See All in Technology
Uniadex__公開版_20250617-AIxIoTビジネス共創ラボ_ツナガルチカラ_.pdf
iotcomjpadmin
0
150
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
180
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
2
480
AIのAIによるAIのための出力評価と改善
chocoyama
2
520
Clineを含めたAIエージェントを 大規模組織に導入し、投資対効果を考える / Introducing AI agents into your organization
i35_267
4
1.4k
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
PRO
12
4.4k
米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
2
850
Кто отправит outbox? Валентин Удальцов, автор канала Пых
lamodatech
0
310
第9回情シス転職ミートアップ_テックタッチ株式会社
forester3003
0
170
“社内”だけで完結していた私が、AWS Community Builder になるまで
nagisa53
1
260
Wasm元年
askua
0
120
OpenHands🤲にContributeしてみた
kotauchisunsun
1
310
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Designing Experiences People Love
moore
142
24k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.9k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
The Pragmatic Product Professional
lauravandoore
35
6.7k
The Language of Interfaces
destraynor
158
25k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
Transcript
仮想記憶 ~ 概念編 ~ Jan. 15th, 2022 Satoru Takeuchi twitter:
satoru_takeuchi
はじめに • 仮想記憶という機能の説明 ◦ システム上で複数のプロセスを動作させる際の課題を解決 ◦ プロセスごとに独自のメモリ空間を見せる ◦ 本動画では概念だけ説明。機能を実現するしくみは別動画で説明 •
事前に見ておく必要がある動画 ◦ その34 実行ファイル • 話を簡単にするために実行ファイルはPIEではないとする ◦ その35 Address Space Location Randomization
プロセスが生まれてから消えるまで 1. ユーザが実行ファイルを指定してカーネルにプロセスを実行するよう依頼 2. 実行ファイル内の情報をもとにコードとデータをメモリ上に配置 3. 実行ファイル内に書かれているエントリポイントから実行開始 test(実行ファイル) メモリ コード
データ コード データ マップ
二つの課題 • コード/データマップ位置の重複 • データ保護
コード/データマップ位置の重複 • 例) 同じプロセスを二つ実行 test(実行ファイル) メモリ コード データ
コード/データマップ位置の重複 • 例) 同じプロセスを二つ実行 1. testファイルからプロセスを生成 test(実行ファイル) メモリ コード データ
コード データ マップ
コード/データマップ位置の重複 • 例) 同じプロセスを二つ実行 1. testファイルからプロセスを生成 2. testファイルから二つめのプロセスを生成しようとするが … test(実行ファイル)
メモリ コード データ コード データ 既にマップ済み
データ保護 • システムに2つのプロセスA,Bが存在すると仮定 プロセスA プロセスB メモリ *) カーネルの存在は省略
データ保護 • お互いのメモリにアクセスできるとまずい プロセスA 盗み見、破壊可能? プロセスB メモリ
仮想記憶 • Linuxや他の多くのOSは仮想記憶という機能によって2つの問題を解決 ◦ 📝 他にも方法は色々あるが省略 • プロセスごとに独自のメモリ空間を見せる 物理メモリ(システムに搭載されているメモリ )
プロセスAの 仮想アドレス空間 物理アドレス空間 プロセスAのメモリ
個々のプロセスの挙動 • プロセスが指定するアドレスはすべて仮想アドレス ◦ 物理メモリに直接アクセス不能 物理メモリ(システムに搭載されているメモリ ) プロセスAのメモリ 1. 仮想アドレスXにアクセス
2. アドレス変換& 物理アドレスYにアクセス
複数プロセスがある場合 物理メモリ プロセスAの 仮想アドレス空間 プロセスBの 仮想アドレス空間 プロセスAのメモリ プロセスBのメモリ
「コード/データマップ位置の重複」の解決 • 例) 同じプロセスを二つ実行 ◦ testファイルからプロセス Aを生成 test(実行ファイル) 物理メモリ コード
データ
「コード/データマップ位置の重複」の解決 • 例) 同じプロセスを二つ実行 1. testファイルからプロセス Aを生成 test(実行ファイル) 物理メモリ コード
データ Aのコード Aのデータ プロセスAの 仮想アドレス空間
「コード/データマップ位置の重複」の解決 • 例) 同じプロセスを二つ実行 1. testファイルからプロセス Aを生成 2. testファイルからプロセス Bを生成
test(実行ファイル) 物理メモリ コード データ Aのコード Aのデータ プロセスAの 仮想アドレス空間 プロセスBの 仮想アドレス空間 Bのコード Bのデータ *) 実際はコード領域は共有するが説明は省略
データ保護 物理メモリ プロセスAの 仮想アドレス空間 プロセスBの 仮想アドレス空間 プロセスAのメモリ プロセスBのメモリ 見えない 見えない
まとめ • 仮想記憶はシステム上で複数のプログラムを実行する際の課題を解決できる ◦ コード/データのマップ先の重複 ◦ データ保護 • プロセスごとに仮想アドレス空間をもつ ◦
プロセスが指定するアドレスは全部仮想アドレス • 詳細は別動画で