Introduction
Last updated
Last updated
Generically, a resource is something a process needs in order to proceed with its execution.
physical components of the computational system (processor, memory, I/O devices, etc.).
common data structures defined at the operating system level (PCT, communication channels, etc,) or among processes of a given application.
Resources can be:
preemptable – if they can be withdraw from the processes that hold them.
ex: processor, memory regions used by a process address space.
non-preemptable – if they can only be released by the processes that hold them.
ex: a file, a shared memory region that requires exclusive access for its manipulation.
For this topic, only non-preemptable resources are relevant.
P needs S to proceed, which is on possession of Q.
Q needs R to proceed, which is on possession of P.
What are the conditions for the occurrence of deadlock?
It can be proved that when deadlock occurs 4 conditions are necessarily observed:
It can be proved that when deadlock occurs 4 conditions are necessarily observed:
mutual exclusion – only one process may use a resource at a time.
if another process requests it, it must wait until it is released.
hold and wait – A process waits for some resources while holding others at the same time.
no preemption – resources are non-preemptable.
only the process holding a resource can release it, after completing its task.
circular wait – a set of waiting processes must exist such that each one is waiting for resources held by other processes in the set.
there are loops in the graph.
5 philosophers are seated around a table, with food in from of them. To eat, every philosopher needs two forks, the ones at her/his left and right sides. Every philosopher alternates periods in which she/he medidates with periods in which she/he eats.
Modelling every philosopher as a different process or thread and the forks as resources, design a solution for the problem.