2013년도 운영체제 1학기 과제 #2

<실시간 스케쥴링>

1. 목적

Real-Time System의 비주기적 작업에 대한 스케쥴링인 Deferrable service, Polling Service 와 를 구현해 봄으로써, 각 방식에 대한 이해를 향상한다.

2. 입력

사용자에 의한 입력
- 주기적 Task는 10개 미만 2개 이상으로 입력

- 주기적 Task의 수행 시간은 사용자 입력 혹은 정의

- Background Service와 Polling Service의 비주기적 Task의 갯 수 는 랜덤 입력

- 비주기적 Task는 수행 시간은 1로 정의

-

3. 출력

Deferrable Service : 주기적/비주기적 테스크의 전체 대기 시간과 각 시간 단위에 처리중인 프로세스의 번호와 남은 처리량
Polling Service : 주기적/비주기적 테스크의 전체 대기 시간과 각 시간 단위에 처리중인 프로세스의 번호와 남은 처리량

4. 개발 환경

a. Platform : Windows

b. Dev. Language : C++(MFC 사용 권장-Console도 무방함)

5. 제출 마감 기한
- 04월 19일 (목) 수업 시간 전까지

6. 인원

개인 별로 진행

7. 제출 방식

소스와 실행 파일을 압축하여 ”학번이름.zip”로 파일을 만들고, 파일제목은 “학번이름”으로 하여 ftp://163.180.116.93 (ID :　os PW : 1111)의 "과제" 폴더에 업로드

8. 프로그램 설명

● Deferrable Server는 주기적 테스크를 처리 하는 도중 비 주기적 Task 발생시 바로 비주기적 Task 처리

● bandwith 를 가지고 있어 bandwith보다 작은 양이면 실시간으로 처리 가능

● 정한 일정 시간 마다 bandwith가 다시 복구 됨

● 즉 [eqn: U= sum _{`} ^{`} {C1} over {T1} LEQ n(2 ^{{1} over {n}} -1)]을 만족 하게 하는 값을 구해 주기로 정함

● Polling Serivce는 테스크의 발생을 주기적으로 체크해 테스크가 있을시 인터럽트 한 후 테스크를 처리

● 주기적 테스크 처리 하는 도중에 테스크 도착시 다음 인터럽트를 확인 할 때 까지 테스크는 기다림

● 만약 주기적 테스크를 처리 하는 도중 테스크가 도착 했고 다음 인터럽트 발생때 테스크가 생기게 된다면 먼저온 테스크를 먼저 수행