- 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
- 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
- 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