프로세스와 스레드
프로세스
- 스케줄링 및 실행 단위: 프로세스
- 자원 소유 단위: 프로세스
- 예제 시스템:
- MS-DOS: 1 프로세스, 1 스레드
- UNIX: 여러 프로세스, 각 프로세스당 1 스레드
- Windows, Solaris, 현대 UNIX: 여러 프로세스, 각 프로세스당 여러 스레드
멀티스레딩
멀티스레딩 시스템은 하나의 프로세스 내에서 여러 스레드를 지원하여 프로그램의 효율성과 성능을 향상시킵니다. 이는 동시에 여러 작업을 수행할 수 있게 합니다.
프로세스 vs. 스레드
- 프로세스: 자원 소유 단위로, 프로세스 이미지(메모리 공간)를 포함하며 CPU, 파일, I/O 자원을 보호합니다.
- 스레드: 실행 단위로, 개별 스레드는 각각의 컨텍스트와 스택을 가지지만 프로세스의 자원을 공유합니다.
단일 스레드 vs. 멀티스레드 프로세스 모델
단일 스레드 프로세스 모델
- 사용자 주소 공간에는 프로그램 데이터와 코드가 포함됩니다.
- 커널 코드가 사용자 프로세스 내에서 실행됩니다.
멀티스레드 프로세스 모델
- 프로세스 내 스레드는 프로그램 코드와 데이터를 공유하지만 개별 스택을 가집니다.
- 멀티스레드 시스템의 PCB(프로세스 제어 블록)는 여러 TCB(스레드 제어 블록)를 포함합니다.
스레드 제어 블록 (TCB)
- 스레드 상태, 실행 스택, 컨텍스트 등의 스레드별 정보를 포함합니다.
프로세스와 스레드의 주요 차이점
- 생성 시간: 프로세스 생성 시간이 스레드 생성 시간보다 더 오래 걸립니다.
- 전환 시간: 프로세스 전환 시간이 스레드 전환 시간보다 더 오래 걸립니다.
- 커널 개입: 프로세스 관리는 커널 개입이 필요하지만 스레드 관리는 사용자 수준 스레딩에서 최소화할 수 있습니다.
사용자 수준 스레드 vs. 커널 수준 스레드
사용자 수준 스레드 (ULT)
- 관리: 사용자 공간의 스레드 라이브러리에 의해 관리됩니다.
- 장점:
- 커널 모드 권한 없이 빠른 스위칭.
- 애플리케이션에 맞춘 커스텀 스케줄링 가능.
- 멀티스레딩 지원 여부와 관계없이 모든 OS에서 실행 가능.
- 단점:
- 커널이 스레드를 인식하지 못해 블로킹 작업에서 최적의 성능을 발휘하지 못할 수 있음.
커널 수준 스레드 (KLT)
- 관리: 운영 체제에 의해 직접 관리됩니다.
- 장점:
- 멀티코어 시스템에서 진정한 동시 실행 가능.
- 하나의 스레드가 블록되더라도 다른 스레드는 계속 실행 가능.
- 단점:
- 커널 모드 전환으로 인한 오버헤드가 큼.
결합 접근법
- 혼합형: 사용자 수준 스레드와 커널 수준 멀티스레딩을 함께 사용하여 두 가지의 장점을 모두 활용합니다.
- 예제: 사용자 수준 스레드 관리와 커널 수준 멀티스레딩을 결합하여 더 나은 제어와 성능을 제공합니다.
스레드 상태
- 생성(Spawn): 새로운 스레드 생성.
- 준비(Ready): 실행 준비 완료.
- 실행(Running): 현재 실행 중.
- 블로킹(Blocked): 자원 대기 중.
- 종료(Finish): 종료되고 자원 해제 중.
스레드와 스와핑
- 스레드 중지: 스레드는 프로세스를 스와핑하지 않고도 중지될 수 있습니다.
- 프로세스 중지: 프로세스가 중지되면 모든 스레드도 중지되고 스와핑됩니다.
동기화와 통신
- 프로세스 내 스레드는 자원을 공유하고 효율적으로 통신합니다.
- 사용자 수준 라이브러리는 스레드 동기화와 메시지 전송을 지원합니다.
멀티스레딩의 주요 장점
- 향상된 성능: 프로세스보다 빠른 생성 및 전환 시간.
- 자원 공유: 스레드는 프로세스 자원을 효율적으로 공유.
- 동시성: 프로세스 내 병렬 실행으로 응답성 향상.
멀티스레딩 시스템의 진화
- 초기 시스템인 MS-DOS는 단일 스레드 프로세스를 지원했습니다.
- 현대 시스템인 Windows, Solaris, UNIX는 멀티스레딩을 지원하여 멀티코어 프로세서의 이점을 활용합니다.
요약
프로세스와 스레드의 차이를 이해하고 멀티스레딩의 장점을 활용하면 시스템 성능과 자원 활용을 최적화할 수 있습니다. 멀티스레딩은 효율적인 실행과 자원 관리를 가능하게 하여 현대 운영 체제와 소프트웨어 설계의 중요한 요소가 됩니다.
'운영체제' 카테고리의 다른 글
운영체제 Chatper 4 4-3 Thread (0) | 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 |