티스토리 뷰

반응형

교착상태란 무엇일까?

 교착상태(Deadlock)란 자원이 한정적인 상황에서 두 개 이상의 프로세스가 각자의 자원을 가진 채 상대방의 자원을 필요로 하는 경우, 아무 일도 못하고 기다리는 상태를 의미한다. 외부의 조치가 없는 한 프로세스들은 영원히 그 상태를 유지하며 서로의 자원을 사용할 수 있을 때까지 기다리게 된다. OS? Oh Yes(김주균 지음) 교재에서는 강아지의 집을 만들기 위해 형은 톱을 갖고 있고, 동생은 망치를 들고 있는 채로 서로의 도구를 필요로 할 때를 가정하고 있다.

 

교착상태의 원인

 

시스템의 한정적인 자원 < 프로세스들의 요청

 

 위에서 교착상태의 예시로 든 형과 동생의 상황을 가장 쉽게 해결하고 싶다면 톱과 망치를 두 개씩 준비해놓으면 된다. 하지만 과연 이 방법이 최선일까? 경제적인 관점에서 효과적인가?

 

교착상태의 문제점

1. 해당 프로세스들이 더 이상 실행되지 않고 사용자에게 응답을 주지 못한다.

2. 프로세스들이 갖고 있는 자원들은 교착 상태를 빠져나가기 전까지 전혀 활용되지 못한다.

 

 


 

 

프로세스가 가질 수 있는 자원은 무엇이 있을까?

 자원은 다음의 기준으로 분류할 수 있다.

 

1. 하드웨어 / 소프트웨어의 관점

1) 하드웨어 자원

- 눈으로 보고 만질 수 있는 모든 자원들이 속한다.

 ex) 하드디스크, 테이프 드라이브, 메모리 등

 

2) 소프트웨어 자원

 ex) 데이터, 메시지 등

 

 

2. 선점 가능성의 관점

1) 선점 가능(Preemptible) 자원

 - 프로세스가 사용하는 도중에 선점되어 다른 프로세스에게 할당했다가, 이후에 다시 원래 프로세스에게 돌려주는 자원

 ex) CPU, 메모리 등

 

2) 선점 불가능(Nonpreemtible) 자원

- 프로세스가 사용하는 중간에 선점되면 기존에 사용하던 프로세스는 정상적인 진행을 포기해야하는 경우의 자원

ex) 프린터, 테이프 드라이브 등

 

 

3. 자원 사용 방식의 관점

1) 공유 가능(Sharable) 자원

- 동시에 여러 프로세스에게 할당해 같이 사용할 수 있는 자원

ex) 공유 가능한 프로그램, 공유 데이터 등

 

2) 배타적 사용(Exclusive Use) 자원
- 한 프로세스에게만 할당해 독점적으로 사용해야 하는 자원

ex) CPU, 메모리, 버퍼, 키보드와 모니터 등

 

 

4. 자원 속성에 따른 관점

1) 순차적 재사용 가능 (Serially Reusable) 자원

- 아무리 사용해도 없어지지 않고 영구히 존재하는 자원

- 한 프로세스가 사용하고 반납한 자원을 또 다른 프로세스에게 할당할 수 있는 경우

ex) CPU, 메모리, 테이프, 하드디스크, 버퍼, 프로그램 등

 

2) 소모성(Consumable) 자원

- 일시적으로 생성되었다가 사용된 후 없어지는 자원

ex) 시그널(Signal), 메시지 등

 

 

여기서 우리가 교착 상태로 다룰 수 있는 자원의 종류는 1. 배타적 사용, 2. 순차적 재사용 가능한 자원이다.

 

 


 

프로세스가 할 수 있는 행동들은 . . .

 실행 중인 프로세스가 자원을 위해 취할 수 있는 행동은 두 가지가 있다.

 

1. 필요한 자원을 요청(Request)한다.

- 요청된 자원이 사용 가능하다면 -> 자원을 할당받아 사용한다.

- 자원이 이미 사용 중이라면 -> 반납될 때까지 대기 상태로 기다린다.

 

2. 사용이 끝난 자원을 반납한다.

 

 자원의 요청과 반납은 프로세스가 서비스를 호출하면, 운영체제에 의해 이루어진다.

반응형