스레드와 프로세스의 관계
주요 개념:
- 스레드: 경량화된 실행 단위로, 프로세스 내부에서 실행되는 가장 작은 단위.
- 프로세스: 독립된 실행 단위로, 각각의 상태, 메모리 공간, 자원을 가짐.
1: N + M: 1 = N: M 모델
- 1: N: 하나의 스레드가 여러 프로세스에서 사용되며, 이는 각각 다른 컴퓨터에서 실행될 수 있음.
- M: 1: 여러 스레드가 하나의 프로세스에서 관리됨.
Windows의 프로세스와 스레드 관리
일반 속성:
- 프로세스 생성: 새로운 프로세스로 생성되거나, 기존 프로세스의 복사본으로 생성될 수 있음. (Unix는 반드시 복사본으로만 생성 가능)
- 스레드 필수성: 모든 프로세스는 최소 하나 이상의 스레드를 반드시 가져야 함.
- 실행 단위: 스레드가 실행의 단위이며, 스레드 단위로 디스패치됨.
- 동기화 도구: 프로세스와 스레드 모두 동기화 도구를 가짐.
Windows 프로세스 객체 속성
- Execution Time: 실제로 CPU를 사용한 시간은 프로세스 내부의 스레드들이 기록.
- I/O 카운터: 프로세스 내부의 스레드들이 수행한 I/O 작업의 횟수를 기록.
- VM 작업 카운터: 프로세스 내부의 스레드들이 수행한 가상 메모리 작업의 횟수를 기록.
- Base Priority: 프로세스에 속한 스레드들의 최소 우선순위.
- Default Processor Affinity: 프로세스가 선호하는 CPU 설정. 여러 CPU가 있을 때 특정 CPU에서 실행되기를 선호함.
Windows 스레드 객체 속성
- 스레드 컨텍스트: 스레드의 실행 상태를 저장하는 가장 중요한 속성.
- Dynamic Priority: 스레드의 실제 우선순위.
- Base Priority: 프로세스로부터 상속받은 최소 우선순위.
Windows 스레드 상태
- Runnable 상태: 실행 준비가 된 상태 (Ready → Standby → Running).
- Not Runnable 상태: 실행 불가능한 상태 (Running → Terminated, Running → Waiting).
- Waiting 상태: 블록되거나 중단된 스레드의 상태.
- Transition 상태: 리소스가 사용 가능하지 않을 때의 상태 (Waiting → Transition).
Solaris의 프로세스와 스레드
혼합 접근 방식
- User-Level 스레드와 Kernel-Level 스레드를 모두 지원.
- Light Weight Process (LWP): 커널 수준의 스레드를 가리킴.
Solaris 스레드 상태
- RUN 상태: 준비 상태 (Ready 상태).
- ONPROC 상태: 실행 중 상태 (Running 상태).
- SLEEP 상태: 블록 상태 (Blocked 상태).
- STOP 상태: 중단 상태 (Suspended 상태).
- IDLE 상태: 매핑되지 않은 초기 상태.
Linux의 작업(Task)
프로세스와 스레드 모델
- Linux에서는 스레드와 프로세스를 구분하지 않음.
- Task 구조: 상태, 스케줄링 정보, 식별자, 프로세스 간 통신 등을 포함.
- Thread = Task = Process: 스레드와 프로세스를 동일시함.
- Fork()와 Clone(): fork()는 새로운 프로세스를 생성하고, clone()은 자원을 공유하는 새로운 작업을 생성함.
정리
각 운영체제는 스레드와 프로세스를 관리하는 방식이 다르며, Windows와 Solaris는 프로세스와 스레드의 상태를 구분하여 관리하지만, Linux는 스레드와 프로세스를 동일시합니다. 이로 인해 운영체제별로 스레드와 프로세스의 관계와 관리 방식에 차이가 있습니다.
'운영체제' 카테고리의 다른 글
운영체제 Chatper 4 4-2 Thread (1) | 2024.07.18 |
---|---|
운영체제 Chatper 4 4-1 Thread (0) | 2024.07.18 |
운영체제 Chatper 3 3-3 Process (0) | 2024.06.25 |
운영체제 Chapter 3-1 Process (0) | 2024.06.25 |
운영체제 Chapter3 3-2 Process (0) | 2024.06.25 |