공부/CS

super(CS.교착상태);

오잎 클로버 2022. 5. 3. 16:10
728x90

교착 상태란?

상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상이다.

 

위 예시보다 더 알기 쉬운 예시로는 다음과 같은 예시가 있다.

(A)는 지붕에, (B)는 1층에 있다고 가정을 하자.

1층에서 지붕으로 가는 유일한 방법은 하나의 사다리 뿐이다.

이때, (A)가 지붕에서 1층으로 내려가려고 하고, (B) 역시 1층에서 지붕으로 올라가려고 한다면 서로 통과하지 못하고

상대방이 비켜주길 무한정 기다리게 될 것이다.


교착 상태를 발생하기 위해서는 다음 4가지가 모두 충족되어야 교착상태가 발생할 가능성이 생긴다.

어느 한 가지라도 충족하지 않는 다면 교착상태는 반드시 발생하지 않는다.

상호배제 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있다.
점유와 대기 어떤 프로세스가 하나 이상의 리소스를 점유하고 있으면서 다른 프로세스가 가지고 있는 리소스를 기다리고 있다.
비선점 프로세스가 태스크(task)를 마친 후, 리소스를 자발적으로 반환할 때까지 기다립니다. (강제로 빼앗지 않는다.)
환형 대기 점유와 대기 관계의 프로세스들이 서로를 기다림

사전에 교착상태가 발생하지 않도록 조치하거나, 발생한 뒤에 고치는 방법이 있다. 대표적으로 다음 3가지가 있다.

  1. 방지(Prevention)
    • 할당 구조 측면에서, 교착상태가 발생할 수 있는 요구조건을 만족시키지 않게 함으로써 교착상태를 방지한다.
  2. 회피(Avoidance)
    • 리소스 할당의 측면에서, 교착상태가 발생할 가능성이 있는 자원 할당(unsafe allocation)을 하지 않는다.
    • 대표적으로 은행원 알고리즘, 자원 할당 그래프가 있다.
  3. 탐지 및 회복(Detection and Recovery)
    • 교착상태가 발생 할 수 있도록 놔 두고 교착상태가 발생 할 경우 찾아내어 고친다.

CS를 공부하고자 카테고리를 하나 만들었습니다.

제목이 super();인 이유는 부모 클래스(옛날 개발자)로부터 가져온다는 의미로 사용하고 있습니다.

(정확히는 부모의 생성자를 호출한다는 의미지만..)

 

 

이상입니다.