From 23e70e0e9ceab9870d96909dda6f848a3ce437d2 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 13 Mar 2019 12:02:59 +0100 Subject: [PATCH] Add a second temporary mapping to figure to make things clearer --- .../posts/10-paging-implementation/index.md | 9 +++++++-- .../temporarily-mapped-page-tables.png | Bin 44984 -> 0 bytes .../temporarily-mapped-page-tables.svg | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) delete mode 100644 blog/content/second-edition/posts/10-paging-implementation/temporarily-mapped-page-tables.png create mode 100644 blog/content/second-edition/posts/10-paging-implementation/temporarily-mapped-page-tables.svg diff --git a/blog/content/second-edition/posts/10-paging-implementation/index.md b/blog/content/second-edition/posts/10-paging-implementation/index.md index 82654029..8ed8a100 100644 --- a/blog/content/second-edition/posts/10-paging-implementation/index.md +++ b/blog/content/second-edition/posts/10-paging-implementation/index.md @@ -113,11 +113,16 @@ On x86_64, however, we can use [huge pages] with size 2MiB for the mapping, inst For devices with very small amounts of physical memory, we could **map the page tables frames only temporarily** when we need to access them. To be able to create the temporary mappings we only need a single identity-mapped level 1 table: -![A virtual and a physical address space with an identity mapped level 1 table, which maps its 0th entry to the level 2 table frame, thereby mapping that frame to page with address 0](temporarily-mapped-page-tables.png) +![A virtual and a physical address space with an identity mapped level 1 table, which maps its 0th entry to the level 2 table frame, thereby mapping that frame to page with address 0](temporarily-mapped-page-tables.svg) The level 1 table in this graphic controls the first 2 MiB of the virtual address space. This is because it is reachable by starting at the CR3 register and following the 0th entry in the level 4, level 3, and level 2 page tables. The entry with index `8` maps the virtual page at address `32 KiB` to the physical frame at address `32 KiB`, thereby identity mapping the level 1 table itself. The graphic shows this identity-mapping by the horizontal arrow at `32 KiB`. -By writing to the identity-mapped level 1 table, our kernel can create up to 511 temporary mappings (512 minus the entry required for the identity mapping). In the above example, the kernel mapped the 0th entry of the level 1 table to the frame with address `24 KiB`. This created a temporary mapping of the virtual page at `0 KiB` to the physical frame of the level 2 page table, indicated by the dashed arrow. Now the kernel can access the level 2 page table by writing to the page starting at `0 KiB`. +By writing to the identity-mapped level 1 table, our kernel can create up to 511 temporary mappings (512 minus the entry required for the identity mapping). In the above example, the kernel created two temporary mappings: + +- By mapping the 0th entry of the level 1 table to the frame with address `24 KiB`, it created a temporary mapping of the virtual page at `0 KiB` to the physical frame of the level 2 page table, indicated by the dashed arrow. +- By mapping the 9th entry of the level 1 table to the frame with address `4 KiB`, it created a temporary mapping of the virtual page at `36 KiB` to the physical frame of the level 4 page table, indicated by the dashed arrow. + +Now the kernel can access the level 2 page table by writing to page `0 KiB` and the level 4 page table by writing to page `33 KiB`. The process for accessing an arbitrary page table frame with temporary mappings would be: diff --git a/blog/content/second-edition/posts/10-paging-implementation/temporarily-mapped-page-tables.png b/blog/content/second-edition/posts/10-paging-implementation/temporarily-mapped-page-tables.png deleted file mode 100644 index 3caca1340dd2710f593ef8887b3d2950ec1b4747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44984 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 f2xPwh&wOS5v-LlGq +
Physical Memory
Physical Memory
0KiB
[Not supported by viewer]
Level 4 Page Table
Level 4 Page Table
4KiB
[Not supported by viewer]
IndexFrameFlags
024KiB
r/w



[Not supported by viewer]
Level 3 Page Table
Level 3 Page Table
16KiB
<div>16KiB</div>
24KiB
<div>24KiB</div>
8KiB
[Not supported by viewer]
IndexFrameFlags
0
32KiB
r/w



[Not supported by viewer]
Level 2 Page Table
Level 2 Page Table
Level 1 Page Table
Level 1 Page Table
32KiB
<div>32KiB</div>
IndexFrameFlags
024KiB
r/w



8
32KiBr/w
9
4KiB
r/w
[Not supported by viewer]
4KiB
4KiB
CR3 Register
CR3 Register
IndexFrameFlags
016KiB
r/w



[Not supported by viewer]
Virtual Memory
Virtual Memory
0KiB
[Not supported by viewer]
4KiB
[Not supported by viewer]
16KiB
<div>16KiB</div>
24KiB
<div>24KiB</div>
8KiB
[Not supported by viewer]
32KiB
<div>32KiB</div>
\ No newline at end of file