(운영체제 카테고리의 글은 Abraham Silberschatz의 'Operating System Concepts'를 기반으로 작성합니다.)
Thread는 프로세스의 작업 흐름을 말한다.
하나의 프로세스가 한 번에 하나의 작업만 수행하는 것은 'Single Thread' 이며, 하나의 프로세스가 동시에 여러 작업을 수행하는 것은 'Multi Thread' 이다.
1. Multi Threaded Server Architecture
서버와 클라이언트 사이에 Multi Thread 를 구현한다. 클라이언트가 서버에게 요청을 보내면 서버는 새로운 Thread 를 하나 생성해 요청을 수행한다. (프로세스를 생성하는 것보다 Thread를 생성하는 것이 빠르다)
2. Multicore Programming
여러개의 코어가 각 Thread를 동시에 수행하는 방식이다. = 병렬성(Parallelism)
3. User Threads & Kernel Threads
User Threads는 사용자 수준의 Thread 라이브러리가 관리하는 Thread이다.
Kernel Threads는 커널이 지원하는 Thread 이다.
Kernel Threads를 사용하면 안정적이지만 유저 모드에서 커널 모드로 계속 바꿔줘야하기 때문에 성능이 저하된다.
반대로 User Threads를 사용하면 안정성은 떨어지지만 성능이 저하되지는 않는다.
4. Multithreading Models
User Thread 와 Kernel Thread 의 관계를 설계하는 여러가지 방법이 있다.
- Many to One Model
하나의 kernel thread 에 여러 개의 user thread를 연결하는 모델이다.
한 번에 하나의 user thread 만 커널에 접근할 수 있기 때문에 멀티코어 시스템에서 병렬적인 수행을 할 수 없다. (잘 쓰이지 X)
- One to One Model
하나의 user thread 에 하나의 kernel thread 가 대응하는 모델이다. 동시성을 높여주고, 멀티 프로세서 시스템에서는 동시에 여러 threads 를 수행할 수 있도록 해준다.
kernel thread 를 생성하는 것은 오버헤드가 큰 작업이기 때문에 성능저하가 발생할 수 있다.
- Many to Many Model
여러 user threads 에 더 적거나 같은 수의 kernel threads 가 대응하는 모델이다.
- Two level Model
Many to Many Model 과 유사하며, 특정 user thread 를 위한 kernel thread 를 따로 제공하는 모델이다.
'Computer Science' 카테고리의 다른 글
/작성예정/ 6. Deadlock (교착상태) (0) | 2023.03.16 |
---|---|
OS - 5. 동기화 (Synchronization) (0) | 2023.03.16 |
OS - 4. 스케줄링 (Scheduling) (0) | 2023.03.16 |
OS - 2. Process (state, PCB, 스케줄링, context switching, IPC) (0) | 2023.03.16 |
OS - 1. 운영체제 Overview (0) | 2023.03.16 |