DEADLOCK
-
Deadlock & StarvationCS 지식/운영체제 2020. 10. 21. 19:38
Deadlock과 Starvation 데드락(Deadlock, 교착상태) 둘 이상의 쓰레드가 lock 획득을 기다리는데, 이 lock을 잡고있는 쓰레드도 똑같이 다른 lock을 기다리며 서로 블록상태에 놓이는 것을 의미한다. 즉 무한 대기상태에 빠지는 것을 교착상태라고 한다. 교착 상태 발생의 필요 충분 조건 상호배제 - 한번에 한개의 프로세스만 공유자원 사용 점유와 대기 - 최소 하나 자원을 점유하고 다른 프로세스에 할당되어 사용되는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재 비선점 - 다른 프로세스에 할당된 자원은 사용이 끝나기 전까지 뺏을 수 없음 환형 대기 - 공유자원과 사용하기 위해 대기하는 프로세스가 원형으로 구성되어 대기해야함 예방 기법 위의 4가지 필요충분 조건을 부정하면 된다...
-
멀티 스레드의 임계 구역과 뮤텍스, 세마포어CS 지식/운영체제 2020. 8. 17. 11:37
임계 구역과 뮤텍스, 세마포어 임계 영역 한개의 연산을 둘 이상의 쓰레드가 동시에 실행할 경우 발생할 수 있는 코드 블록 쓰레드 안에 있는 코드 블록이 임계 영역이 된다. 따라서, 문제가 발생하지 않게 독점을 보장해줘야 함. (Lock, 동기화) 동기화 기법 뮤텍스(Mutex => Mutual Exclusion) 쓰레드의 동시 접근을 허용하지 않음 Mutex를 이용해서 특정 변수로 접근하는 쓰레드를 차단하면, 나머지 쓰레드는 대기줄에서 기다린다. 뮤텍스를 사용한 쓰레드가 뮤텍스를 반환하면, 대기줄에 있는 순서대로 쓰레드가 변수가 접근 뮤텍스 생성, 삭제, 잠금, 잠금해제 함수가 있음 단, 뮤텍스 잠금 후 해제를 하지 않으면, 잠금 함수는 블로킹 상태에 빠져 못나감 이 상태를 데드락 상태라고 부름 뮤텍스 ..