process thread monitor livelock spinlock device paging device driver interrupt events TCB PCB context-switch registers MAR PC thread-safe strtok strtok_r Peterson's solution test and set swap open close dup dup2 fileno wait() await() acquire() release() notify() yield() notifyAll() signal() signalAll() hasWaiters() Tony Hoare monitor model conditional variable ready queue multiprogramming time slice quantum job scheduling process scheduling block queue I/O queue waiting signalers time sharing deadlock Banker's algorithm scheduling concurrency synchronization memory management virtual memory fork() UNIX C Java wait() exec() semaphore paging segmentation thrashing Dining Philosophers Readers/Writers Producer/Consumer (otherwise known as Bounded Buffer)