Posts

Showing posts from July, 2025

Operating Systems: Week 5

During this week, we have learned about concurrency, thread API, Mutexes, and lock-based data structures. Concurrency can be used to use multiple processes, and we can help processes interact by using threads. A thread is a unit of execution that is in a process, and each thread has its own stack and registers. Usually, a process has one thread to begin with, but creating a new thread in the process is faster than creating a new process. I was introduced to a multi-threaded program that has more than one thread in a process.  Concurrency’s benefits are the ability to run tasks “at the same time”, having a useful programming abstraction, and having leverage on multicore machines as well as GPUs. The concepts that are key in concurrency are critical sections, race conditions, and mutual exclusion. We use locks to help us in multi-thread programming. When implementing a lock, we evaluate the correctness, fairness, and performance, as these are important parts of implementing it. ...

Operating Systems: Week 4

 The paging part of this week was actually very enjoyable. I think this is because I was able to better understand the material by giving myself more time to go through it all. I enjoyed the practice problems given to us in the videos, book, and labs. During this week, we have gone through more information about what memory consists of. Throughout this week, we learned about paging, Translation Lookaside Buffers (TLB), multi-level paging, and swapping.  Paging breaks up space in virtual address into equal sections of size. This method avoids fragmentation and is flexible. Each process will have its own page table where virtual addresses translate into physical addresses. The virtual address has its virtual page number and offset. I learned about the address translation being mapped to a page frame number as I saw examples of it on the videos as well as in the book.  A bad part of paging is that address translations are slow, and the page tables are too big. This is where ...

Operating Systems: Week 3

 During this week, we have gone into depth about the memory of a program. I read chapters 13 - 17, which covered address spaces, C Memory API, Address Translation & Base-and bounds, Segmentation, and Free Space management. I learned that an address space refers to the range of memory addresses that a process can use. When a program is compiled into memory addresses and we have goals when dealing with memory. The goals are to have transparency, efficiency, and protection. With these goals, we have some challenges that can occur, which we can address with our solution of using virtual memory. This week, I have also learned how to use malloc() and free(), and the many mistakes that can be avoided.  Address translation uses the virtual addresses to determine if it's invalid (which will lead to a trap) or valid which will map it to physical memory. I also learned about base-and-bounds and how each process had these values. Additionally, I learned the importance of segmentation....

Operating Systems: Week 2

     During this past week in this class, I have learned about processes, limited data execution, CPU scheduling, and multi-level feedback queue (MLFQ). During chapter 4 of the book as well as the video provided to us, I have learned about processes, virtualization, context switches, process state, and scheduling policy. A process is a running program that has memory and a thread of execution. Multiple processes can run the same program at once. On the other hand, virtualization involves splitting system resources to support different environments or demands. I also learned that the OS needs to manage the state of a process. Processes are able to be ready to run or are running. During this, the I/O can request to block the process and then send it back to ready when it is ready.      Throughout this week, I also learned and engaged in the process scheduling and its metrics. There are two metrics that we practiced with and these are the Turn Around Time (TAT...

Operating Systems: Week 1

     We are starting Week 1 of Operating Systems this week. Through the provided videos and readings, I have learned several concepts. One key takeaway is that operating systems are designed to work and to be simple.  I have also gone in-depth into the computer architecture, Linux and the shell, programming in C, and the math related to this class. A computer consists of components like the processor, storage, and I/O devices. The processor performs computations and the storage that we are talking about here stores data. This data can be in the RAM or on a hard drive. The RAM is "volatile" storage, but the hard drive is "non-volatile". I also learned that the way the components of a computer talk to each other is by using buses. A bus takes information, carrying bytes, from memory and passes it into the CPU.       During this week, we also learned about the computer storage hierarchy, which includes registers, cache, main memory, magnetic disk, an...