티스토리 뷰

책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍

 

커널 레벨(Kernel Level) 쓰레드 : 프로그래머 요청에 따라 쓰레드를 생성 및 스케줄링하는 주체가 커널 인 경우, 이럴 경우에는 쓰레드를 생성해주고, 스케줄링하는 대상이 커널이 된다. 

커널 영역 : 유저 영역을 제외한 나머지 영역

유저 영역 : 프로세스의 산하 쓰레드들이 가지고 있는 코드 영역, 데이터 영역, 스택 및 힙 영역을 가리킴.

 

장점 : 커널에서 직접 제공하기 때문에 안전성과 다양한 기능성이 제공된다.

단점 : 커널에서 제공해 주는 기능이기 때문에 유저 모드에서 커널 모드로의 전환이 빈번하게 일어난다. 따라서 이는 성능의 저하로 이어지게 된다.

 

유저 레벨(User Level) 쓰레드 : 커널이 쓰레드 모델을 지원하지 않을 경우(혹은 커널이 제공하는 쓰레드 모델이 마음에 드지 않을 경우에도), 커널에 의존적이지 않은 형태로 쓰레드의 기능을 제공하는 라이브러리를 활용하는 경우.

 

장점 : 커널은 쓰레드의 존재조차 모른다. 오로지 유저 모드로 동작하기 때문에 유저 모드에서 커널 모드로의 전환이 필요없다. 때문에 성능이 좋다.

단점 : 하나의 프로세스 내에서 총 3개의 쓰레드 A,B,C가 있다고 가정해보자. 이 중에서 A 쓰레드가 시스템 함수를 호출했는데 커널에 의해서 블로킹 되었다. 이럴 경우 B, C도 실행되지 않는다. 운영체제는 프로세스의 존재만 알지 쓰레드의 존재를 모른다. 때문에 A 쓰레드가 속해있는 프로세스 전부가 블로킹되는 문제를 안고 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함