[OS] Lecture 6. Process Synchronization and Mutual Exclusion 4_7 - kibitzing/EnGrow GitHub Wiki
유튜브 링크
진구
OS가 도와주는 기법 소개, 스핀락
비지웨이팅은 아직 해결 안됨
소프트웨어로 하다 자주 일어나고 os가 비교적 쉽게 풀어줄 수 있는 문제는 os단으로 넣어 버리는 듯..?ㅎㅎ
세영
Spinlock
- 정수 변수 S
- 초기화,
P(),V()연산으로만 접근 가능- 이 연산들은 원자성이 OS의 지원으로 보장됨
- 전체 과정이 하나의 명령어 사이클로 수행됨
- P: 대기 및 획득 (
S = S - 1), V: 반환 (S = S + 1)
// P
void P(S) {
while (S >= 0);
S = S - 1;
}
// V
void V(S) {
S = S + 1;
}
- 단점:
- Busy waiting
- 멀티프로세서 시스템에서만 사용 가능 (선점형이기 때문에 OS가
while을 돌고 있는 프로세스를 쫓아내지 못해서 무한 루프가 발생할 가능성이 존재)
Semaphore
- 드디어 Busy waiting을 해결
- 다음 영상..