SE350: Operating Systems

This is one of the most fundamental courses that teaches you the inner workings of your Operating System.

Link to course notes here.


The /proc directory shows you all the different processes.

Other useful things (Taken from the CS350 course website)


Chapter 1

Chapter 2

Chapter 3

Chapter 4: Threads

Chapter 5: Concurrency - Mutual Exclusion and Synchronization

Chapter 6: Concurrency - Deadlock and Starvation

Chapter 7: Memory Management

Chapter 8: Virtual Memory

Chapter 9: Uniprocessor Scheduling

Chapter 10: Multiprocessor, Multicore, and Real-Time Scheduling

Chapter 11: I/O and Files

Chapter 12: File Management


Fundamental question that will be answered today (2024-03-11): how does multicore scheduling work? Is a process assigned to a particular core, or can it be bounced around between multiple cores? Ahh, this is answered in Multiprocessor Scheduling

Things I need to understand by end of the term

  • How scheduling actually works? How do we prevent no more starvation? What are the different schemes? How are queues used
  • How is shared memory implemented? If it is read-only memory, then it’s simple and everyone can read from the memory with no problem. But what if one needs to write?
    • For managing concurrency, This is just a Reader-Writers Problem. OS can mark which part of the memory is owned by which process(e)s.
  • How are mutexes used in the OS
    • Everywhere for concurrency in multithreading. In terms of how a mutex is implemented, see Semaphore
  • The different memory schemes, you run into Fragmentation issues, how to solve?
  • OS vs. RTOS
    • Talked about in RTOS