Background
- 因為有 share 的 data,會被多個 content 去用他,所以需要
- 就算只有一個 core,也會有 Concurrent 的問題(因為會有 content switch)
- 重點就是他們 execute 的 order
- Consumer & Producer Problem
Race Condition
<aside>
📖 多個 process 操作 shared data concurrently,結果會取決於最後完成的人。(這是描述一個問題點,所以是因為有 race condition,要用同步化解決)
</aside>
- Single processor 的可以用 disable interrupt 或 non-preemptive CPU 來解決。
Critical Section
-
一個 process 之間溝通的 protocol
-
Critical section: 會產生 race condition 的那段程式碼。
-
Mutually exclusive: 會有相同 critical section 的 process。他們要在那段 critical section 被迫去 serialize。
Remainder section: 剩下的
Critical Section Requirements
- Mutual Exclusion: if process P is executing in its CS, no other processes can be executing in their CS
- Progress: 有 process 想要進去空的 critical section,就應該要讓他馬上進去。(有效性)
- Bounded Waiting: 不能讓等的人一直等,要 bound 他的 waiting time。(公平性)
Review Slide