Posts

Showing posts from November, 2025

CST 334 - Learning Journal Week 4

 This week's material focused on how operating systems manage memory. We talked about paging, address translations, locality, multi-level page tables, swapping and page replacement policies. Paging is the idea that the OS divides memory into fixed-size chunks so it can manage processes more easily. We practiced translating virtual addresses to physical ones using page tables. This helped me see how the OS creates the illusion that each program has its own private memory space. Average memory access time combines fast hits and slow misses. Multi-level paging came up as a solution to the memory waste of giant single-level page tables. The part I found the hardest was multi-level address translations. I understand the 'tree of pages tables' idea but when I try to manually walk through each level, I lose track of which bit index what. The "aha" moment I had this week was with locality. Once I recognized how often programs loop over arrays or reuse variables, it made s...

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 ex...

CST 334 - Learning Journal Week 2

Topics Covered:  1. The fork() System Call:  fork() is a system call used to create a new process - known as the child - which is a nearly identical copy of the parent process. What clicked for me was how the return values distinguish the two: the parent receives the child’s process ID, and the child receives zero. That simple distinction is what allows the same code to “split” into two executing entities. I also learned that every call to fork() doubles the number of running processes, which explains why two consecutive fork() calls result in four processes total. 2. The exec() System Call: while fork() creates a copy, exec() replaces the current process image with a new program. This was initially confusing - why would you create a process only to immediately overwrite it? For example, when a shell executes a command, it first uses fork() to create a child, then the child calls exec() to load the new program, leaving the shell intact in the parent process.  3. Parent vs...

CST 334: Week 1 Learning Journal

This week’s lessons covered several foundational topics that introduced key concepts in operating systems and computer organization. The modules included  Introduction to Operating Systems ,  Computer Architecture Review ,  Linux and the Shell ,  Programming in C ,  Command Line Introduction , and a  Math Addendum . Each topic helped me understand how different parts of a computer system work together and how software interacts with hardware through the operating system. I ntroduction to Operating Systems -   I learned about the purpose of an OS — to manage hardware, software, and resources so that users and programs can run efficiently. It was interesting to see how the OS acts like a bridge between user commands and the computer’s internal functions, handling things like memory management, process scheduling, and file access. This made me realize how much happens behind the scenes when we simply open an app or save a file. Computer Architecture Revie...