Presentation is loading. Please wait.

Presentation is loading. Please wait.

Windows System Programming

Similar presentations


Presentation on theme: "Windows System Programming"— Presentation transcript:

1 Windows System Programming
-Thread Basic- Tutor: 배문희

2 contents 스레드란 무엇인가? 스레드 특성 Thread 등장 배경 Process와 Thread 독립적 스택 코드영역 공유
데이터 영역과 힙 영역 공유 호남대학교 정보통신공학과

3 Thread란? Thread 등장배경 Process와 Thread 호남대학교 정보통신공학과

4 Thread의 등장 배경 Multi Process 둘 이상의 서로 다른 프로그램 실행
하나의 프로그램이 두 가지 이상의 일을 동시에 처리하기 위해서는 둘 이상의 프로세스 필요 문제점 많은 수의 프로세스 생성 빈번한 Context switching 성능저하의 원인 ※ Context Switching: 프로세스의 상태 정보를 저장하고 복원하는 일련의 과정 호남대학교 정보통신공학과

5 Thread의 등장 배경 Context Switching 필요이유: 프로세스들이 서로 완전히 독립되었기 때문
Process는 Process A와 B가 50%의 독립된 구조이고 나머지 50%는 공유하는 구조라고 하더라도 100%의 Context Switching이 일어난다. 소요시간을 줄이는 방법 저장하고 복원하는 컨텍스트 정보의 개수를 줄이는것! 즉! 프로세스 상태 정보를 줄여야 한다! 바로 이것!! Thread는 Thread A와 B가 50%가 공유하는 구조라고 라면 50%의 Context Switching이 일어난다. 이것이 Thread의 등장 배경이다! 호남대학교 정보통신공학과

6 Process와 Thread 쓰레드의 내용을 프로세스와 비교
쓰레드는 하나의 프로그램 내에서 여러 개의 실행 흐름을 두기 위한 모델 쓰레드는 프로세스처럼 완벽히 독립적인 구조가 아니다. 쓰레드들 사이에는 공유하는 요소들이 있다. 쓰레드는 공유하는 요소가 있는 관계로 컨텍스트 스위칭에 걸리는 시간이 프로세스보다 짧다 Window에서 Process는 Thread를 담는 상자에 지나지 않는다. Process는 독립적으로 어떠한 작업도 수행할 수 없다. Scheduler는 Thread를 Scheduling한다. 호남대학교 정보통신공학과

7 Process와 Thread 메모리 구조 관점에서 본 프로세스와 쓰레드 프로세스 부모 프로세스 쓰레드 A 쓰레드 B
전역변수 Static 변수 명령어 (Instruction Code) 지역변수 전달인자 정보 프로그래머 할당 Code 영역 Data 영역 Heap 영역 Stack 영역 전역변수 Static 변수 명령어 (Instruction Code) 지역변수 전달인자 정보 프로그래머 할당 Code 영역 Data 영역 Heap 영역 Stack 영역 공유 공유 생성 생성 전역변수 Static 변수 명령어 (Instruction Code) 지역변수 전달인자 정보 프로그래머 할당 Code 영역 Data 영역 Heap 영역 A thread Stack 영역 쓰레드 A B thread Stack 영역 쓰레드 B 전역변수 Static 변수 명령어 (Instruction Code) 지역변수 전달인자 정보 프로그래머 할당 Code 영역 Data 영역 Heap 영역 Stack 영역 프로세스 A 전역변수 Static 변수 명령어 (Instruction Code) 지역변수 전달인자 정보 프로그래머 할당 Code 영역 Data 영역 Heap 영역 Stack 영역 프로세스 B 프로세스별 독립적 메모리 구조 쓰레드의 공유 메모리 구조 호남대학교 정보통신공학과

8 Thread의 특성 스택을 독립적으로 할당 코드 영역 공유 데이터 영역과 힙 공유 호남대학교 정보통신공학과

9 Thread의 특성 ▶ Thread마다 stack을 독립적으로 할당
즉! 실행흐름의 추가를 위한 최소조건 ▶ 코드 영역 공유 프로세스의 경우 100% 독립 ▶ 데이터 영역과 힙 공유 IPC가 필요 없다 직관적 설명: 전역 변수와 malloc 함수를 통해서 동적 할당된 메모리 공간 공유 주의: 메모리 영역을 공유한다는 것은 문제가 발생할 수 있다!! 호남대학교 정보통신공학과

10 Thread의 특성 main Funtion 1 Funtion 2 A thread’s main B thread’s main
명령어 (Instruction Code) Code 영역 명령어 (Instruction Code) Code 영역 main main Funtion 1 Funtion 1 Funtion 2 Funtion 2 A thread’s main A thread’s main B thread’s main B thread’s main 전역변수 Static 변수 Data 영역 프로그래머 할당 Heap 영역 전역변수 Static 변수 지역변수 전달인자 정보 프로그래머 할당 Data 영역 Heap 영역 Stack 영역 지역변수 전달인자 정보 A 쓰레드Stack 영역 지역변수 전달인자 정보 프로세스Stack 영역 지역변수 전달인자 정보 B 쓰레드Stack 영역 프로세스와 쓰레드의 메모리 공유 프로세스와 쓰레드의 코드영역 공유 호남대학교 정보통신공학과

11 참고문헌 뇌를 자극하는 윈도우 시스템 프로그래밍 한빛미디어 윤성우 저 제프리 리처의 WINDOWS VIA C/C++
제프리 리처, 크리스토프 나자르 저 김명신 역 호남대학교 정보통신공학과


Download ppt "Windows System Programming"

Similar presentations


Ads by Google