초코딩(chocoding)

교착 상태(Dead Lock) / 공유 자원(Shared Resource) / 임계 영역 (Critical Section) / 임계 영역을 해결하기 위한 방법 본문

[혼공컴운] 혼자 공부하는 컴퓨터 구조와 운영체제

교착 상태(Dead Lock) / 공유 자원(Shared Resource) / 임계 영역 (Critical Section) / 임계 영역을 해결하기 위한 방법

sweetychocoding 2024. 4. 4. 15:14
728x90
  • A와 B가 필기를 하려한다.
  • 필기를 하려면 연필과 노트가 필요하다.
  • A는 연필을 가지고 있고, B는 노트를 가지고 있다.
  • A는 B에게 노트를 요구하고, B는 A에게 연필을 요구한다.
  • 하지만 A와 B는 가지고 있는 것을 넘겨주면 필기를 할 수 없기 때문에 서로 넘겨줄 생각이 없다.
  • 무한정 대기하는 상황이 발생하는데 이것을 교착 상태라고 한다.
  • 여기서 연필과 노트는 공유 자원이라고 하고, 공유 자원이 속해 있어 교착 상태가 발생할 수 있는 영역을 임계 영역이라고 한다.

 

1. 교착 상태 (Dead Lock)

=> 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황

 

2. 공유 자원 (Shared Resource)

=> 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 자원이나 변수 등을 의미

 

3. 임계 영역 (Critical Section)

=> 한순간 반드시 프로세스 하나만 진입해야 하는데, 프로그램에서 임계 자원을 이용하는 부분으로 공유 자원의 독점을 보장하는 코드 영역을 의미

=> 지정된 시간이 지난 후 종료

 

 

* 임계 영역을 해결하기 위한 방법

  • 뮤텍스, 세마포어, 모니터 등이 있다.
  • 상호 배제, 한정 대기, 융통성이라는 조건을 만족한다.
  1. 상호 배제 : 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없음.
  2. 한정 대기 : 특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안 됨.
  3. 진행 : 임계 구역에 들어간 프로세스가 없는 상태에서, 들어가려고 하는 프로세스가 여러 개 있다면 어느 것이 들어갈지를 적절히 결정해주어야 한다.

 

 

.

.

.

 

참고

https://velog.io/@lovi0714/%EC%9E%84%EA%B3%84-%EC%98%81%EC%97%AD-Critical-Section

728x90