- 컨텍스트 스위칭으로 인한 성능저하가 예상될때 이를 줄일 수 있는 방법으로 저장하고 복원하는 컨텍스트 정보의 개수를 줄이면 가능함
| 프로세스와 쓰레드의 비교
- 쓰레드는 하나의 프로그램 내에서 여러 개의 실행 흐름을 두기 위한 모델이다.
- 쓰레드는 프로세스처럼 완벽히 독립적인 구조가 아니다. 쓰레드들 사이에는 공유하는 요소들이 있다.
- 쓰레드는 공유하는 요소가 있는 관계로 컨텍스트 스위칭에 걸리는 시간이 프로세스보다 짧다.
| 쓰레드의 특성
1. 쓰레드마다 스택을 독립적으로 할당 -> 스택은 함수 호출 시 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하는 변수등 함수 호출에 필요한 메모리 영역이므로 실행 흐름의 추가를 위한 최소 조건이 독립된 스택의 제공이다.
2. 코드 영역을 공유함
3. 데이터 영역과 힙을 공유한다.
| 커널 레벨 쓰레드와 유저 레벨 쓰레드
- 커널 레벨 쓰레드 : 커널이 쓰레드를 지원할 경우 쓰레드 관리가 커널 영역에서 이뤄짐
- 유저 레벨 쓰레드 : 커널이 지원하지 않을 경우에 라이브러리를 통해서 제공받아야 하는데 이러한 경우 유저 영역에서 쓰레드의 관리가 이뤄진다.
| 메모리 활용 대상
- 유저 영역 : 사용자에 의해서 할당되는 메모리 공간
- 커널 영역 : 유저 영역을 제외한 메모리 공간
| 커널 모드 & 유저 모드
- window 운영체제가 동작하는 두 가지 모드
- 커널 모드와 유저 모드의 차이점은 프로세스가 유저 모드에서 동작할때는 커널모드로의 접근이 불가
커널 모드일때는 모두 접근 가능
- 모드의 전환은 시스템에 부담을 주는 일이다.
- 커널모드와 유저모드를 제공하는 것은 프로세서이다.
'프로그래밍 > 시스템프로그래밍' 카테고리의 다른 글
1.3 쓰레드의 동기화 (0) | 2019.09.25 |
---|---|
1.2 쓰레드의 생성과 소멸 (0) | 2019.09.25 |
3. 커널 오브젝트 (0) | 2019.09.23 |
2. 프로세스 (0) | 2019.09.20 |
1. 스레드 개요 (0) | 2019.09.19 |