June 6, 2002. Serguei A. Mokhov,
. 1. Salsa Theory
Debrief 2. COMP346 - Operating Systems. Tutorial 6. Edition 1.1, June 19, 2002 ...
Salsa Theory Debrief 2 COMP346 - Operating Systems Tutorial 6 Edition 1.1, June 19, 2002 June 6, 2002
Serguei A. Mokhov,
[email protected]
1
Topics • • • • •
Device Drivers Mutual Exclusion Some Deadlock Processes fork() and exec() System Calls
• Processes vs. Threads, Take II • Message Passing vs. System Calls
June 6, 2002
Serguei A. Mokhov,
[email protected]
2
Device Drivers 1. Provide Common Interface (a layer of abstraction) 2. Execute privileged instructions 3. Part of the OS (Why? :-)) 4. Have two halves: • •
Upper Half – Exposes 1. to the rest of OS Lower Half • •
June 6, 2002
Provides Device-Specific implementation of 1 Interrupt handling Serguei A. Mokhov,
[email protected]
3
Device Drivers (2) • Mapping independent I/O functions to device-dependent Upper half. Works at CPU’s speed
open() close() read() write() … Buffers to sync data between the halves
Int handling, dev_open(), dev_close()… June 6, 2002
Serguei A. Mokhov,
[email protected]
Lower Half. Operates at device’s speed 4
Mutual Exclusion • Possible Implementations: – General semaphores on top of counting ones – Using interrupts
• Drawbacks – ME violation – Starvation
June 6, 2002
Serguei A. Mokhov,
[email protected]
5
Drivers • Example: – LP driver
June 6, 2002
Serguei A. Mokhov,
[email protected]
6
Mutual Exclusion • Binary semaphores were implemented as separate entities for efficiency reasons [1]. • General semaphores were using binary ones.
June 6, 2002
Serguei A. Mokhov,
[email protected]
7
Mutual Exclusion P() { wait(mutex); count – 1; if (count < 0) { signal(mutex); wait(delay); } else { signal(mutex); } }
V() { wait(mutex); count + 1; if (count