Lecture 16: Concurrency(wip22)

 0    31 schede    up804653
Scarica mp3 Stampa Gioca Testa il tuo livello
 
Domanda English Risposta English
what is Concurrency
inizia ad imparare
Concurrency: the existence of multiple simultaneously active execution contexts.
what levels can Concurrency
inizia ad imparare
Machine instruction level, Statement level, Subprogram level, Program level
what is multitasking, in relation to concurrency
inizia ad imparare
When concurrency exists between multiple programs on a single computer, we call it multitasking. e.g., the way of most OSs controls multiple tasks.
what is multi threading, in relation to concurrency
inizia ad imparare
When a program implements concurrency on a single computer, we called the program concurrent/parallel program. Such a program is said to be multithreaded
what is distributed program, in relation to concurrency
inizia ad imparare
When a program implements concurrency on multiple computers, we called it a distributed program – a program of which different pieces are on computers connected by a network.
describe task, process or thread
inizia ad imparare
A task, process or thread of a program is a program unit that can be in concurrent execution with other program units.
how does A task/processes/thread differs from ordinary subprograms
inizia ad imparare
[1] A process/task may be implicitly started. [2] When a multithreaded program starts the execution of a thread, the rest of the program is not necessarily suspended. [3] When a thread’s execution is completed, control may not return to the caller.
When is a task considers disjoint
inizia ad imparare
A task/thread is disjoint if it does not communicate with (or affect the execution of) any other tasks in the program in any way, otherwise it is a joint task and needs to be synchronised.
what must be done with joint tasks?
inizia ad imparare
they must be synchronised
why is Inter-thread communication necessary for joint tasks
inizia ad imparare
[1] exclusive access to some resource, [2] to exchange data with another thread.
what are the problems with synchronised joint tasks?
inizia ad imparare
If not synchronised, joint tasks can lead to race conditions and deadlocks.
what are Race Condition
inizia ad imparare
A race condition occurs when the resulting value of a variable depends on the execution order of two or more threads.
What is a deadlock?
inizia ad imparare
A deadlock is a situation in which two or more competing threads are each waiting for the other to finish while holding resources that the other needs, and thus neither ever does.
what 4 conditions must ALL be true for a deadlock
inizia ad imparare
Mutual exclusion, Hold and wait, No preemptionl, Circular wait
Describe Mutual exclusion
inizia ad imparare
Mutual exclusion: Resources may be used only under mutual exclusion – only one process can use the resource at any time.
describe Hold and wait
inizia ad imparare
Hold and wait: A process is allowed to hold resources while waiting for others which are being held by other processes.
Describe No preemption
inizia ad imparare
No preemption: Resources cannot be forcibly removed once it is granted to a process.
Describe Circular wait
inizia ad imparare
Circular wait: A circular chain of threads exists in which each thread holds a resource needed by the next thread in the chain.
Synchronisation requires communication among the tasks, which can be provided by?
inizia ad imparare
[1] shared nonlocal variables, [2] message passing, or [3] special data types – semaphores & monitors
what is the producer-consumer problem
inizia ad imparare
one task produces something that the other task has to consume.
describe Cooperation Synchronization
inizia ad imparare
Two (or more) tasks have to work in a cooperative way: [1] the second task must wait for the first task to finish execution before it may proceed. [2] Usually, there are more than one unit of resources to be shared.
explain how a shared buffer contributes to Cooperation Synchronization
inizia ad imparare
[1] Both must use buffer exciv'ly at any 1 time but in a cop'ative way[2] the read thread A needs the buffer to be "not empty" state before it can read. If buffer empty must wait. [3] the write thread B writes the buffer if it is not full. else must wait
describe Competition Synchronization
inizia ad imparare
Competition synchronisation between tasks is required when both tasks require the use of the same, single unit, resource that must not be simultaneously used
give an example of a Competition Synchronization
inizia ad imparare
E.g., a shared counter, a bank account, etc., where simultaneously access to the same resources, e.g., amount of credit, should never happen.
what is a semeohore used for
inizia ad imparare
Semaphores can be used to implement both cooperation and competition synchronizations
what is are monitors
inizia ad imparare
Monitors wrap the resources with the mechanism for exclusive access control and implement competition synchronization.
what are the components of a Semaphore
inizia ad imparare
[1] a counter to track units of avai'le res's [2] a queue for storing the processes that req't access to the res's [3]2 operations, wait (or P) and signal (or release, or V).
what is the purpose of the operations of a semapore
inizia ad imparare
two operations, wait (or P) and signal (or release, or V). The processes have to access the shared resources through these two operation – calling wait to request access and calling signal to release.
What happens when a process needs access to the resources guarded with a semaphore when it calls the wait() method.
inizia ad imparare
[1] the method decrements the value of counter 1 [2] if count val >=0, access to the res granted to the calling process & it on the ready list [3] if coun val<0 the calling process/thread is added to the semaphore's waiting queue the thread is blocked
when is the signal() method called
inizia ad imparare
When a process finishes the use of the resources, it must relinquish the resources by calling the signal() method.
What does the signal() method do
inizia ad imparare
[1] increments the value of semaphore counter by 1. [2] if the counter value equals or less than zero (meaning there are threads on waiting queue), transfers a blocked thread from the semaphore's waiting queue to the ready list.

Devi essere accedere per pubblicare un commento.