GeekOS Project3 - System Call 구현 후, Scheduling한다(MLFQ, RoundRobin)
- 최초 등록일
- 2009.05.17
- 최종 저작일
- 2009.04
- 10페이지/ 압축파일
- 가격 2,000원
소개글
소스파일이 함께 들어있어요.
다른 레포트보다 설명은 잘 되어 있습니다.
이 레포트를 하면서 많은 자료를 찾아봤고, 꼭 봐야 할 것은 영어로 된 GEEKOS 설명서 입니다.
GEEKOS는 TODO를 없애며, 따라가면서 프로그램을 완성 시키도록 해놨습니다.
제 레포트가 많은 도움이 되면 좋겠습니다.
Geek OS에서 스케줄링 정책을 설정하는 Sys_SetSchedulingPolicy( ) 시스템 콜을 구현한다. Sys_SetSchedulingPolicy( )는 Round Robin 혹은 MLFQ 스케줄링 중 하나를 선택하여 GeekOS의 스케줄링 정책을 설정한다. 스케쥴링이 되는지 workload로 확인한다.
작업환경
CPU: Intel Core Quad T2350 @ 1.86Ghz
RAM: 4GB
OS: Ubuntu Linux 8.10
* PROJECT1 , PROJECT2 : 유저 프로세스와 커널 프로세스를 이용해 실행파일을 띄우고 System Call을 구현부분이다.
* PROJECT3 : 스케쥴링 알고리즘을 짜고, 세마포를 이용하여 동기화를 시키는 것이다.
GeekOS의 프로젝트 3번을 구현하여 workload user 프로그램을 통해 실제 스케줄링이 되는지 확인한다.
3. 소스코드
geekos/syscall.c
Sys_SetSchedulingPolicy()
.
.
.
(생략)
* 세마포어
Sys_CreateSemaphore()
세마포어를 생성해주는 함수.....
Sys_P()
세마포어 변수가....
(생략)
실제적인 스케줄링을 하는 함수이다. policy 정책은 RR(Round Robin)과.........
/*USERTODO*/
extern int g_Quantum;
int g_scheduleSelector;
int Set_Scheduling_Policy(int policy, int quantum)
{
/* make sure quantum is greater than one */
KASSERT(!(quantum <= 0));
struct Kernel_Thread *pThread = Get_Front_Of_Thread_Queue(s_runQueue);
int i;
(생략)
case 0: //RR
best = Get_Front_Of_Thread_Queue(&s_runQueue[0]);
KASSERT(best!=0);
컴파일 실행환경
linux GeekOS
압축파일 내 파일목록
Project3_.hwp
source.tar.gz
참고 자료
리눅스 GEEKOS 메뉴얼