Lock의 정의
http://en.wikipedia.org/wiki/Lock_(computer_science)

----------------------------

Operating SystemsChapter 3: I/O
http://isel.cs.pusan.ac.kr/~lik/OS2002SpringChapter3.ppt

데드락 발생조건 네가지
Deadlock 은 다음의 모든 조건이 만족되어야 일어난다.
Mutual Exclusion : 하나의 Process 에만 Resource가 할당
Hold and Wait Condition :
프로세스는 하나 이상의 Resource를 가지고 있으며
다른 Resource의 할당을 기다리고 있음
No Preemption Condition
Circular Wait:Wait For Graph에 Cyclye이 존재

해결방법
1. Optimistic Approach (Ostrich Algorithm)
Deadlock 무시 :
Deadlock이 발생하는 가능성이 상당히 작으면
Deadlock이 발생하는 경우를 무시
Deadlock을 처리하기 위한 부하를 최소화
일정한 Process가 특정 Timeout 동안에 처리되지 않으면
Ctrl-Alt-Del !!

2. Deadlock Detection and Recovery
Deadlock이 발생하는지를 검사
Wait-For-Graph를 검사하여 Cycle이 존재여부 검사
발생하면, 하나의 Process를 Kill
Wait-For-Graph의 Cycle이 존재하는지를 조사
Resource가 Allocate될 때 마다 Wait-For-Graph를 Update
Process가 Resource를 요청할 때 Wait-For-Graph를 조사
Overhead가 발생 : 주기적으로 조사


3. Deadlock Prevention
Deadlock 조건 중 하나를 공략

Deadlock의 조건 중 하나를 파괴

3.1 Mutual Exclusion
Queuing (Spooling) : Spooling Daemon
Spooling이 곤란한 경우 존재
Spooling 자체가 Deadlock 을 유발
바람직한 방법이 아님
3.2 Hold and Wait
필요한 Resource를 한꺼번에 요청
만일 한가지라도 사용 불가능하면 Wait
두 가지 문제
사용할 Resource를 미리 아는 것은 어려움
성능의 심각한 저하

3.3 Preemption Condition
실행 중에 사용중인 Resource를 회수
Non-Preemptive Resource의 경우 적용 불가능

3.4 WFG의 Cycle 모든 Resource를 Ordering
현재 M 번째 Resource 를 사용 중이면, N>M인 Resource 만 사용하도록 허락
N<M인 Resource는 사용 불가
Resource를 Ordering하는 것이 매우 어려움


4. Deadlock Avoidance
Banker’s Algorithm

----------------------------------
CS 140: OS hacking Lecture 5 : Deadlocks
http://www.stanford.edu/class/cs140/lectures/fall0506/07lec5notes.pdf#search=%22fine%20grain%20lock%20rule%22


----------------------------------

Automatic Detection of Potential Deadlock
http://www.ddj.com/184404351

데드락 탐지(deadlock detection) c++ 코드 제공
-----------------------------------

Advanced Synchronization in Java Threads, Part 2
http://www.onjava.com/pub/a/onjava/2004/10/20/threads2.html?page=1

락 금지의 가장 쉬운 방법인 lock을 same order로 하는 것 알려줌
Deadlock detection 자바 코드 제공


Avoid synchronization deadlocks
http://www.javaworld.com/javaworld/jw-10-2001/jw-1012-deadlock.html

역시 Lock order얘기임.

-----------------------------------

Locks, Blocks, and Deadlocks
Chapter 4. Concurrency
http://www.sleepycat.com/docs/gsg_txn/JAVA/blocking_deadlocks.html


FreeBSD: Lock Order Reversal Documentation
Witness 프로그램을 이용하여 Lock 순서 역전(Lock order reversal)으로
deadlock 발생 가능한 부분을 static lock order 분석과 runtmie lock order
분석으로 찾아내는 이야기.
http://kerneltrap.org/node/3620
http://sources.zabbadoz.net/freebsd/lor.html

------------------------------------------------
C340 Concurrency: Databases Concurrency Control
2 Phase Locking, Hierarchical Locknig 소개
http://www.cs.ucl.ac.uk/staff/W.Emmerich/lectures/C340-99-00/conc24.pdf


A Deadlock-Free Multi-Granular, Hierarchical Locking Scheme for Real-time Collaborative Editing
http://www.ntu.edu.sg/home/ashfshen/iwce07/papers/iwces2005_hierarchical_locking.pdf

--------------------------------------------

Hardware/Software Deadlock Avoidance for
Multiprocessor Multiresource System-on-a-Chip
Deadlock Avoidance(회피)알고리즘 Banker 알고리즘을 하드웨어로 구현
http://www.ece.iupui.edu/~johnlee/paper/JLeeThesis0525DoubleSided.pdf#search=%22deadlock%20avoidance%22

'KB > 기타' 카테고리의 다른 글

OS 수업 스케줄표  (0) 2006.10.18
Thread Shifting on SMT  (0) 2006.08.28
Embedded Visual C++  (0) 2006.08.27
Verilog Simulator  (0) 2006.08.27
MobilePro780 Mips CE2.11 개발툴  (0) 2006.08.27

+ Recent posts