Journal Entry Week 8- CST334
CST334 sharpened how I think about systems by forcing me to ground every idea in code and measurement. Processes became tangible once I wrote small C programs that used fork, exec, and wait, then traced their behavior with ps and strace. Scheduling turned into a study of measurable tradeoffs rather than a list of names. I compared turnaround and response time, saw how a time slice changes interactivity in Round Robin, and learned that SJF or STCF only help when service times are predictable. Concurrency was the section that demanded the most discipline. I practiced stating invariants, identifying the true critical section, and then using mutexes, condition variables, and semaphores to preserve safety and progress. Drawing simple timelines exposed data races and order bugs that were easy to miss when reading code top to bottom. The storage and I O unit added concrete cost models. I separated seek, rotation, and transfer time, and understood why algorithms like SSTF or SCAN can help one workload while harming another.
Memory management and file systems required precision, which I found both challenging and rewarding. Manual address translation drills trained me to split a virtual address using the specified VPN and offset bits, consult the page table, check the valid bit, handle a fault if required, and form the physical address from the PFN with correct zero padding. That process made TLB behavior and replacement policies like FIFO, Clock, and LRU easier to reason about, since locality turned into something I could test. File system topics tied correctness to concrete structures. Superblocks, inodes, directory entries, and free space bitmaps showed how the operating system keeps authoritative metadata on disk and recovers after failures. My biggest challenges were proving the absence of deadlock in nontrivial code and avoiding off by one mistakes in paging arithmetic. The most valuable habits I am taking forward are to write small tests, measure before assuming, and always explain each step in terms of what the kernel must do.
Comments
Post a Comment