본문 바로가기

프로그래밍/C++

커널 영역과 유저 영역

커널 영역
: 운영체제를 실행시키기 위해서 필요한 메모리 공간

유저 영역
: 코드 영역, 데이터 영역, 스택 및 힙 영역

커널 레벨 (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