교착 상태 회피(Deadlock Avoidance) 교착 상태 예방의 단점 장치의 이용률이 저하됨 시스템 총 처리율(throughput)이 감소 교착 상태 회피 원리 자원이 어떻게 요청될지에 대한 추가 정보를 제공하도록 요구하는 것 각 스레드의 요청과 방출에 대한 완전한 순서를 미리 안다면, 각 요청에 대해 스레드가 대기해야 하는지의 여부를 결정할 수 있다. → 각 요청에서 발생할 수 있는 교착 상태를 피할 수 있다. 스레드 대기 여부를 결정하기 위해, 여러 가지 정보를 고려해야 한다. 현재 가용 자원 현재 각 스레드에 할당된 자원 각 스레드가 앞으로 요청하거나 방출할 자원 교착 상태 회피 알고리즘 각 스레드가 자신이 필요로 하는 각 유형의 자원마다 최대 수를 선언하도록 요구하는 것 → 가장 단순하고 제..
교착 상태(DeadLock) 교착 상태(Dead Lock) : 대기 중인 스레드들이 다시는 그 상태를 변경할 수 없는 경우 한 스레드 집합 내의 모든 스레드가 그 집합 내의 다른 스레드에 의해 발생될 수 있는 이벤트를 기다린다면, 이는 교착 상태임 요청한 자원들이 다른 스레드에 의해 점유되어 있고, 그들도 다 대기 상태에 있기 때문 한 스레드가 자원을 요청했을 때, 그 시각에 요청한 자원을 사용할 수 없는 상황 → 해당 스레드는 대기 상태로 들어간다. 교착 상태가 없는 프로그램을 설계하는 것은 전적으로 프로그래머의 책임 시스템 모델(System model) 시스템은 경쟁 스레드들 사이에 분배되어야 할 유한한 수의 자원들로 구성됨 시스템 자원은 다수의 유형 혹은 클래스로 분할된다. 자원 유형 예시 : CP..
라이브니스(Liveness) 임계구역 접근을 위해 동기화 도구를 사용할 때 문제 임계구역에 들어가려고 시도하는 프로세스가 무기한 대기할 가능성이 생김 무기한 대기는 진행 및 한정된 대기 2개의 기준을 위반한다. 라이브니스와 라이브니스 실패 프로세스가 실행 수명주기 동안 진행되는 것을 보장하기 위해 시스템이 충족해야 하는 일련의 속성 무기한 대기하는 프로세스는 라이브니스 실패의 한 예시 다양한 형태의 라이브니스 실패 → 결과적으로 성능과 응답성이 나쁜 것이 특징 예시 무한 루프 바쁜 대기 루프 → 라이브니스 실패의 가능성이 있음 특히 프로세스가 임의로 오래 시간 동안 루프 돌고 있는 경우 가능성 높아짐 도구를 통해 상호 배제를 제공하려는 노력이 병행 프로그래밍 환경에선 실패 가능성 존재 도구를 통한 상호 ..