Posts

Showing posts from August, 2025

Journal Entry Week 8

 Throughout the course of this semester, I have learned many things about how an operating system works under the hood. In addition, I have gained a deeper understanding of memory management.  It is clear to me how powerful low-level operations and how dangerous it could be when in the wrong hands. Before this class, I felt that learning operations systems and low-level language was archaic. But as unforgiving C is… Its quite satisfying to have that much control when programming.     My favorite part of this class was the group project section. As we began to learn new concepts that felt very out of touch with modern technology (from my novice point of view), it was a impressive to see how other people are researching ways to utilize old technologies and improve on them. My group’s paper studied the effects of the IO scheduler and Ultra-low latency devices such as a Solid state NV Me. Their findings blew my initial understanding of hardware out of the water! For...

Journal Entry Week 7

One of the most interesting concepts I learned this week was Processed I/O versus Direct Memory Access. Both are different types of memory transfer, but they differ in the way it works under the hood. Processed I/O involves the CPU directly and its is responsible for moving data between I/0 Devices. Some of these items include disks, keyboards, mice, network cards , and memory. This is not too bad of a process for smaller pieces of data, but in the case a large transfer of data takes place, it can eat up a lot of the CPU's resources; Direct Memory Access on the other hand utilizes specialized hardware to help with data transfers. It takes away CPU overhead for bigger data transfers, so that it doesn't slow down for other tasks that required better responsive ness.  Newer devices now utilize DMA and the bus to allow the cpu to process more effienctly 

Journal week 6

 One of the most interesting sections from this week was the topic of semaphores as a synchronization primitive.  Semaphores serve as way to help manage concurrency and work very similarly to locks but rather than just letting one thread access critical sections. Semaphores can allow “n” number of threads through. But by setting s semaphore to a value of 1, it can act just like a binary lock. As threads pass through a semaphore, a counter goes ups and down depending on what integer was initialized. As threads use the semaphore, the value decrements and once it reaches 0, no more threads can make use of the critical section. Once a counter reaches zero, it does the “wait()” operation. As threads finish with the critical section, it lets go of the semaphore and increments the value, allowing another thread to make use of its resources. It can serve as great synchronization tool, when two semaphores are used in tandem.  Another synchronization primitive we learned about was ...