- Ensure that the system will never enter a deadlock state.
- Allow the system to enter a deadlock state and then recover.
- Ignore the problem and pretend that deadlocks never occur in the system; used by most operating systems, including UNIX.
Thursday, August 20, 2009
- deadlock requires the following conditions:
-mutual exclusion:
-resources not sharable
-hold and wait:
-process must be holding one resource while requesting another
-circular wait:
-at least 2 processes must be blocked on each other
- eliminate mutual exclusion:
-not possible in most cases
-spooling makes I/O devices sharable
- eliminate hold-and-wait
-request all resources at once
-release all resources before a new request
-release all resources if current request blocks
- eliminate circular wait
-order all resources: SEQ(Ri) ? SEQ(Rj)
-process must request in ascending order
- process termination
-kill all processes involved in deadlock
-kill one at a time; in what order:
-by priority: consistent with scheduling
-by cost of restart: length of recomputation
-by impact on other processes: CS, producer/cons.
- resource preemption
-direct: temporarily remove resource (e.g. memory)
-indirect: rollback to earlier checkpoint
Thursday, August 13, 2009
Correctness of the system may depend not only on the logical result of the computation but also
on the time when these results are produced.
Example:
- Tasks attempt to control events or to react to events
that take place in the outside world - These external events occur in real time and
processing must be able to keep up - Processing must happen in a timely fashion,
• neither too late, nor too early
Monday, August 10, 2009
WINDOWS XP THREAD
- A thread id
- Register set
- Separate user and kernel stacks
- Private data storage area
- ETHREAD (executive thread block)
- KTHREAD (kernel thread block)
- TEB (thread environment block)
Linux refers to them as tasks rather than threads
Thread creation is done through clone() system call
- Clone() allows a child task to share the address space of the parent task a9process)
- Clone() allow various levels of sharing between nothing.
Linux PCB contains pointers to other DS where the process data (open files, page tables…) is stored
- Fork – a new process is created along with a copy of all the associated data structure of the parent process
- Clone – a new process that points to the data structures of the parent process is created
Windows Server codename "Longhorn" operating systems.
Kernel improvements are significant because the kernel provides
- low-level operating system functions,
- including thread scheduling,
- interrupt and exception dispatching,
- multiprocessor synchronization, and
- a set of routines and basic objects that the rest of the operating system uses to implement higher-level constructs.
