CS/운영체제 - Dinosaur Book + @

프로세스와 스레드, 교착 상태

조금씩 차근차근 2025. 3. 9. 19:36

아래 내용은 면접을 대비한, 간단하게 정리된 프로세스와 스레드, 교착 상태에 대한 내용이다.

프로세스와 스레드

프로세스

  • 정의: 실행 중인 프로그램의 독립된 인스턴스이다.
  • 특징:
    • 각 프로세스는 별도의 메모리 공간과 시스템 자원을 보유한다.
    • 다른 프로세스와의 통신은 주로 IPC(Inter-Process Communication)를 통해 이루어진다.
  • 의의: 시스템 안정성과 보안을 위해 프로세스 간의 강한 격리를 제공한다.

스레드

  • 정의: 하나의 프로세스 내에서 실행되는 경량 작업 단위이다.
  • 특징:
    • 동일 프로세스 내의 스레드들은 메모리 공간과 자원을 공유한다.
    • 스레드 간 전환 비용이 낮아 효율적으로 작업을 수행할 수 있다.
    • 한 프로세스 내에서 여러 스레드를 사용하여 병렬 처리가 가능하다.
  • 의의: 자원 공유와 빠른 전환을 통해 응용 프로그램의 효율성을 높인다.

데드락(교착 상태)

개념 및 발생 조건

데드락은 여러 프로세스나 스레드가 다음 네 가지 조건이 모두 충족될 때 발생할 수 있다.

  • 상호 배제(Mutual Exclusion): 자원을 동시에 공유할 수 없으며, 한 번에 한 프로세스만 사용할 수 있다.
  • 점유 및 대기(Hold and Wait): 최소 하나의 자원을 점유한 상태에서 추가 자원을 요청하며 대기한다.
  • 비선점(Non-Preemption): 할당된 자원을 강제로 빼앗을 수 없다.
  • 순환 대기(Circular Wait): 프로세스들이 서로 자원을 기다리는 순환적인 관계가 형성된다.

데드락 방지 및 해결 방법

  • 자원 할당 순서 결정: 자원을 요청하는 순서를 미리 정해, 순환 대기를 방지한다.
  • 타임아웃 설정: 일정 시간 이상 자원 할당이 이루어지지 않을 경우, 요청을 취소하거나 재시도하도록 한다.
  • 교착 상태 발생 조건 제거: 위 네 가지 조건 중 하나를 제거하여 데드락 상황이 발생하지 않도록 한다.
    • 예를 들어, 비선점 조건을 완화하거나, 점유 및 대기 상태를 관리하는 방식이 있다.