Operating Systems

- resources a processes needs, and a thread needs


  • have multiple threads
  • Threads actually only run one at a time
  • Threads in the same process have access to the same memory


  • https://stackoverflow.com/questions/7335950/semaphore-vs-monitors-whats-the-difference
  • is 0 or 1, 1 if the data is locked by another process
  • semaphore is similar but can be greater than 1
    • like only 5 threads can access this things, so if there are 5 accessing it then you have to wait for one to free up
  • monitor is a synchronization construct that allows threads to have both mutual exclusion and the ability to wait (block) for a certain condition to become true.
    • monitor consists of a mutex (lock) object and condition variables.
    • monitor is a binary semaphore


  • happens when two processes are waiting for a resource to become available but the resources are dependent on each other so nothing will happen.
  • random priority can help with livelock
    • livelock is when they are trying to fix it but that is causing problems

Context Switching

  • switching of the CPU from one process or thread to another.
  • needed for multitasking
  • no code is being executed so its overhead
  • switching threads is faster because you dont have to flush the virtual memory TBL


  • CPU scheduling is a process which allows one process to use the CPU while the execution of another process is on hold(in waiting state) due to unavailability of any resource like I/O etc, thereby making full use of CPU. The aim of CPU scheduling is to make the system efficient, fast and fair.
  • switches after a clock interrupt, an I/O interrupt, an operating system call or another form of signal