Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

승쨩개발공부

[OS] 쓰레드, 커널 본문

OS

[OS] 쓰레드, 커널

Unknowns 2022. 5. 16. 18:53

커널

커널은 컴퓨터 시스템을 제어하는 일을 한다. 여기에는 메모리, 사운드카드, 키보드, 모니터와 같은

시스템자원을 포함한다. 이러한 시스템자원을 사용하는 것은 보통 응용 프로그램의 요청을 통해서 

이루어지게 되므로 커널은 응용 프로그램을 관리하는 일도 한다. 

응용 프로그램의 실행되는 순서라든지 응용 프로그램이 요구하는 시스템자원에 대한 관리가

그것이다.

 

커널 (Kernel, 핵심)

- 소프트웨어적인 관점에서 프로그램의 뇌

- 시스템 데이터나 하드웨어를 직접 액세스 및 제어

 

 

 

프로세스와 쓰레드의 차이점

프로그램의 실행 관점에서 이해하는 것도 중요하지만,

메모리 관점에서 이 둘의 차이점을 이해하는 것 도 중요하다.

프로세스는 메모리를 공유하지 않지만, 프로세스 내에 존재하는 둘 이상의 쓰레드들은 스텍을 제외한

나머지 메모리 공간을 공유한다.

 

 

커널 영역 vs 유저 영역

메모리 공간은 커널 영역과 유저 영역으로 나뉜다. 

커널 영역은 커널이 올라가 있으며, 커널의 실행을 위한 메모리 영역이고,

유저 영역은 운영체제 이외의 프로그램이 올라가 있으며, 이 프로그램들을 실행시키기 위한 메모리 영역.

 

 

 

커널 모드 vs 유저 모드

커널 영역의 보호를 위해서 커널모드와 유저모드라는 것을 정의하고 있다.

일반적인 응용 프로그램이 실행될 떄 시스템은 유저 모드 상태에 있다.

이 경우 제한된 영역의 메모리 접근만 허용한다. 커널 영역을 보호하기 위해서다.

그러나 커널 모드에서는 메모리 전 영역의 접근을 허용한다. 따라서 커널은 커널 모드에서 동작한다.

 

 

커널 레벨 쓰레드 vs 유저 레벨 쓰레드

쓰레드를 지원하는 운영체제의 기능을 통해서 생성된 쓰레드를 가리켜 커널 레벨 쓰레드라 하고,

라이브러리 형태로 제공되는 기능을 통해서 생성된 쓰레드를 가리켜 유저 레벨 쓰레드라 한다.

 

 

커널 레벨 쓰레드 의 장점 및 단점

장점 : 커널에서 직접 제공해 주기 떄문에 안정성과 다양한 기능성이 제공된다.

 

단점 : 커널에서 제공해주는 기능이기 떄문에 유저 모드에서 커널 모드로의 전환이 빈번하게

        일어난다. 따라서 이는 성능의 저하로 이어지게 된다.

 

 

유저 레벨 쓰레드 의 장점 및 단점

장점 : 커널은 쓰레드의 존재조차 모른다. 오로지 유저 모드로 동작하기 떄문에 유저 모드에서

        커널 모드로의 전환이 필요 없다. 떄문에 성능이 좋다.

 

단점 : 하나의 프로세스 내에 총 3개의 쓰레드 A,B,C가 있다고 가정해보자. 이 중에서 A쓰레드가

         시스템 함수를 호출했는데 커널의 의해서 블로킹되었다. 이럴 경우 B,C도 실행되지 않는다.

         운영체제는 프로세스의 존재만 알지 쓰레드의 존재를 모른다. 떄문에 A 쓰레드가 속해 있는

         프로세스 전부가 블로킹되는 문제를 안고 있다. 이 문제를 해결하기 위한 방법들이 있지만.

         결국은 프로그래밍하기 어려워지고 커널 레벨 쓰레드에 비해서 결과 예측이 어렵게 된다.

 

 

'OS' 카테고리의 다른 글

[OS] 프로그램 실행과정 및 하드웨어 구성  (0) 2022.05.16
[OS] 컨텍스트 스위칭(Context Switching)  (0) 2022.05.16