Sungkyunkwan University OS Project Dongkun Shin

Slides:



Advertisements
Similar presentations
Term project. Touch-screen 활용 그림판 –Touch-screen 을 입력장치로 하여 LCD 상에 그림을 그리는 프로그램 – 터치 입력을 절대 좌표로 받는 디바이스 /dev/touch 를 만들어 응용 프 로그램에서 수행하도록 함. –User interface.
Advertisements

강의 기법과 상황대처 경기도 마약퇴치운동본부 김이항 약사 10.
Chapter 10장 솔라리스 자원 관리 및 프로젝트 관리 Solaris2. 프로젝트 관리
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
<<< 시스템등록정보 “하드웨어-장치관리자” 설정 >>>
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
정보통신실습 및 특강(5)
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
컴퓨터 프로그래밍 기초 [Final] 기말고사
08. 디바이스 드라이버의 읽기와 쓰기 김진홍
2.2 CPU 스케줄링의 목적과 유형 스케줄링의 목적
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
리눅스 커널의 이해 중에서 10장. 프로세스 스케줄링 이명수 시스템 소프트웨어 실험실.
07. 디바이스 드라이버의 초기화와 종료 김진홍
Chapter 06 프로세스와 예약작업 관리 Solaris 1. 프로세스 관리
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
파이프와 exec 시스템 호출 (ls | wc)
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
TCP/IP Socket Programming…
Operating system #2 Process
Operating Systems Chapter 03 프로세스 개념.
rc script, 특정 port로 telnet
Operating Systems Chapter 03 프로세스 개념.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
Method & library.
자바응용.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
컴퓨터 개론 및 실습 11. 동적 메모리 할당.
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
Device Driver 임베디드 시스템 I.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
24장. 파일 입출력.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
자바 5.0 프로그래밍.
School of Electronics and Information. Kyung Hee University.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Canary value 스택 가드(Stack Guard).
( Windows Service Application Debugging )
운영체제 (Operating System) (하드웨어와 응용 프로그램 사이의 인터페이스 역할을 담당하는 시스템 소프트웨어)
7주차: Functions and Arrays
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
업체등록신청절차 목차 메인화면 메세지별 유형 2-1. 이미 가입된 공급업체
성경퀴즈 여호수아1장 3장 복습게임.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
Numerical Analysis Programming using NRs
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;
Installation Guide.
06. 디바이스의 등록과 해제 김진홍
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
CODE INJECTION 시스템B 김한슬.
Web.
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
운영체제보안 SELinux 실습 박민재
6 객체.
2. 프로세스 B 안우진 - 운영체제 -.
CCISS 어레이 형식 centos7 설치방법
타이머를 시작하려면 슬라이드 쇼 메뉴에서 쇼 보기를 클릭하십시오.
Presentation transcript:

Sungkyunkwan University OS Project Dongkun Shin Schedule() 함수 분석 Sungkyunkwan University OS Project Dongkun Shin

Schedule()의 목적 CPU마다 존재하는 Run Queue로부터 프로세스 하나를 찾아 CPU 자원 할당 다양한 Scheduler와의 호환

schedule() 함수 호출 시기 직접 호출 필요한 자원 이용이 불가하여 다른 프로세스를 실행할 때 특정 디바이스 드라이버로부터 호출 Lazy 호출 (Deferred Invocation) <TIF_NEED_RESCHED flag가 Set되어 있는 경우> 특정 시간 간격 (Time quantum)마다 Try_to_wake_up() 함수가 호출되었을 때 Sched_setscheduler()가 호출되었을 때: 프로세스의 Scheduling policy 와/혹은 Priority를 변경하였을 때

Schedule() 개요 4 단계로 이루어짐 Process Switch 이전 Process Switch 중 다음 프로세스를 선택하기 위한 환경 설정 Runqueue로부터 다음 프로세스 선택 Process Switch 중 프로세스 전환을 위한 환경 설정 프로세스 전환 Process Switch 이후 선택된 다음 프로세스가 이전 프로세스와 동일 할 때 하는 작업 Process Switch 종료

__schedule() – 변수 설정 schedule()함수에 사용되는 지역변수들 본 함수의 가장 중요한 결과물은 next switch_count: 특정 Task의 Context가 Switch됨에 따라 올릴 switch_count switch_count는 Process를 분석할 때 사용됨. task_struct의 두 개 변수가 담당 nvcsw: Direct Switching Count nivcsw: Deferred Switching Count rq: 해당 CPU의 Runqueue 포인터 cpu: 현재 CPUID 커널 Preemption을 불가능하게 설정 (preempt count증가, memory barrier 설정) 현재 cpuid를 알아내어 cpu 변수 값 설정 해당 cpu의 runqueue를 가리키도록 rq값 설정 cpu에서 context switch를 위해 사용하는 값들을 rcu락으로 보호 prev 변수를 현재 실행중인 process로 설정

__schedule() – 현재 Switching 정보 Lazy호출이라 가정하여 Switch Count 설정 기존 prevstate가 stop되어 있으면 자발적인 switch라고 판단 siwtch count=nvcsw if unlikely함수는 가능성이 거의 없는 branch else 현재 process를 sleep 시키고 runqueue에서 제거 workqueue에 관한 내용 pending된 작업들을 수행할 지를 결정

__schedule() – pre_schedule CFS에는 pre_schedule함수가 정의 되어 있지 않으므로 아무 작업도 하지 않음

__schedule() – context switch runqueue에서 제거한 기존 process를 다시 runqueue에 삽입. CFS에서 정의한 put_prev_task()로 삽입하므로 기존과 다른 상태로 runqueue에 삽입됨  priority에 따라 weight를 재설정하여 삽입 CFS에서 정의한 pick_next_task를 호출해 다음에 실행될 process로 next 변수 설정 다음에 실행될 Process가 이전 Process와 다르면 context switch로 프로세스 전환 이 후 post_schedule은 CFS에 정의X preempt enable시키고 종료