59
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 이이 태태태 태태태태태태태 태 !! 태태 태태태태 태 !!!

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

  • Upload
    sumi

  • View
    83

  • Download
    3

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 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

이제 태스크 스위칭에대해

서만 !!한번

생각해보자 !!!

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

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

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

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

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

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

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

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

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

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

Page 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

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

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

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 레지스터를 가지고 있다 .

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

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

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

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 에서

일을하는데 필요한

정보들은 다 들어 있다 .

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

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

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

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 메뉴얼을 함봐보자 ! ! !

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

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 는 어떻게 생겼을까 ???

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

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 는 어떻게 생겼을까 ???

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

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 는 왜 만들었을까 ?

멀티 테스킹을 지원

하기 위해 만들었다 !

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

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 는 어떤짓을 하는가 ?

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

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 번째

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 에게 시킬수 있나 ?

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

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 에게 태스크 스위칭을 해보라고해보자 !!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 의 값으로

바꾸는 행위

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

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 를 추상화한것이다 !!!!!

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

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

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

만들어보자 !!!!

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

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

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

난 ! 쓰레드의 리스트를

프로세스라고하자 !!!

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

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

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

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

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 를 가진놈이다 !라고 정의하자 !!!!!!

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

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

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

다 !!!

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

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

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

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

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

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

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

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

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

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

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

어떻게 ????????

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

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 스위칭이 일어날것이다 !

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

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

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

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

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

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하면

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

바꿔칠수있는것이

다 !!!!

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

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

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

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

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

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

이게 초비츠 프로세스다 !

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

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

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

이게 초비츠 프로세스다 !

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

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

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

이게 초비츠 쓰레드다 !

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

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 를참고해서 인터럽트를 처리한다 .

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

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

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

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 로 다시스위칭 !!!!!된다 .!!!!

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

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 값을 바꿔친다 !!!!

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

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

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

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

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 할당하고

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

추가하는것 말고는

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

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 함수 알려주인자넘값포인터

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

덩말 간단하다 !

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

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

음…프로세스와

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

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