Renormalize files
This commit is contained in:
@@ -1,37 +1,37 @@
|
||||
Lecture Topic: Critical Section
|
||||
|
||||
A solution to the critical section problem has to
|
||||
- Ensure mutual exclusion
|
||||
- Progress: If 2 resources are needed to progress, the program needs to properly assign resources, and not perform no progress work, such as assigning threads only 1 resource to each thread? Pen and form problem from notes
|
||||
- Bounded waiting
|
||||
|
||||
|
||||
Discusses this algorithm
|
||||
https://en.wikipedia.org/wiki/Peterson%27s_algorithm
|
||||
|
||||
It is mentioned that the problem with this algorithm is that the initial implementation is only applicable to 2 threads
|
||||
|
||||
It also has problems with modern implementations that implement instruction or memory access reordering
|
||||
|
||||
Memory models
|
||||
- Strongly ordered: Changes are immediately visible to all other processors
|
||||
- Weakly ordered: Changes in memory are not immediately visible to all other processors
|
||||
|
||||
A memory barrier is a way to force a propagation of changes values in memory to all other processors
|
||||
|
||||
# Mutex Locks:
|
||||
Before a critical section, acquire a mutex lock, and then release it after
|
||||
|
||||
For this to be functional you need atomic operations on acquire and release
|
||||
|
||||
This also requires busy waiting, because it needs to poll for the lock. Thus it is called a spinlock
|
||||
|
||||
# Semaphore
|
||||
|
||||
It is accesses with the wait and signal functions, these atomic functions perform these things
|
||||
|
||||
- wait: It waits while the semaphore is less than or equal to 0, and after it decrements the semaphore.
|
||||
- signal: Simply increases the semaphore by 1
|
||||
A semaphore can be thought of as a mutex lock that allows execution to more than one thread at once. The initial semaphore value is the number of threads that are allowed concurrent execution.
|
||||
|
||||
Lecture Topic: Critical Section
|
||||
|
||||
A solution to the critical section problem has to
|
||||
- Ensure mutual exclusion
|
||||
- Progress: If 2 resources are needed to progress, the program needs to properly assign resources, and not perform no progress work, such as assigning threads only 1 resource to each thread? Pen and form problem from notes
|
||||
- Bounded waiting
|
||||
|
||||
|
||||
Discusses this algorithm
|
||||
https://en.wikipedia.org/wiki/Peterson%27s_algorithm
|
||||
|
||||
It is mentioned that the problem with this algorithm is that the initial implementation is only applicable to 2 threads
|
||||
|
||||
It also has problems with modern implementations that implement instruction or memory access reordering
|
||||
|
||||
Memory models
|
||||
- Strongly ordered: Changes are immediately visible to all other processors
|
||||
- Weakly ordered: Changes in memory are not immediately visible to all other processors
|
||||
|
||||
A memory barrier is a way to force a propagation of changes values in memory to all other processors
|
||||
|
||||
# Mutex Locks:
|
||||
Before a critical section, acquire a mutex lock, and then release it after
|
||||
|
||||
For this to be functional you need atomic operations on acquire and release
|
||||
|
||||
This also requires busy waiting, because it needs to poll for the lock. Thus it is called a spinlock
|
||||
|
||||
# Semaphore
|
||||
|
||||
It is accesses with the wait and signal functions, these atomic functions perform these things
|
||||
|
||||
- wait: It waits while the semaphore is less than or equal to 0, and after it decrements the semaphore.
|
||||
- signal: Simply increases the semaphore by 1
|
||||
A semaphore can be thought of as a mutex lock that allows execution to more than one thread at once. The initial semaphore value is the number of threads that are allowed concurrent execution.
|
||||
|
||||
Semaphores can be also used to solve synchronization problems, not just the critical section problem
|
Reference in New Issue
Block a user