| 4.3 스레드 모델 |
| 4.3.1 스레드 모델 종류 |
| 4.3.2 멀티 스레딩 모델 |
4.3.1 스레드 모델 종류
스레드의 모델에는 두 종류가 있다.
- Kernel-level thread : 운영체제가 커널에서 관리하는 스레드
- User-level thread : User-space에서 관리하는 스레드
Kerner-level thread
커널 스레드, 즉 커널이 직접 생성하고 관리하는 스레드이다. 응용 프로그램이 시스템 호출을 통해 커널 레벨의 스레드를 생성한다. 따라서 커널이 스레드에 대한 정보, TCB를 커널 공간에 생성하고 소유하게 되며 커널에 의해 스케줄된다.
스레드 주소 공간 (스레드 코드와 데이터)는 사용자 공간에 존재하게된다.
메인 스레드는 커널 스레드이다. 응용프로그램이 적재되어 프로세스가 생성될 때 자동으로 커널은 메인 스레드를 생성한다.
순수 커널 레벨 스레드 또한 존재한다. 부팅 때부터 커널의 기능을 돕기 위해 만들어진 스레드로 커널 코드를 실행하는 커널 스레드이다. 순수 커널 레벨 스레드의 주소 공간은 모두 커널 공간에 형성된다. 커널 모드에서 작동되며, 사용자 모드에서 실행되는 일은 없다.
User-level thread
사용자 스레드, 라이브러리에 의해 구현된 일반적인 스레드이다. 응용프로그램이 라이브러리 함수를 호출하여 사용자 레벨 스레드를 생성한다. 스레드 라이브러리가 스레드 정보 (U-TCB)를 사용자 공간에 생성하고 소유한다. 따라서 스레드 라이브러리는 사용자 공간에 존재하며 스레드 라이브러리에 의해 스케쥴된다.
여기서 중요한 점은 커널은 사용자 레벨 스레드의 존재를 알지 못한다는 점이다. 따라서 하나의 프로세스로만 인식한다.
스레드 주소 공간은 사용자 공간에 존재하게된다.

4.3.2 멀티 스레딩 모델
하나의 프로세스에 스레드는 여러 개 존재할 수 있다. 따라서 멀티 스레드 작동의 구현이 필요하다. 이는 응용 프로그램에서 작성한 스레드가 시스템에서 실행되도록 구현하는 방법으로, 사용자가 만든 스레드가 시스템에서 스케줄되고 실행되도록 구현하는 방법이다. 스레드 라이브러리와 커널의 시스템 호출의 상호 협력이 필요하다.
멀티 스레딩 모델의 종류는 N:1, 1:1, N:M 모델이 있다.

'CS > 운영 체제' 카테고리의 다른 글
| 4.4 스레드의 추가적 이슈들 (3) | 2024.04.20 |
|---|---|
| 4.2 스레드 Deep dive (5) | 2024.04.20 |
| 4.1 스레드 개요 (1) | 2024.04.20 |
| 4.0 스레드 (1) | 2024.04.20 |
| 3.4 프로세스 계층 구조 (2) | 2024.04.20 |