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

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


2. 커널 영역 vs 유저 영역

- 메모리 공간은 커널 영역과 유저 영역으로 나뉜다. 커널 영역은 커널이 올라가 있으며, 커널의 실행을 위한 메모리 영역이고, 유저 영역은 운영체제 이외의 프로그램이 올라가 있으며, 이 프로그램들의 실행을 위한 메모리 영역이다.


3. 커널 모드 vs 유저 모드

- 커널 영역의 보호를 위해서 커널 모드와 유저 모드라는 것을 정의하고 있다. 일반적인 응용 프로그램이 실행될 때 시스템은 유저 모드 상태에 있다. 이 경우 제한된 영역의 메모리 접근만 허용한다. 커널 영역을 보호하기 위해서다. 그러나 커널 모드에서는 메모리 전 영역의 접근을 허용한다. 따라서 커널은 커널모드에서 동작한다.


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

- 쓰레드를 지원하는 운영체제의 기능을 통해서 생성된 쓰레드를 가리켜 커널 레벨 쓰레드라 하고, 라이브러리 형태의 제공되는 기능을 통해서 생성된 쓰레드를 가리켜 유저 레벨 쓰레드라 한다.


- 커널 레벨 쓰레드 장점 : 커널에서 직접 제공해 주기 때문에 안전성과 다양한 기능성이 제공된다.

- 커널 레벨 쓰레드 단점 : 유저 모드에서 커널 모드로의 전환이 빈번하게 발생해 성능의 저하로 이어진다.


- 유저 레벨 쓰레드 장점 : 유저모드 에서 커널 모드로의 전환이 필요 없기 때문에 성능이 좋다.

- 유저 레벨 쓰레드 단점 : 하나의 프로세스내에 3개의 프로세스가 있다고 가정하면, 하나의 프로세스가 시스템 함수를 호출했는데 커널에 의해서 블로킹 되었다. 이럴 경우 나머지 2개의 쓰레드도 실행되지 않는다. 운영체제는 프로세스의 존재만 알 뿐 쓰레드의 존재를 모르기 때문이다. 

+ Recent posts