Journal Entry Week 3 CST-334

 This week in CST 334 I focused on making the transition from abstract concepts to concrete practice in memory management. I started by defining the terms we use most often: an address space is the set of virtual addresses a process can reference, a virtual address is the number generated by the program, and the physical address is where that data actually lives in RAM. By simulating the base and bounds scheme on paper, I saw how adding a base register to each virtual address and checking it against a bounds register enforces safety and gives the process the illusion of starting at zero. Moving on to segmentation, I drew out separate segments for code, data, and stack to understand how that approach can reduce internal fragmentation and allow different permissions on each segment. Skipping notes alone and actually writing down the address translations helped me verify my understanding and pinpoint where errors could creep in.

On the hands-on side, I practiced using malloc and free so they feel like deliberate tools instead of black-box functions. I walked through how the heap grows with brk or mmap and why freeing memory promptly matters. I also used sed to apply simple automated edits, which helped avoid repetitive manual changes, and wrote a brief awk script to filter a log file. Automating builds with a Makefile inside Docker made rebuilding consistent and reliable, and following Sam’s tip to run git pull at the start of each session prevented merge conflicts from derailing progress. Altogether, this week’s mix of address translation exercises, memory allocation in C, and small Unix utilities gave me a clear, connected view of how memory management fits together in an operating system. I feel prepared to build on this foundation as we move into page tables and virtual memory next.

Comments

Popular posts from this blog

My Educational and Career Goals

Week 5 Learning Journal

Learning Journal – Week of May 11, 2025