[시스템 소프트웨어]02-3 User-level Threads

yesman·2021년 12월 15일
0

시스템 소프트웨어

목록 보기
4/23

User-level Threads

유저레벨 라이브러리로 쓰레드를 관리한다.
스레드 스위칭은 운영체제의 도움을 필요로 하지 않는다. kernel로의 interrupt가 발생하지 않는다는 뜻이다.

이는 운영체제가 쓰레드를 감지하지 못하고 있다는 것을 의미한다. O.S.에서는 프로세스 단위로 관리하기 때문이다. 그러므로 쓰레드간의 스위칭은 전적으로 user-level에서 책임지고 이루어져야 한다. 다라서 스위칭은 매우 빠르게 일어날 수 있다. 그러나 스케줄링이 불공평하게 일어날 수 있다.

만약 kernel이 하나의 쓰레드로 구성되어 있다면 system call을 수행하는 user-level thread는 현재 수행 중인 system call이 완료될 때까지 전체 태스크를 지연시키게 된다.

위의 사진에서 프로세스 A와 B중에 더 빠른 프로세스는 B이다. 왜냐하면 커널은 쓰레드를 인식하지 못해서 쓰레드가 100개든 1개든 1개로 본다. 그래서 1개의 timeslot이 두 프로세스에 할당되어서 프로세스 A에는 1/100개의 timeslot이 각 쓰레드에 할당되고 프로세스 B에는 1개의 timeslot이 하나의 쓰레드에 할당된다.

예를 들어 2개의 팀이 있는데 이 두 팀들은 교수님과 상담을 해야한다. 한팀은 3명으로 구성되어 있고 한팀은 1명으로 구성되어 있다. 한팀당 30분의 시간이 주어진다면 3명으로 구성된 팀은 한사람당 10분이 주어지고 1명으로 구성된 팀은 한사람에 30분이 주어져서 더 많은 상담을 할 수 있게 된다.

profile
유니티

0개의 댓글