임계 영역 (Critical Section)

이호인·2022년 6월 1일
0

CS

목록 보기
2/2
post-custom-banner

📌 교착 상태 (Dead Lock)

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

예시

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

📌 공유 자원 (Shared Resource)

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

  • 이 공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태(race condition)라고 한다.
  • 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결과값에 영항을 줄 수 있는 상태.

📌 임계 영역 (Critical Section)

임계 영역이란 한 순간 반드시 프로세스 하나만 진입해야 하는데, 프로그램에서 임계 자원을 이용하는 부분으로 공유 자원의 독점을 보장하는 코드 영역을 의미한다. 임계 구역은 지정된 시간이 지난 후 종료된다.

  • 공유되는 자원, 즉 동시접근하려고 하는 그 자원 (ex. 연필, 노트) 에서 문제가 발생하지 않게 독점을 보장해줘야 하는 영역을 임계 영역이라고 한다.

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

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

3번에 대해서 다르게 표현한 곳이 있어서 가져왔다.
3. 융통성 : 한 프로세스가 다른 프로세스의 일을 방해해서는 안 됨.

📌 마치며

  • 임계 영역! 뭔가 단어가 생소하고 어려웠는데 뭔가 트랜잭션 공부했을 때가 생각나면서 ACID 부분 봤을 때랑 비슷한 점이 있다고 느껴졌다.
  • 은행 입출금 예시가 많았어서 그럴 수도 있을 듯.
  • 접근을 시도할 때 접근 타이밍, 순서에 따라 결과값이 달라질 수 있는 것을 경계하는 점이 비슷하다고 느껴졌다.
  • 뮤텍스, 세마포어, 모니터의 개념은 따로 포스팅해야겠다.

📌 reference!

운영체제 - 경쟁상태, 임계영역, 상호배제
크리티컬 섹션(Critical Section)
위키백과 - 임계 구역 문제
[10분 테코톡] 🎲 와일더의 Mutex vs Semaphore
주홍철 지음, 『면접을 위한 CS 전공지식 노트』,길벗(2022년), p172 - 178

profile
공부 기록
post-custom-banner

0개의 댓글