아래 글은 CS(컴퓨터 과학) 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.
📃 참고자료
# 프로세스(Process)와 스레드(Thread)
- 프로세스는 자원을 할당하고 제어하는 일을 한다.
- 제어부분만 따로 보는걸 스레드(Thread)라고 한다.
- 프로세스는 하나인데 스레드는 여러개 일 수 있다.
- 스레드
- Light Weight Process (LWP)
- 프로세서 (e.g, CPU) 활용의 기본 단위
- 구성요소
- Thread ID
- Register set (PC, SP 등)
- Stack (i.e. local data) - 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드들과 공유
- 전통적 프로세스 = 단일 스레드 프로세스
- 지역 데이터 => 지역변수
- 지역 데이터는 스택(Stack)영역에 할당된다.
- 프로세스가 할당 받은 리소스는 공유한다.
- 힙(Heap), 데이터, 코드는 리소스(Resource) 영역에 해당된다.
- 각 스레드 마다 자기만의 작업영역(Stack 영역)을 가진다.
- 스레드의 장점
사용자 응답성 (Responsiveness)
- 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능
자원 공유 (Resource sharing)
- 자원을 공유해서 효율성 증가 (커널의 개입을 피할 수 있음)
예) 동일 address space 에서 스레드 여러 개
경제성 (Economy)
- 프로세스의 생성, context switch 에 비해 효율적
멀티 프로세서 (Multi-processor) 활용
- 병렬처리를 통해 성능 향상
- 스레드 사용의 예
- 스레드 3개를 만들어서 각각 사용자 입력, 화면 출력, 스피커/마이크를 처리하게 한다.
- 스레드는 서로 자원을 공유해서 사용 할 수 있기 때문에, 3가지 작업을 동시에 처리할 수 있음.
- 스레드의 구현
- 사용자 수준 스레드 (User thread)
- 커널 수준 스레드 (Kernel thread)
- 사용자 수준 스레드 (User Thread)
사용자 영역의 스레드 라이브러리로 구현 됨
- 스레드의 생성, 스케쥴링 등
- POSIX threads, Win32 threads, Java thread API 등
커널은 스레드의 존재를 모름
- 커널의 관리(개입)를 받지 않음
- 생성 및 관리의 부하가 적음, 유연한 관리 가능
- 이식성 (portabillity)이 높음 - 커널은 프로세스 단위로 자원 할당
- 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기
(single-threaded kernel의 경우)
- 커널 수준 스레드 (Kernel Threads)
- OS(Kernel)가 직접 관리
- 커널 영역에서 스레드의 생성, 관리 수행
- Context switching 등 부하(Overhead)가 큼 - 커널이 각 스레드를 개별적으로 관리
- 프로세스 내 스레드들이 병행 수행 가능
-> 하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능
# Multi-Threading Model
- 다대일(n:1) 모델
- 사용자 수준 스레드 - 일대일(1:1) 모델
- 커널 수준 스레드 - 다대다(n:m) 모델
- n > m
- 혼합형 스레드
- 혼합형 (n:m) 스레드
n개 사용자 수준 스레드 - m개의 커널 스레드 (n > m)
- 사용자는 원하는 수 만큼 스레드 사용
- 커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block 상태가 되어도, 다른 스레드 수행 가능
- 병행 처리 가능 - 효율적이면서도 유연함
반응형
'IT > CS(컴퓨터 과학)' 카테고리의 다른 글
프로세스 스케쥴링(Process Scheduling) - (2 / 4) (0) | 2021.09.07 |
---|---|
프로세스 스케쥴링(Process Scheduling) - (1 / 4) (0) | 2021.09.01 |
프로세스 관리(Process Management) - (2 / 2) (0) | 2021.08.30 |
프로세스 관리(Process Management) - (1 / 2) (0) | 2021.08.29 |
운영체제 개요(Operating System Overview) - (3 / 3) (0) | 2021.08.28 |