CST334 - Week 4 Reflection
Week 4 Reflection
The sheer irony of how much there is to remember in a class deeply rooted in memory management is not lost on me. While last week's deep dive into the inner workings of memory was already feeling granular, this week zoomed in on another granule--the mechanics of how virtual addresses become physical through Paging. Paging, Translation Lookaside Buffers (TLB), and multi-level paging are all playing a role in the choreography of address translation in a way that contextualizes the overarching workflow of the OS more specifically than our prior more general memory or even segmentation discussions.
The lectures laid out how the memory management unit (MMU) handles virtual memory through page tables and page directories. The fact that each process gets the illusion of contiguous memory, while the OS is translating those virtual addresses behind the scenes, illustrates the magic of computer science and additionally drove home how central this concept is to modern systems/general computer use.
Working through quizzes and the lab this week granted additional and much-needed context by putting the concepts--such as the different algorithms (FIFO, LRU, etc.) for caching pages--into practice. Given binary virtual addresses, I had to determine validity using the most significant bit (MSB) from a table of Page Table Entries (PTEs). I'd subsequently extract the Page Frame Number (PFN) and offset. Keeping everything in binary this week actually made just focusing on the concept itself a little simpler as I was tripping myself converting back and forth last week.
This week’s main programming assignment had us build our own MMU simulator--as with other homemade memory library assignments, daunting but definitely the most hands-on way to understand what the MMU is actually doing. Writing page directory and page table functions was a solid test of both conceptual understanding and C programming, which I will continually need for a while longer. Overall, this week continued to nail down the reality that an OS developer has to be hyper-vigilant about what memory is doing at absolutely every level of the abstraction layers that comprise a computer system.
Comments
Post a Comment