728x90
반응형
스레드 개발 동기
DB 서버의 요구 처리
- 과거 서버는 클라이언트 요구가 도착할 때마다, 새로운 프로세스를 생성 - fork()
단점
- 프로세스 생성에 대한 오버헤드 (생성 비용 비쌈)
- 프로세스간 통신 비용 큼(메시지 패싱, 공유 메모리)
- 네트워크와 같은 자원 공유가 어려움
- 프로세스를 처리기에 전달하고, 결과를 다시 수집하는 오버헤드
전통적인 PCB(Process Control Block) 구성
스레드 (Threads)
CPU 이용의 기본단위
- 경량 프로세스 (LWP: Light Weight Process)
- 애플리케이션 내에서 실행
- 커널은 일반적으로 다중 스레드(Multi Thread)
- 프로세스 생성은 무겁고, 스레드 생성은 가벼움
구성
- 고유한 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택 등
- 같은 프로세스에 속한 다른 스레드와 코드, 데이터, 파일, 신호 와 같은 OS자원을 공유
장점
- 응답성 (Responsiveness): 응답성 증가
- 자원 공유 (Resource Sharing): 자원 소모가 감소
- 경제성 (Economy)
- 문맥교환의 내용은 PCB가 소유, 자원을 공유하기 때문에 문맥교환 속도 높음
- 규모 적응성 (Scalability): 병렬성 증가
종류
단일 스레드 프로세스
하나의 스레드만 가진 프로세스
다중 스레드 프로세스
여러 개의 스레드를 가진 프로세스 → 다중 스레드
프로세스(Process) vs 스레드(Thread)
멀티 프로세스(Multi Process) vs 멀티 스레드(Multi Thread)
단일 코어 시스템에서의 동시 실행 (4개 스레드)
여러개의 스레드로 동시 실행되지만 1개의 코어를 사용한다 → 유사 병렬성
다중 코어 시스템에서의 병렬 실행 (4개 스레드)
여러개의 스레드, 다중 코어를 통해 병렬실행을 할 수 있다.
728x90
반응형
'Computer Science > Operating System' 카테고리의 다른 글
[OS] 사용자 스레드(User Thread)와 커널 스레드(Kernel Thread) (0) | 2024.05.01 |
---|---|
[OS] 멀티코어 프로그래밍 (Multicore Programming), 병렬 실행(Parallelism) (0) | 2024.05.01 |
[OS] 클라이언트-서버 환경에서의 통신: 소켓(Sockets), 원격 프로시저 호출(RPC), 원격 메소드 호출(RMI) (0) | 2024.04.30 |
[OS] 파이프(Pipe)란? 일반 파이프(Ordinary Pipes), 지명 파이프(Named Pipes) (0) | 2024.04.29 |
[OS] 메세지 전달(Message Passing)이란? (0) | 2024.04.29 |