[OS] Multi-Object Synch. and Deadlock (1)

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

// 요놈이 야무짐

// 코드 설명이 메인이라고 보면 될듯

Detect & Recover

댓글남기기