본문은 '윈도우 시스템 프로그램을 구현하는 기술'을 바탕으로 개인적인 공부를 위해 작성했습니다.

 

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

+ Recent posts