From bf66b29225d9f8f916b75f5a1d4aa6414ec69a4e Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Tue, 12 Mar 2019 12:05:44 +0100 Subject: [PATCH] Update images --- .../map-complete-physical-memory.svg | 2 ++ .../page-tables-mapped-at-offset.svg | 2 ++ .../qemu-mapper-translate-addr.png | Bin 0 -> 11058 bytes .../qemu-new-mapping.png | Bin 8136 -> 8139 bytes .../qemu-print-level-4-table.png | Bin 0 -> 15714 bytes .../qemu-print-p4-entries-abstraction.png | Bin 18345 -> 0 bytes .../qemu-print-p4-entries.png | Bin 10856 -> 0 bytes .../qemu-translate-addr.png | Bin 9947 -> 10946 bytes 8 files changed, 4 insertions(+) create mode 100644 blog/content/second-edition/posts/10-paging-implementation/map-complete-physical-memory.svg create mode 100644 blog/content/second-edition/posts/10-paging-implementation/page-tables-mapped-at-offset.svg create mode 100644 blog/content/second-edition/posts/10-paging-implementation/qemu-mapper-translate-addr.png create mode 100644 blog/content/second-edition/posts/10-paging-implementation/qemu-print-level-4-table.png delete mode 100644 blog/content/second-edition/posts/10-paging-implementation/qemu-print-p4-entries-abstraction.png delete mode 100644 blog/content/second-edition/posts/10-paging-implementation/qemu-print-p4-entries.png diff --git a/blog/content/second-edition/posts/10-paging-implementation/map-complete-physical-memory.svg b/blog/content/second-edition/posts/10-paging-implementation/map-complete-physical-memory.svg new file mode 100644 index 00000000..599aa8d5 --- /dev/null +++ b/blog/content/second-edition/posts/10-paging-implementation/map-complete-physical-memory.svg @@ -0,0 +1,2 @@ + +
Physical Memory
Physical Memory
10TiB + 0KiB
<div>10TiB + 0KiB</div>
10TiB + 4KiB
<div>10TiB + 4KiB</div>
10TiB + 16KiB
<div>10TiB + 16KiB</div>
10TiB + 24KiB
<div>10TiB + 24KiB</div>
10TiB + 8KiB
<div>10TiB + 8KiB</div>
10TiB + 1000KiB
<div>10TiB + 1000KiB</div>
0KiB
[Not supported by viewer]
4KiB
[Not supported by viewer]
16KiB
<div>16KiB</div>
24KiB
<div>24KiB</div>
8KiB
[Not supported by viewer]
1000KiB
<div>1000KiB</div>
Virtual
Memory
[Not supported by viewer]
0KiB
[Not supported by viewer]
4KiB
[Not supported by viewer]
\ No newline at end of file diff --git a/blog/content/second-edition/posts/10-paging-implementation/page-tables-mapped-at-offset.svg b/blog/content/second-edition/posts/10-paging-implementation/page-tables-mapped-at-offset.svg new file mode 100644 index 00000000..ad854dfb --- /dev/null +++ b/blog/content/second-edition/posts/10-paging-implementation/page-tables-mapped-at-offset.svg @@ -0,0 +1,2 @@ + +
Physical Memory
Physical Memory
10TiB + 0KiB
<div>10TiB + 0KiB</div>
10TiB + 4KiB
<div>10TiB + 4KiB</div>
10TiB + 16KiB
<div>10TiB + 16KiB</div>
10TiB + 24KiB
<div>10TiB + 24KiB</div>
10TiB + 8KiB
<div>10TiB + 8KiB</div>
10TiB + 1000KiB
<div>10TiB + 1000KiB</div>
0KiB
[Not supported by viewer]
4KiB
[Not supported by viewer]
16KiB
<div>16KiB</div>
24KiB
<div>24KiB</div>
8KiB
[Not supported by viewer]
1000KiB
<div>1000KiB</div>
Virtual
Memory
[Not supported by viewer]
0KiB
[Not supported by viewer]
4KiB
[Not supported by viewer]
\ No newline at end of file diff --git a/blog/content/second-edition/posts/10-paging-implementation/qemu-mapper-translate-addr.png b/blog/content/second-edition/posts/10-paging-implementation/qemu-mapper-translate-addr.png new file mode 100644 index 0000000000000000000000000000000000000000..87062d5444976b95270843ba0c8aab77d8b2c76c GIT binary patch literal 11058 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 literal 0 HcmV?d00001 diff --git a/blog/content/second-edition/posts/10-paging-implementation/qemu-new-mapping.png b/blog/content/second-edition/posts/10-paging-implementation/qemu-new-mapping.png index 5e4a6c5e0280aa6bf90c307496df56e9934058a6..6d9f8d18f6149fd2822136579a7756bd6f291078 100644 GIT binary patch literal 8139 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 F698$wB)R|q diff --git a/blog/content/second-edition/posts/10-paging-implementation/qemu-print-level-4-table.png b/blog/content/second-edition/posts/10-paging-implementation/qemu-print-level-4-table.png new file mode 100644 index 0000000000000000000000000000000000000000..39001d2028c3e2f2a001b4d3d24908682b9ee425 GIT binary patch literal 15714 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 diff --git a/blog/content/second-edition/posts/10-paging-implementation/qemu-print-p4-entries.png b/blog/content/second-edition/posts/10-paging-implementation/qemu-print-p4-entries.png deleted file mode 100644 index 69e2a6023946873fcfe3bade36900a4177bc4e4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10856 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
iKnT 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 diff --git a/blog/content/second-edition/posts/10-paging-implementation/qemu-translate-addr.png b/blog/content/second-edition/posts/10-paging-implementation/qemu-translate-addr.png index 2bf5917fd46d66cd0ec31c4c60234da61b2b1da7..9e8dde74f284db9e72c3e2ec4a27cca73e86d00f 100644 GIT binary patch literal 10946 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 S<0S(F1B0ilpUXO@geCws2JW~3