1. 프로세스와 쓰레드의 차이점
- 프로세스는 메모리를 공유하지 않지만, 프로세스 내에 존재하는 둘 이상의 쓰레드들은 스택을 제외한 나머지 메모리 공간을 공유한다.
2. 커널 영역 vs 유저 영역
- 메모리 공간은 커널 영역과 유저 영역으로 나뉜다. 커널 영역은 커널이 올라가 있으며, 커널의 실행을 위한 메모리 영역이고, 유저 영역은 운영체제 이외의 프로그램이 올라가 있으며, 이 프로그램들의 실행을 위한 메모리 영역이다.
3. 커널 모드 vs 유저 모드
- 커널 영역의 보호를 위해서 커널 모드와 유저 모드라는 것을 정의하고 있다. 일반적인 응용 프로그램이 실행될 때 시스템은 유저 모드 상태에 있다. 이 경우 제한된 영역의 메모리 접근만 허용한다. 커널 영역을 보호하기 위해서다. 그러나 커널 모드에서는 메모리 전 영역의 접근을 허용한다. 따라서 커널은 커널모드에서 동작한다.
4. 커널 레벨 쓰레드 vs 유저 레벨 쓰레드
- 쓰레드를 지원하는 운영체제의 기능을 통해서 생성된 쓰레드를 가리켜 커널 레벨 쓰레드라 하고, 라이브러리 형태의 제공되는 기능을 통해서 생성된 쓰레드를 가리켜 유저 레벨 쓰레드라 한다.
- 커널 레벨 쓰레드 장점 : 커널에서 직접 제공해 주기 때문에 안전성과 다양한 기능성이 제공된다.
- 커널 레벨 쓰레드 단점 : 유저 모드에서 커널 모드로의 전환이 빈번하게 발생해 성능의 저하로 이어진다.
- 유저 레벨 쓰레드 장점 : 유저모드 에서 커널 모드로의 전환이 필요 없기 때문에 성능이 좋다.
- 유저 레벨 쓰레드 단점 : 하나의 프로세스내에 3개의 프로세스가 있다고 가정하면, 하나의 프로세스가 시스템 함수를 호출했는데 커널에 의해서 블로킹 되었다. 이럴 경우 나머지 2개의 쓰레드도 실행되지 않는다. 운영체제는 프로세스의 존재만 알 뿐 쓰레드의 존재를 모르기 때문이다.
'뇌를 자극하는 윈도우즈 시스템 프로그래밍 > 개념' 카테고리의 다른 글
쓰레드 동기화 기법1 (0) | 2019.05.21 |
---|---|
쓰레드의 생성과 소멸 (0) | 2019.05.20 |
스케줄링 알고리즘과 우선순위 (0) | 2019.05.17 |
프로세스 간 통신(IPC)2 (0) | 2019.05.17 |
프로세스 간 통신(IPC)와 Signaled, Non-Signaled 상태 (0) | 2019.05.08 |