커널 영역
: 운영체제를 실행시키기 위해서 필요한 메모리 공간
유저 영역
: 코드 영역, 데이터 영역, 스택 및 힙 영역
커널 레벨 (Kernel Level) 스레드
: 스레드를 생성 및 스케줄링하는 주체가 커널일 경우
유저 레벨 (User Level) 스레드
: 커널에 의존적이지 않은 형태로 스레드의 기능을 제공하는 라이브러리를 활용할 수 있다
여러 개의 프로세스들이 실행 중일 때, 정해진 타임 슬라이스가 지나서 스케줄러가 동작하려 하면 커널 모드로의 전환이 일어난다. 스케줄러는 커널의 일부이기 때문이다.
커널 모드와 유저 모드의 차이점
: 프로세스가 유저 모드에서 동작할 때는 커널 영역으로의 접근이 금지된다. 반면, 커널 모드에서 동작할 때는 모든 영역의 접근이 허용된다
커널 레벨 스레드의 장점, 단점
장점 : 커널에서 직접 제공해주기 때문에 안전성과 다양한 기능성이 제공된다
단점 : 커널에서 제공해주는 기능이기 때문에 유저 모드에서 커널 모드로의 전환이 빈번하게 일어난다
-> 성능의 저하로 이어지게 된다
유저 레벨 스레드의 장점, 단점
장점 : 유저 모드로 동작하기 때문에 유저 모드에서 커널 모드로의 전환이 필요없다.
-> 성능이 좋다
단점 : 커널 레벨 스레드에 비해서 결과 예측이 어렵다.
'프로그래밍 > C++' 카테고리의 다른 글
가상 메모리 (Virtual Memory) (0) | 2019.02.23 |
---|---|
동기화 (Synchronization) (0) | 2019.02.21 |
스레드 (Thread) (0) | 2019.02.19 |
커널 (Kernel) (0) | 2019.02.13 |
문자열 (0) | 2019.02.12 |