2024. 12. 13. 17:28ㆍSTUDY/운영체제
해당 글은 '쉽게 배우는 운영체제' 서적을 기반으로 작성되었습니다.
[멀티 스레드 모델]
프로세스가 커널 프로세스와 사용자 프로세스로 나뉘듯 스레드도 커널 스레드와 사용자 스레드가 있다.
- 커널 스레드 : 커널이 직접 생성하고 관리하는 스레드이다.
- 사용자 스레드 : 라이브러리에 의해 구현된 일반적인 스레드이다.
사용자 스레드가 커널 스레드를 사용하려면 시스템 호출로 커널 기능을 이용해야 한다. 이때 커널 스레드와 사용자 스레드의 대응 방식에 따라 다음과 같이 분류된다.
사용자 레벨 스레드
사용자 레벨 스레드는 운영체제가 멀티스레드를 지원하지 않을 때 사용하던 방법으로 초기의 스레드 시스템에서 이용되었다. 이스레드는 사용자 레벨에서 스레드를 구현하기 때문에 관련 라이브러리를 사용하여 구현하며, 라이브러리는 커널이 지원하는 스케줄링이나 동기화 같은 기능을 대신 구현한다. 그러므로 커널 입장에서 이 스레드는 하나의 프로세스처럼 보인다.
사용자 레벨 스레드는 라이브러리를 통해 여러 개의 스레드를 작동한다. 그래서 여러 개의 스레드가 존재하지만 커널의 스레드 하나와 연결되기 때문에 1 to N 모델 이라고 부른다.
사용자 레벨 스레드의 장점
사용자 레벨 스레드는 라이브러리가 직접 스케줄링을 하고 작업에 필요한 정보를 처리하기 때문에 문맥 교환이 필요없다. 커널에서 문맥 교환을 하는 이유는 시간을 나누어 서로 다른 프로세스를 처리하기 위해서다. 그러나 사용자 레벨 스레드는 '워드프로세스'로 예를 든다면 서로 다른 문서를 편집하는 수준이기 때문에 문맥 교환없이 문서에 따라 필요한 값만 저장했다가 복귀시키면 된다.
이처럼 사용자 레벨 스레드는 문맥 교환과 같은 부가적인 작업이 줄어들어 속도가 빠르다.
사용자 레벨 스레드의 단점
1 to N 모델 즉, 여러 개의 스레드가 하나의 커널 스레드와 연결되기 때문에 커널 스레드가 입출력 작업을 위해 대기 상태에 들어가면 모든 사용자 스레드가 같이 대기하게 된다. 앞서 설명했듯 커널 입장에서는 하나의 프로세스로 생각하기 때문이다.
또한 하나의 프로세스의 타임 슬라이스를 여러 스레드가 공유하기 때문에 여러 개의 CPU를 동시에 사용할 수 없다는 것이다. CPU를 여러개 갖추고 멀티 스레드를 지원하는 커널의 경우 스레드를 여러 CPU에 나누어 작업 시키는 것이 가능하다.
또한 사용자 레벨 스레드는 보안에 취약하다. 커널이 아닌 라이브러리에서 구현하기 때문이다.
커널 레벨 스레드
커널 레벨 스레드는 커널이 멀티스레드를 지원하는 방식으로, 하나의 사용자 스레드가 하나의 커널 스레드와 연결되기 때문에 1 to 1 모델이라고 부른다.
커널 레벨 스레드는 독립적으로 스케줄링이 되므로 특정 스레드가 대기 상태에 들어가도 다른 스레드는 작업을 계속할 수 있다. 또한 커널이 제공하는 보호 기능과 같은 모든 기능을 사용할 수 있다.
커널 레벨 스레드의 장단점은 사용자 레벨 스레드의 장단점을 반대로 생각하면 좋다. 커널 레벨에서 모든 작업을 지원하기 때문에 멀티 CPU를사용할 수 있는 대신 문맥 교환이 일어나 별도의 오버헤드가 발생한다.
멀티 레벨 스레드
멀티 레벨 스레드 또는 하이브리드 스레드는 사용자 레벨 스레드와 커널 레벨 스레드를 혼합한 방식이므로 M to N 모델이라고 부른다.
사용자 레벨 스레드와 커널 레벨 스레드의 방식을 혼용하기 때문에 둘의 장단점을 모두 섞어서 가지고 있다.
하나의 스레드가 대기상태에 들어가면 다른 커널 스레드가 대신 작업을 해주지만 어쨌든 여전히 문맥 교환시 오버헤드가 발생하여 사용자 레벨 스레드 만큼 빠르진 않다. 따라서 빠르게 움직여야 하는 스레드는 사용자 레벨 스레드로 작동하고, 안정적으로 움직여야 하는스레드는 커널 레벨 스레드로 작동한다.
현대의 운영체제에서는 멀티 레벨 스레드를 주로 사용한다.
'STUDY > 운영체제' 카테고리의 다른 글
[운영체제] fork() 시스템 호출, exec() 시스템 호출 (0) | 2024.12.12 |
---|---|
[운영체제] 프로세스와 쓰레드 (0) | 2024.12.12 |
[운영체제] CPU 스케줄링 (0) | 2024.12.11 |
[운영체제] OS, 운영체제란 무엇인가 (0) | 2024.12.11 |
[운영체제] 교착상태, deadlock (0) | 2022.07.04 |