이제 태스크 스위칭에대해서만 !! 한번 생각해보자 !!!

Post on 26-Jan-2016

83 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

이제 태스크 스위칭에대해서만 !! 한번 생각해보자 !!!. 태스크 스위칭이 뭘까 ????. 태스크를 스위칭하는 것이다 !!!. 대기중인 쓰레 드. 실행중인 쓰레드. Thread. Thread. Thread. Task Switching. Thread. Thread. Thread. 그럼 ! Task 라는게 뭘까 ????. 태스크라면 … 이런정보들이 있다 !!!. CS 와 IP 를 가지고 있다. Data Segment 를 가지고 있다. 커널 스택 / 유저 스택을 가지고 있다. - PowerPoint PPT Presentation

Transcript

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

이제 태스크 스위칭에대해

서만 !!한번

생각해보자 !!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

태스크 스위칭이 뭘까 ????

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

태스크를 스위칭하는 것이다 ! ! !

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

Thread

ThreadThread

ThreadThread

Thread

대기중인 쓰레드실행중인

쓰레드

Task Switching

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

그럼 ! Task 라는게 뭘까 ????

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

태스크라면…이런정보들이 있다 !!!

CS 와 IP 를 가지고 있다 .

Data Segment 를 가지고 있다 .

커널 스택 / 유저 스택을 가지고 있다

일반사용 레지스터를 가지고 있다 .

FLAGS 레지스터를 가지고 있다 .

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

Task Information 테스크 정보를 저장하는

구조체가 있다 !!!TASK STATE SEGMENT

TSS

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

각종 작업정보가들어 있다 .쉽게 말하면CPU 에서

일을하는데 필요한

정보들은 다 들어 있다 .

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

인텔 CPU 메뉴얼을 함봐보자 ! ! !

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

IA64 TSS 는 어떻게 생겼을까 ???

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

X64 의 TSS 는 어떻게 생겼을까 ???

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

그러면 인텔 CPU 는 TSS 는 왜 만들었을까 ?

멀티 테스킹을 지원

하기 위해 만들었다 !

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

태스크 스위칭이 일어날때CPU 는 어떤짓을 하는가 ?

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

Task 1 TSS

Task 2 TSS

GDT

0 NULL Descriptor

1 RING 0 CS

2 RING 0 DS

3 RING 3 CS

4 RING 4 DS

5 TSS 1

6 TSS 2

TR = 5 번째 TR = 6 번째

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

테스크 관리 에 동원되는 것들은 ???

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

Task Register(TR)

TSS Selector GDTTSS Descriptoer

64 비트 or 32 비트 Base Ad-dress

32 비트 Limit Attributes

TSSTaskState

Segment

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

Task Register(TR)

TSS Selector

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

GDTTSS Descriptoer

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

GDTTSS Descriptoer

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

그럼 언제 이런 테스크 스위칭을

CPU 에게 시킬수 있나 ?

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

자 CPU 에게 태스크 스위칭을 해보라고해보자 !!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

GDTTask Gate

LDTTask Gate

CALL [TaskGateIndex]:0

JMP [TaskGateIndex]:0

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

GDTTSS Descriptor

CALL [TaskGateIndex]:0

JMP [TaskGateIndex]:0

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

IDTTSS Descriptor

INT TaskGateIndex

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

IDTTSS Descriptor

INT TaskGateIndex

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

TSSTaskState

Segment

IRET

EFLGAS 의 NT == 1

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

태스크 게이트를 사용한다는게 뭔말이냐 ?

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

태스크 게이트를 사용한다는게 뭔말이냐 ?

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

태스크 게이트를 사용한다는게 뭔말이냐 ?

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

CPU 단의 태스크 스위칭이 뭔지 정리되는가 ?

TR(Task Register) 가 변경되는것 !

TSS 에 CPU 레지스터 값을 저장하고CPU 의 레지스터 값을 새로운 TSS 의 값으로

바꾸는 행위

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

그럼 태스크와 쓰레드 프로세스와는

뭐가 다른데 !!!???????

쓰레드와 프로세스라는것은이 CPU 가 제공하는 일의

기본단위인TASK 를 추상화한것이다 !!!!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

자 그럼 프로세스와 쓰레드를

만들어보자 !!!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

“ 프로세스”라는게 뭔가 ?

난 ! 쓰레드의 리스트를

프로세스라고하자 !!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

그럼 “쓰레드”라는게 뭔가 ?

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

그럼 “쓰레드”라는게 뭔가 ?스택과

TSS 를 가진놈이다 !라고 정의하자 !!!!!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

이렇게 말이다 !!이걸 난 “쓰레드”라고 하겠

다 !!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

그럼 “쓰레드”교환을 어떻게 해줄까 ????

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

타이머 인터럽트가 들어오면

쓰레드를 교환해주자 !!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

어떻게 ????????

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

타이머 Int 발생

IDT

TSS Descriptor

일단 !!! 타이머 인터럽트가 발생하면

“ TSS Descriptor” 로 가도록하자 !!!

그러면 바로 TASK 스위칭이 일어날것이다 !

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

타이머 Int 발생

IDT

TSS Descriptor

GDTSW TSS Descriptor

TM TSS Descriptor

TSSTaskState

Segment

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

타이머 Int 발생

IDT

TSS Descriptor

GDTSW TSS Descriptor

TM TSS Descriptor

TSSTaskState

Segment

SW TSS Descriptor

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

SW TSS DescriptorBASE ADDRESS

TSSTaskState

Segment

OLD

TSSTaskState

Segment

NEW

이렇게하고

IRET하면

어떻게 될까 ???쓰레드르

바꿔칠수있는것이

다 !!!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

초비츠의 프로세스와 쓰레드를 구경해보자 !!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

초비츠의 프로세스와 쓰레드를 구경해보자 !!!

이게 초비츠 프로세스다 !

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

초비츠의 프로세스와 쓰레드를 구경해보자 !!!

이게 초비츠 프로세스다 !

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

초비츠의 쓰레드를 구경해보자 !!!

이게 초비츠 쓰레드다 !

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

타이머 Int 발생

IDT

Task Gate De-scriptor타이머 인터럽트가 발생하면

IDT 20 번째 Descriptor 를참고해서 인터럽트를 처리한다 .

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

GDTTASK_SW_SEG

TMR_TSS_SEG

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

GDTTASK_SW_SEG

TMR_TSS_SEG

태스크 스위칭하고 ..Iret 하면이전 task 로 다시스위칭 !!!!!된다 .!!!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

태스크 스위칭은 어떻게 하는가 ????

다음 실행시킬 쓰래드를 찾는다 .

TSS 의 Base 값을 바꿔친다 !!!!

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

GDTTASK_SW_SEG

TMR_TSS_SEG

이놈이이전 태스크상태를 처리하는놈이다 .

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

자그럼 프로세스만드는것을 해보자 !

별것없다 ..PCB 할당하고

초기값세팅해주고프로세스관리리스트에

추가하는것 말고는

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

자럼 이번엔 쓰레드를 만들자 !!!

이것도 별것 없다 .TCB 할당하고스택 할당하고

Entry 함수 알려주인자넘값포인터

알려주고 !리스트 추가하고 끝 !!!

덩말 간단하다 !

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r

음…프로세스와

쓰레드에 대해서 그리고 태스크 스위칭 하는

방법에 대해서감이 오는가 ??????

top related