본문은 '윈도우 시스템 프로그램을 구현하는 기술'을 바탕으로 개인적인 공부를 위해 작성했습니다.
1.1 스레드 개요
- 프로세스가 생성되면 최소 하나의 스레드인 '메인 스레드'가 생성 된다.
- 멀티 스레딩 프로그램을 위해 별도의 스레드를 생성할 수 있다.
- 메인 스레드와 자식 스레드는 차이가 없다.
- 둘 다 커널 객체로서의 스레드이다.
- 커널 영역에서 커널 객체로 존재한다.
1.2 스레드의 요소
- 스레드 ID
- 스레드 자체의 보안 문맥을 가질 수 있다.
- 해당 프로세스의 상태를 표현하는 CPU 레지스터 집합 요소 - 스레드 문맥
- 커널 모드와 유저 모드를 위한 두 개의 스레드 스택
- 스레드 지역(TLS)라고 불리는 사적 저장 영역
- 스레드는 자신만의 고유한 메시지 큐를 갖는다.
- CreateThread 함수 호출 시 스레드 ID 획득가능
- 스레드가 자신의 ID를 알고 싶으면 GetCurrentThreadId 함수를 호출
- 윈도우의 기본 스케줄링 단위는 '스레드'
1.3 스레드 스택
- 개별 스레드는 자신만의 스택을 가상 주소 공간 내에 갖게 된다.
- 데이터 영역에는 코드상에서 사용한 상수(문자열 포함)와 전역 변수 , 정적 변수가 그 곳에 위치
- 힙에는 동적으로 할당된 메모리 블록이 위치
- 스택에는 모든 지역 변수가 위치 함수로 전달되는 매개변수와 리턴값의 반환에 사용
- 함수 호출 시에 호출이 완료되었을 때 복귀해서 실행해야 할 코드의 다음 명령어의 위치를 저장하기 위한 IP레지스터 정보가 저장
'프로그래밍 > 시스템프로그래밍' 카테고리의 다른 글
1.3 쓰레드의 동기화 (0) | 2019.09.25 |
---|---|
1.2 쓰레드의 생성과 소멸 (0) | 2019.09.25 |
1.1 쓰레드 (0) | 2019.09.24 |
3. 커널 오브젝트 (0) | 2019.09.23 |
2. 프로세스 (0) | 2019.09.20 |