Posts

Showing posts from December, 2024

CST 334 Week 8

This week, as we wrapped up CST 334, I reflected on persistence and how it applies to both operating systems and this course. In operating systems, persistence ensures that data remains intact and accessible even when the system restarts or faces power failures. This concept ties closely to topics like file system abstraction, which simplifies the way storage is managed, and the use of disk drives to store data reliably. Understanding these topics made me appreciate the detailed mechanisms, such as DMA and polling, that make this reliability possible. As a student, persistence took on a different meaning—staying consistent and determined despite challenges. From navigating early weeks filled with shell scripting and C programming to mastering memory virtualization and concurrency, this course required patience and focus. Each week built on the last, culminating in a better understanding of how operating systems keep systems efficient, organized, and reliable. This journey showed me not...

CST 334 Week 7

This week in CST 334, I got to learn a lot about how operating systems handle persistence and manage storage devices. The Hardware Interface of a Canonical Device and the Simple Device Model helped me see how the OS talks to hardware using registers like status, command, and data. I also found the I/O Architecture really interesting, especially how buses connect the CPU, memory, and other devices to make everything work together. Understanding how the OS reads and writes to registers, whether through explicit I/O instructions or memory-mapped I/O, made it clear how these interactions are happening.  One thing that stood out was Direct Memory Access (DMA), which takes over data transfers from the CPU to speed things up. I also learned about polling, where the OS checks a device’s status repeatedly, and how that compares to interrupts. On the storage side, the concept of File System Abstraction was really helpful in showing how the OS organizes and accesses data on disk drives. Over...

CST 334 Week 6

This week I learned about semaphores and their role in synchronizing threads to prevent concurrency issues. The focus was on solving problems like the producer-consumer scenario, where shared resources must be accessed in a controlled manner to avoid conflicts or resource starvation. In the lab, I worked on implementing synchronization using semaphores, which helped me understand their practical application and importance in maintaining program stability. The readings and lectures covered the foundational concepts of semaphores and monitors, providing a clearer picture of how these tools are used to manage thread communication effectively. This week’s work deepened my understanding of concurrency challenges and how semaphores can ensure safe and predictable thread interactions.