토요일에 정보처리기사 필기 시험이 있다. 정처기 공부는 따로 하지않았지만 이제까지 공부해왔던 CS 지식 덕에 기출 문제를 몇 회 풀었을때 다 합격 컷을 넘긴 했다. 하지만 3,4,5과목은 아직 모르는 내용이 많아서 이번주 부터 벼락치기 공부를 시작했다. 이번 주 남은 기간동안은 정처기 공부 중 헷갈리던 내용을 정리해보려 한다.
이미지 출처 : naljin
다중 프로세싱 환경에서 두 개이상의 프로세스가 특정 자원 할당을 무한정 대기하는 상태
쉽게말해 두개 이상의 프로세스 or 쓰레드가 서로 자원을 얻지 못해 다음 처리를 수행하지 못하고 계속 기다리게 되는 경우다.
한정된 자원을 여러곳에서 사용하려고 할 때 발생한다.
교착상태에 빠진 프로세스 뿐만 아니라 관련된 모든 프로세스가 영향을 받아 멈추게 된다.
아래의 4가지가 모두 성립해야 발생한다.
상호배제 Mutual Exclusive
프로세스가 자원을 배타적으로 점유해 다른 프로세스가 그 자원을 사용할 수 없는 상태
점유와 대기 Hold & Wait
한 프로세스가 자원을 점유하면서 동시에 또 다른 자원을 요청해 대기하는 상태. 즉, 자원을 기다리는 동안 다른 자원을 계속 점유하고 있어야 한다.
비선점 Non Preemption
다른 프로세스가 점유한 자원을 강제로 빼앗을 수 없어야 한다. 해당 프로세스가 명시적을 자원을 반납하기 전 까지 다른 프로세스가 점유하지 못한다.
순환대기 Circular Wailt
두 개 이상의 프로세사 간 자원의 점유와 대기가 하나의 원형을 구성한 상태.
예방 Prevention
교착상태의 발생 조건 중 하나 이상을 제거해 교착 상태를 예방하는 방법. 예를 들어 자원 요청에 대한 우선순위를 정하거나, 점유 자원 해제 후에 새 자원을 요청하는 방법으로 예방이 가능하다.
회피 Avoidance
시스템의 상태를 주기적으로 검사해 교착 상태가 발생할 가능성이 있으면 자원 할당을 보류하는 방법. 은행원 알고리즘(자원 요청에 대한 안정성을 평가하는 알고리즘)이 여기에 속한다.
검출 Detection
시스템의 상태를 주기적으로 모니터링해 교착 상태가 발생하는 지 검사한다. 자원할당 그래프가 여기에 속한다.
복구 Recovery
교착상태가 없어질 때까지 프로세스를 순차적으로 kill한다.