아래 내용은 면접을 대비한, 간단하게 정리된 프로세스와 스레드, 교착 상태에 대한 내용이다.
프로세스와 스레드
프로세스
- 정의: 실행 중인 프로그램의 독립된 인스턴스이다.
- 특징:
- 각 프로세스는 별도의 메모리 공간과 시스템 자원을 보유한다.
- 다른 프로세스와의 통신은 주로 IPC(Inter-Process Communication)를 통해 이루어진다.
- 의의: 시스템 안정성과 보안을 위해 프로세스 간의 강한 격리를 제공한다.
스레드
- 정의: 하나의 프로세스 내에서 실행되는 경량 작업 단위이다.
- 특징:
- 동일 프로세스 내의 스레드들은 메모리 공간과 자원을 공유한다.
- 스레드 간 전환 비용이 낮아 효율적으로 작업을 수행할 수 있다.
- 한 프로세스 내에서 여러 스레드를 사용하여 병렬 처리가 가능하다.
- 의의: 자원 공유와 빠른 전환을 통해 응용 프로그램의 효율성을 높인다.
데드락(교착 상태)
개념 및 발생 조건
데드락은 여러 프로세스나 스레드가 다음 네 가지 조건이 모두 충족될 때 발생할 수 있다.
- 상호 배제(Mutual Exclusion): 자원을 동시에 공유할 수 없으며, 한 번에 한 프로세스만 사용할 수 있다.
- 점유 및 대기(Hold and Wait): 최소 하나의 자원을 점유한 상태에서 추가 자원을 요청하며 대기한다.
- 비선점(Non-Preemption): 할당된 자원을 강제로 빼앗을 수 없다.
- 순환 대기(Circular Wait): 프로세스들이 서로 자원을 기다리는 순환적인 관계가 형성된다.
데드락 방지 및 해결 방법
- 자원 할당 순서 결정: 자원을 요청하는 순서를 미리 정해, 순환 대기를 방지한다.
- 타임아웃 설정: 일정 시간 이상 자원 할당이 이루어지지 않을 경우, 요청을 취소하거나 재시도하도록 한다.
- 교착 상태 발생 조건 제거: 위 네 가지 조건 중 하나를 제거하여 데드락 상황이 발생하지 않도록 한다.
- 예를 들어, 비선점 조건을 완화하거나, 점유 및 대기 상태를 관리하는 방식이 있다.
'CS > 운영체제 - Dinosaur Book + @' 카테고리의 다른 글
[OS] Thread의 정의와 Thread Pool, 그리고 적절한 Thread의 갯수 (0) | 2024.09.29 |
---|