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

Slides:



Advertisements
Similar presentations
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 i n a r 8259A 를 아는가 ??? 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 i n a r.
Advertisements

누구든지 그리스도 안에 있으면 새로운 피조물이라 이전 것은 지나 갔으니 보라 새 것이 되었도다 그런즉 고린도후서 5 장 17 절 말씀 – 아멘.
컴퓨터와 인터넷.
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
11장 스레드.
컴퓨터 프로그래밍 기초 [Final] 기말고사
VPC (Virtual Port channel)
08. 디바이스 드라이버의 읽기와 쓰기 김진홍
어셈블리 문법 보강 4월 10일.
+ 가상 메모리 -> 물리 메모리 Selector Offset DIR Page Segmetatation
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
07. 디바이스 드라이버의 초기화와 종료 김진홍
Communication and Information Systems Lab. 황재철
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
DK-128 ADC 실습 아이티즌 기술연구소
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
WinCE Device Driver 실습 #3
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
타이머카운터 사용법 휴먼네트웍스 기술연구소
PSW : PROGRAM STATUS WORD
Sungkyunkwan University OS Project Dongkun Shin
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
2장 프로세스 과목: 운영체제 학번: 이름:오승현.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
Operating system #2 Process
Operating Systems Chapter 03 프로세스 개념.
P2P시스템에 대해서 (peer to peer)
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
Google Cloud Platform을 이용한 서버 인프라 구축
24장. 파일 입출력.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
Hello, Python! #2 <부제: 코딩은 혼자하는 것이다>
자바 5.0 프로그래밍.
Nessus 4 설치 정보보호응용 조용준.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
FileMaker를 이용한 데이터 관리 옥현진(KICE).
Moving Control in Web using Ajax Toolkit
데이터베이스실험실 석사 2학기 조정희 TCP/IP Socket Programming… 제 18장 윈도우 기반 쓰레드 사용하기 데이터베이스실험실 석사 2학기 조정희
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
13장 CTC and DMA Slide 1 (of 10).
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
클라우드 서버로 부터 값 읽어오기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ARM Development Suite v1.2
20강 패턴을 통한 객체지향 언어의 이해 - II - 난이도 있는 패턴 예제 - I Lecturer Kim Myoung-Ho
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
빌드 성공.
( Windows Service Application Debugging )
제 15 강 문자와 코드 shcho.pe.kr.
[알파코스] 네 번째 왜 그리고 어떻게 기도해야 하는가?.
DK-128 직렬통신 실습 아이티즌 기술연구소
시리얼 UART 정리 정보통신•컴퓨터 공학부 송명규
함수, 모듈.
발표자 : 이지연 Programming Systems Lab.
System Security Operating System.
AdcRead API 함수 분석 마이크로프로세서.
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 4 장 Record.
엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;
• 수학 • 6학년 나단계 • 7. 연비>3/9 두 비의 관계를 연비로 나타내기 수업활동 수업계획.
내 몸, 네 몸.
Reversing 발표자 : 박현우.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
Assembly 05 방호남 07 반지훈 09 박상욱.
7 생성자 함수.
2. 프로세스 B 안우진 - 운영체제 -.
CCISS 어레이 형식 centos7 설치방법
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

TR = 6번째 TR = 5번째 GDT NULL Descriptor 1 RING 0 CS 2 RING 0 DS 3 NULL Descriptor 1 RING 0 CS 2 RING 0 DS 3 RING 3 CS 4 RING 4 DS 5 TSS 1 6 TSS 2 Task 1 TSS Task 2 TSS TR = 6번째 TR = 5번째

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

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

Task Register (TR) TSS Selector

GDT TSS Descriptoer

GDT TSS Descriptoer

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

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

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

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

IDT TSS Descriptor INT TaskGateIndex

IDT TSS Descriptor INT TaskGateIndex

IRET TSS Task State Segment EFLGAS의 NT == 1

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

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

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

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

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

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

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

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

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

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

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

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

어떻게 ????????

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

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

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

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

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

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

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

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

IDT 타이머 인터럽트가 발생하면 IDT 20번째 Descriptor를 참고해서 인터럽트를 처리한다. Task Gate Descriptor 타이머 인터럽트가 발생하면 IDT 20번째 Descriptor를 참고해서 인터럽트를 처리한다. 타이머 Int 발생

GDT TASK_SW_SEG TMR_TSS_SEG

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

태스크 스위칭은 어떻게 하는가???? 다음 실행시킬 쓰래드를 찾는다. TSS의 Base값을 바꿔친다!!!!

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

자그럼 프로세스만드는것을 해보자! 별것없다.. PCB할당하고 초기값세팅해주고 프로세스관리리스트에 추가하는것 말고는

자럼 이번엔 쓰레드를 만들자!!! 이것도 별것 없다. TCB할당하고 스택 할당하고 Entry 함수 알려주 인자넘값포인터 알려주고! 리스트 추가하고 끝!!! 덩말 간단하다!

음… 프로세스와 쓰레드에 대해서 그리고 태스크 스위칭 하는 방법에 대해서 감이 오는가?????? 음… 프로세스와 쓰레드에 대해서 그리고 태스크 스위칭 하는 방법에 대해서 감이 오는가??????