Post

[Tech] 임계 영역 & 데드락

[Tech] 임계 영역 & 데드락

면접cs

공유 자원, Shared Resource

Image

  • 위 이미지의 빨간 영역에 있는 자원들을 공유 자원으로 설명할 수 있다.
  • 즉, 각 프로세스, 스레드가 함께 접근할 수 있는 자원이나 변수이다.
  • 보통, 파일이나 데이터, 코드 등이 이에 해당한다.
  • 공유 자원에, 두 개 이상 프로세스가 동시에 읽거나 쓰게 된다면?



임계 영역, Critical Section

  • 서로 다른 프로세스가 공유하는 변수, 코드 영역을 의미한다.
  • 공유 자원에 접근할 때의 나타나는 문제를 임계 영역 문제라고 하며 다음과 같은 해결책이 있다.
    • 뮤텍스, Mutex Locks: 공유 자원 lock()을 통해 잠금을 설정하고 해제하는 방식
    • 세마포어, Semaphore: 두 가지 연산 wait(P), signal(V)로 프로세스 가용을 제어하는 방식

임계 영역의 해결 조건

앞선 제시한 해결책은 다음과 같은 조건을 만족한다.

  1. 상호 배제, Mutual Exclusion: 한 프로세스가 임계 영역에 들어갔으면, 다른 프로세스는 들어갈 수 없음.
  2. 진행, Progress: 임계 영역에서 실행하는 프로세스가 없고, 들어가려는 프로세스가 존재하면,
    임계 영역으로 진입하는 프로세스 선택이 무한하게 연기되서는 안됨.
  3. 한정된 대기, Bounded Waiting: 허용될 때가지 진입을 요청하는 프로세스가 대기가 계속되서는 안됨.



데드락(교착 상태), Deadlock

  • 두 개 이상 프로세스가 서로 다른자원을 요구하면서, 모두 작업을 수행할 수 없는 상황을 의미한다.
  • 이는 시스템 자원을 낭비하고, 성능을 저하시킨다.

데드락 발생 필요조건

Image

  1. 상호 배제, Mutual Exclusion: 하나의 자원은 한 번에 하나의 프로세스만 사용할 수 있음.
  2. 점유 대기, Hold and Wait: 프로세스가 최소한 하나의 자원을 보유한 상태에세 다른 자원을 기다리고 있음.
  3. 비선점, No Preemption: 프로세스가 보유한 자원을 다른 프로세스에 의해 뱃길 수 없음.
  4. 순환 대기, Circular Wait: 두 개 이상의 프로세스 사이에 순환적인 자원 대기 발생함.



✨ 출처

prepare_frontend_interview
Abraham Silberschatz, 운영체제


This post is licensed under CC BY 4.0 by the author.