-
[OS] 스레드 관리 (Thread Management)Computer Science/운영체제 2020. 10. 21. 14:32
프로세스(Process)와 스레드(Thread)
프로세스는 자원을 할당받고, 그 자원을 제어하여 원하는 작업을 수행합니다.
자원의 할당과 자원의 제어에서 후자 부분만을 떼어놓은 것을 스레드라고 합니다.
하나의 프로세스 안에는 여러 개의 스레드가 존재할 수 있습니다.
즉 제어는 여러개 존재할 수 있다는 것을 의미합니다.
프로세스가 할당받은 자원들은 공유하면서, 이에 대한 제어권(스레드)는 위와 같이 여러개가 존재할 수 있습니다
어떤 프로세스에게 할당된 메모리 공간이 있을 때, 위와 같이 같은 프로세스의 스레드들은 동일한 주소 공간을 공유합니다. (자원 영역인 코드, 전역 데이터, 힙 영역을 공유한다는 의미)
그리고 각 스레드마다 자신의 작업 영역을 할당받게 됩니다.
할당된 공간에서 지역 데이터를 만들고 작업을 하게 됩니다.
이때 스레드에서 작업하는 내용이 코드 영역의 PC를 통해 기록하여 관리하게 됩니다.
스레드(Thread)
Light Weight Prcoess(LWP)
프로세서 활용의 기본단위
구성요소 : Thread ID, Register set(PC, SP 등), Stack
제어 요소 외 코드, 데이 터, 및 자원들은 프로세스 내 다른 스레들과 공유
전통적 프로세스 = 단일 스레드 프로세스
스레드의 장점
- 사용자 응답성(Responsiveness) : 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능
- 자원 공유(Resource sharing) : 자원을 공유해서 효율성 증가 (커널의 개입을 피할 수 있음)
- 경제성(Economy) : 프로세스의 생성, 문맥 교환에 비해 효율적
- 멀티 프로세서(Multi-Processor) 활용 : 병렬 처리를 통해 성능 향상
스레드의 구현
사용자 수준 스레드(User Thread) (n:1)
- 사용자 영역의 스레드 라이브러리로 구현 됨
- 커널은 스레드의 존재를 모름
- 따라서 커널의 관리를 받지 않아 생성 및 관리의 부하가 적고, 유연한 관리가 가능하며, 이식성이 높음
- 그러나 커널은 프로세스 단위로 자원이 할당하므로, 커널쪽엔 단일 스레드가 생성되기 때문에 하나의 스레드가 block 상태가 되면 모른 스레드가 대기 상태가 된다.
커널 수준 스레드(Kernel Thread) (1:1)
- OS(Kernel)가 직접 관리
- 커널 영역에서 스레드의 생성, 관리 수행(Context Switching 등 오버헤드가 큼)
- 커널이 각 스레드를 개별적으로 관리(하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능)
혼합형 스레드
- n개의 사용자 수준 스레드 - m개의 커널 스레드 (n>m)
- 사용자는 원하는 수만큼 스레드를 사용
- 커널 스레드는 자신에게 할당된 하나의 사용자가 스레드가 block 상태가 되어도, 다른 스레드 수행 가능
- 효율적이면서 유연함
참고
[Course] Operating System (CPA310) - 운영체제 강의
'Computer Science > 운영체제' 카테고리의 다른 글
[OS] 프로세스 동기화와 상호배제 (Process Synchronization and Mutual Exclusion) - ① (0) 2020.12.19 [OS] 프로세스 스케줄링 (Process Scheduling) (0) 2020.11.06 [OS] 프로세스 관리 (Process Management) (2) 2020.01.09 [OS] 단일 커널 VS 마이크로 커널 (0) 2020.01.02 [OS] 운영체제의 구조 (0) 2020.01.02