Posts

Showing posts from August, 2025

Operating Systems: Last Week

Throughout this course, I have learned several new concepts on how computers work ‘behind the scenes’. Every week, I was introduced to eye-opening and sometimes confusing material. Although when I kept reading and going over the videos provided to me, everything was making more sense. I spend several hours throughout the week viewing and reviewing the material to fully understand it. It was a necessary part of each week. One topic that I found interesting and useful was paging and threads. Both of these concepts have helped me understand how multitasking and memory are handled in operating systems. Paging is useful to help improve memory efficiency and also reduce fragmentation. Threads are also a better way to make a program more efficient and responsive. This made me understand how larger programs are able to function efficiently. On the other hand, I found process scheduling to be one of the more challenging topics. It took me a while to fully know each of the IO schedulers. The one...

Operating Systems: Week 7

 During this week, we have gone through the last chapters of this course. We went over IO devices, hard drives, files, and directories, as well as the file systems. When I learned about chapter 36 on IO devices, we went over how the OS actually talks to the devices. We reviews the computer architecture and looked at the PC architecture. There are two I/O devices, which are block devices and character devices, also known as stream devices. The block devices are hard drives, and the character devices are printers, keyboards, and mouses. There are three different ways that the CPU interacts with IO, and those are polling, interrupts, and direct memory access. Polling is better when we have a really low latency. Interrupt is better when there is a need for a little bit of data intermittently. Direct memory access is better when there is an abundance of data that we want to move. In chapter 37, when we went over hard drives, I learned more about them. I also learned how to calculate the...

Operating Systems: Week 6

During this week, we have learned about several objectives, including condition variables, semaphores, and common concurrency problems. A condition variable is an explicit queue where threads are able to wait for a condition and then signal other threads when the condition might be true. Condition variables work in company with mutex to help stay away from race conditions. I have learned through the readings as well as the many detailed examples given in the videos provided to us by the professor. Here are examples of condition variable usage: pthread_cond_wait(cond, lock), pthread_cond_signal(cond), and pthread_cond_broadcast(cond). An important part of condition variables is to use while loops and not an if statement. The reason for this is that if we use an if statement, we can cause the condition to change while the thread is asleep; while loops are a safer option. I also learned about semaphores and how a semaphore can be tricky to work with, but can also help coordinate access to...