1. 스레드와 멀티스레딩
1) 스레드
스레드는 프로세스 내에서 실행되는 가장 작은 단위이자 CPU 스케줄링의 기본 단위이다. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다. 스레드는 스택과 레지스터만 독립적이고, 코드와 데이터, 힙을 공유한다.
2) 멀티스레딩
멀티스레딩은 하나의 프로세스 내에서 여러 개의 스레드를 동시에 생성하고 처리한다. 스레드끼리 서로 메모리 자원을 공유하기 때문에 자원 소모가 적고 통신 비용이 높아 효율성이 높다.
2. 공유 자원과 임계 영역
1) 공유 자원
공유 자원은 멀티 프로세싱 환경이나 멀티 스레딩 환경에서 동시에 접근하여 사용할 수 있는 데이터나 자원을 의미한다. 하지만, 여러 프로세스나 스레드가 동시에 공유 자원에 접근하여 값을 변경할 때, 실행 순서에 따라 결과가 달라지는 경쟁 상태가 발생할 수 있다.
2) 임계 영역
임계 영역은 공유 자원에 접근하는 코드의 일부를 말한다. 즉, 한 번에 하나의 프로세스/스레드만 실행할 수 있도록 보장해야 하는 코드 블록이다. 임계 영역에 진입하는 프로세스/스레드를 통제하는 동기화 메커니즘인 뮤텍스, 세마포어, 모니터가 필요하다. 세 메커니즘은 모두 상호 배제, 한정 대기, 융통성이라는 조건을 만족한다.
* 상호 배제 : 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없다
* 한정 대기 : 특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안 된다
* 융통성 : 만약 어떠한 프로세스도 임계 영역을 사용하지 않는다면, 어떤 프로세스도 들어갈 수 있으며 서로 방해하지 않는다.
2.1 뮤텍스
오직 하나의 프로세스/스레드만 임계 영역에 접근할 수 있도록 강제하는 가장 기본적인 동기화 도구이다. 락(Lock)을 걸고 푸는 단순한 메커니즘을 사용하며, 공유 자원에 대한 접근 권한을 관리한다.
2.2 세마포어
뮤텍스보다 더 일반적이며, 공유 자원의 개수를 관리하는 정수 변수를 가진 동기화 도구이다. 프로세스/스레드가 공유 자원에 접근하면 P(wait) 작업을 수행하고, 공유 자원을 해제하면 V(signal) 작업을 수행한다.
- 바이너리 세마포어 : 세마포어 값이 0 또는 1만 가질 수 있는 형태이다. 오직 하나의 스레드만 접근할 수 있도록 통제하므로 뮤텍스와 거의 동일한 역할을 수행한다.
- 카운팅 세마포어 : 세마포어 값이 0 이상의 정수를 가질 수 있는 형태이다. 여러 개의 동일한 공유 자원에 접근할 때 유용하다.
2.3 모니터
둘 이상의 스레드/프로세스가 공유 자원에 안전하게 접근할 수 있도록 공유 자원을 숨기고 해당 접근에 대해 인터페이스만 제공한다. 모니터 큐를 통해 공유 자원에 대한 작업들을 순차적으로 처리한다. 세마포어보다 구현하기 쉬우며, 자동 상호 배제를 보장한다.
3. 교착 상태
교착상태는 둘 이상의 프로세스/스레드가 서로 가진 자원을 요청하며 무한정 대기하고 있는 상태를 말한다. 교착상태에 빠진 프로세스들은 더 이상 작업을 진행할 수 없게 되어 시스템의 효율을 저하 시킨다.
1) 교착 상태의 원인
- 상호 배제 : 한 번에 하나의 프로세스만 자원을 사용할 수 있다. (자원 독점)
- 점유 대기 : 하나의 자원을 점유하고 있는 프로세스를 다른 프로세스가 요청한다.
- 비선점 : 프로세스가 점유하고 있는 자원을 강제로 빼앗을 수 없다.
- 환형 대기 : A 프로세스는 B 프로세스의 자원을 요구하고, B 프로세스는 A 프로세스의 자원을 요구하는 상태이다.
2) 교착 상태 해결 방법
- 자원을 할당할 때 조건이 성립되지 않도록 설계한다.
- 교착 상태 가능성이 없을 때만 자원을 할당한다. 할당 가능 여부는 은행원 알고리즘을 통해 파악한다.
- 교착 상태 발생 시 사이클과 관련된 프로세스를 하나씩 지운다,
- 사용자가 작업을 종료한다.
* 은행원 알고리즘 : 총 자원의 양과 현재 할당된 자원의 양을 기준으로 안정상태를 유지할 수 있도록 자원을 할당하는 알고리즘
'CS 스터디' 카테고리의 다른 글
| 4-1. 데이터베이스의 기본 - 엔터티, 릴레이션, 속성, 도메인, 필드와 레코드, 관계, 키 (0) | 2025.11.27 |
|---|---|
| 3-4. CPU 스케줄링 알고리즘 - 비선점형 방식, 선점형 방식 (2) | 2025.11.08 |
| 3-3. 프로세스와 스레드 [01] - 프로세스와 컴파일 과정, 상태, 메모리 구조, PCB, 멀티프로세싱 (0) | 2025.11.08 |
| 3-2 메모리 - 메모리 계층, 메모리 관리 (0) | 2025.11.01 |
| 3-1. 운영체제와 컴퓨터 - 운영체제의 역할과 구조, 컴퓨터의 요소 (0) | 2025.10.31 |