CST 334 - Learning Journal Week 3

 This week’s module covered a wide range of topics, including address spaces, physical and virtual addresses, the base-and-bounds translation scheme, segmentation, memory-management design goals, garbage collection, malloc() and free(), automated editing with sed, build automation with make, and simple awk programs. Even just listing these out feels like a lot, and that pretty much captures how the week felt overall—dense, fast-moving, and conceptually challenging.

Address spaces and the distinction between physical and virtual addresses made sense on a surface level: physical addresses correspond to real hardware memory, while virtual addresses are what programs think they’re using. But once we moved into base-and-bounds and segmentation, I started struggling. Writing a sentence or two defining the terms was easy. Actually understanding how translation happens is the struggle I am having, such as figuring out what is added, checked, or offset. Simulating the translation process exposed how many tiny steps there are, and how missing even one detail causes the entire mechanism to produce the wrong output. It often felt like I understood the idea in theory but couldn’t reliably perform the mechanics in practice.

Segmentation was even more difficult. I understand the motivation—protect processes, divide memory logically, improve flexibility but the actual translation rules I am not confident in. Sometimes I can talk myself through an example correctly; other times I get lost in which segment table entry applies to which virtual address. 

The introduction to garbage collection and manual memory management in C added another layer of challenge. I get the purpose of malloc() and free(), but remembering when memory should be freed, how dangling pointers form, and how garbage collectors work behind the scenes all add up to a level of detail that feels overwhelming right now. 

On the tools side—sed, make, and awk—I appreciate their usefulness but struggled with the syntax. Sed commands feel cryptic, and I found myself constantly re-checking examples just to make small changes. Makefiles also felt like a new “mini-language,” and I’m still piecing together which parts are rules, which parts are dependencies, and how variables fit in. Awk came slightly easier, maybe because it resembles general programming a bit more, but even then the pattern-action structure took time to get used to.

Right now, I’m mostly left with questions: When does segmentation get replaced by paging? How do modern systems actually combine these techniques? And when will the mechanics feel natural instead of intimidating? I still need a lot more practice to feel confident.

Comments

Popular posts from this blog

CST 349 - Week 4 Learning Journal

CST349 Week 2 - Learning Journal

CST 349 - Week 5 Learning Journal