1 / 59

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

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

sumi
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. 대기중인 쓰레드 실행중인 쓰레드 Thread Thread Thread Task Switching Thread Thread Thread

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

  6. 태스크라면…이런정보들이 있다!!! CS 와 IP를 가지고 있다. Data Segment를 가지고 있다. 커널스택/ 유저 스택을 가지고 있다 일반사용 레지스터를 가지고 있다. FLAGS 레지스터를 가지고 있다.

  7. Task Information 테스크 정보를 저장하는 구조체가 있다!!! TASK STATE SEGMENT TSS

  8. 각종 작업정보가 들어 있다. 쉽게 말하면 CPU에서 일을하는데 필요한 정보들은 다 들어 있다.

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

  10. IA64TSS는 어떻게 생겼을까???

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

  12. 그러면 인텔 CPU는 TSS는 왜 만들었을까? 멀티 테스킹을지원 하기 위해 만들었다!

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

  14. Task 1 TSS Task 2 TSS TR = 5번째 TR = 6번째

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

  16. 64비트 or 32비트 Base Address 32비트Limit Attributes Task Register (TR) TSS Selector GDT TSS Task State Segment TSS Descriptoer

  17. Task Register (TR) TSS Selector

  18. GDT TSS Descriptoer

  19. GDT TSS Descriptoer

  20. 그럼 언제 이런 테스크스위칭을CPU에게 시킬수 있나?

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

  22. CALL [TaskGateIndex]:0 GDT LDT Task Gate Task Gate JMP [TaskGateIndex]:0

  23. CALL [TaskGateIndex]:0 GDT TSS Descriptor JMP [TaskGateIndex]:0

  24. INT TaskGateIndex IDT TSS Descriptor

  25. INT TaskGateIndex IDT TSS Descriptor

  26. IRET TSS Task State Segment EFLGAS의 NT == 1

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

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

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

  30. CPU단의 태스크 스위칭이 뭔지 정리되는가? TR(Task Register)가 변경되는것! TSS에 CPU레지스터 값을 저장하고 CPU의 레지스터 값을 새로운 TSS의 값으로 바꾸는 행위

  31. 그럼 태스크와 쓰레드 프로세스와는 뭐가 다른데!!!??????? 쓰레드와프로세스라는것은 이 CPU가 제공하는 일의 기본단위인 TASK를 추상화한것이다!!!!!

  32. 자 그럼 프로세스와 쓰레드를만들어보자!!!!

  33. “프로세스”라는게 뭔가? 난! 쓰레드의 리스트를 프로세스라고하자!!!

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

  35. 그럼 “쓰레드”라는게 뭔가? 스택과 TSS를 가진놈이다! 라고 정의하자!!!!!!

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

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

  38. 타이머 인터럽트가 들어오면쓰레드를 교환해주자!!!

  39. 어떻게 ????????

  40. 일단!!! 타이머 인터럽트가 발생하면“TSS Descriptor”로 가도록하자!!!그러면 바로 TASK 스위칭이 일어날것이다! TSS Descriptor 타이머 Int발생 IDT

  41. 타이머 Int발생 TSS Descriptor IDT GDT TSS Task State Segment SW TSS Descriptor TM TSS Descriptor

  42. 타이머 Int발생 TSS Descriptor SW TSS Descriptor IDT GDT TSS Task State Segment SW TSS Descriptor TM TSS Descriptor

  43. 이렇게하고IRET하면 어떻게 될까??? SW TSS Descriptor BASE ADDRESS OLD NEW TSS Task State Segment TSS Task State Segment 쓰레드르 바꿔칠수 있는것이다!!!!

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

  45. 초비츠의 프로세스와 쓰레드를 구경해보자!!! 이게 초비츠 프로세스다!

  46. 초비츠의 프로세스와 쓰레드를 구경해보자!!! 이게 초비츠 프로세스다!

More Related