[OS] Multi-Object Synch. and Deadlock (1)
이 글은 포스텍 박찬익 교수님의 CSED312 운영체제 수업의 강의 내용과 자료를 기반으로 하고 있습니다.
좀 귀찮은 파트이다. 방대할 뿐만 아니라 좀 어렵기도 하다;
1. Multi-Object Synchronization
// 무슨 문제들이 생길까?
// 퍼포먼스, correctness, 데드락
// 퍼포먼스에 대해서 살펴보고, 데드락을 살펴보겠음
2. Synchronization Performance
// 퍼포먼스에 영향을 미치는 요소들을 설명
// 중요한 것은 lock contention
// 이걸 해결하기 위한 새로운 lock design pattern을 소개
// re-structure을 해도 안되면, 새로운 락을 써보자
3. Reducing Lock Contention
// lock contention을 줄이려면 어떻게 해야할까..
// 우선 디자인 패턴을 수정할 수 있겠지
1. Lock Design Patterns
// seperate lock..
// per processor lock..
// staged/ownership..
//근데 이걸로도 부족하면?
2. New Lock Implementation
// 새로운 구조를 아예 만들어야 하낟.
// 아래는 여러가지 구현 방법들
1. test-&-test-and-set
2. Ticket Lock
3. MCS Lock
// 그림 하나 첨부
// tail 이 있고.. compare and swap을 해가면서 만드는 방식
// local variable에서 대기 (cache 문제 해결)
4. RCU Lock
// 요놈은 reader를 우선시 하는 놈
// writer가 copy에다가 쓴다
// grace period
// acquire, publish, release, synch
// 어느 시점에 읽을 수 있는가??
// pubish 이후에는 이미 덮어씌워짐
// 전공 책 그림 첨부할 것.
// sych 쪽 구현법이 재미짐 이거 집중 설명
3. Deadlock
// 정의
// starvation이랑 차이
1. Necessary Conditions for Deadlock
// wait while holding (기다리는 동안 리소스 들고 있음)
The Dining Philosophers Problem
// 예시
// 4가지 컨디션 찾기
2. Handling Deadlocks
// 3가지 메소드가 존재한다고 설명
// methods for handling deadlock 페이지 갖고 오기
// 리눅스는 아예 무시 ㅋ
Prevent
// 4가지 컨디션 중 하나만 깨도 됨
Avoid
// 요놈이 분량 먹는 주범
// 미래를 예측하고, 이를 막는 것이 핵심
System Model & RAG
// 이게 뭔가 설명
Cycles in RAG vs Deadlick
// 데드락이 있으면 사이클이 있으나
// 사이클이 있다고 데드락이 있는 건 아님
Deadlock Dynamics
// 이건 굳이 왜 필요하나 싶긴 한데 설명하자
// 이걸로부터 avoidance 설명할 각을 잡는 것 같은데.. 굳이 없어도 될 것 같다는 생각이 든다.
Avoid in single instance
// 할당하는거 방향 뒤집어보고 사이클 있으면 데드락
// 판단 알고리즘 n^2
// 다른 전공서적 그림 첨부
Avoid in multiple instances - Banker’s Algorithm
// 요놈이 야무짐
// 코드 설명이 메인이라고 보면 될듯
댓글남기기