소개글
CPU Scheduling을 c언어를 이용하여 5개의 기법(FCFS SJF SRTF SJF with aging RR)으로 구현한 보고서입니다.
구현하는데 상당한 시간이 걸렸기 때문에 다른 것보다 가격이 비싼 편이지만, 스케줄링 방식 하나하나씩 올린다면 그것이 더 비싸다는 것을 감안해 주세요.
보고서와 분석까지 완벽합니다.
보고서 내부에 코드가 있습니다.
목차
1. Program Description
1.1 구조체 변수 설명
1.2 변수 설명
1.3 각 경우가 실행 될 경우 flag
1.4 함수 설명
1.5 알고리즘
2. Outputs
3. Analysis
3.1. avg.Waiting time, avg.Response time, avg.Turnaroun time, Starvation value 분석
3.2. RR 방법에 대하여 time quantum q를 다르게 하여 이들에 대한
avg. response time, waiting time, starvation value graph
3.3. RR with Dynamic time quantum의 분석
4. Code
본문내용
1.3 각 경우가 실행 될 경우 flag
FCFS의 flag는 1
Nonpreempt_SJF의 flag는 2
Preempt_SJF의 flag는 3
Nonpreempt_Priority의 flag는 4
Round Robin의 flag는 5
Round Robin의 flag는 6
실행이 끝났을 경우 flag 0
1.4 함수 설명
void main()
Text파일로 저장된 프로세스 정보를 읽어들인 후 Menu 함수 실행
input.txt 한 라인은 PID, Process arrive time, Burst time 순이며 하나의 프로세스 정보를 나타낸다
void Selection()
FCFS(), Nonpreempt_SJF(), Preempt_SJF(), Nonpreempt_Priority(), R_R(), exit() 의 선택에 대한 설명을 printf()로 단순 출력.
void Scheduler_Selection(int select)
FCFS(), Nonpreempt_SJF(), Preempt_SJF(), Nonpreempt_Priority(), R_R(), exit() 의 경우를 switch 문으로 선택.
void InsertQ(process_pointer *temp, process_pointer **h, process_pointer **t);
Queue에 Process를 insert 함. 생성된 node의 후위 node설정 또는 head나 tail에 배정.
void POutput(process_pointer **temp)
실행된 process 정보 (Pid, Arrival, Burst, Priority, Wait, Turnaround, Response Work, Remain) 출력. (.next 참조하여 for문으로 반복 출력함.)
void StateOut(int time, process_pointer **ready_head, process_pointer **node_head, int flag);
실행중인 process의 상태 정보(Excuting Process, Ready Queue, Remain Process)를 Time이 변함에 따라 실시간으로 출력한다.
void Process_Result_Output(process_pointer **temp);
전체 프로세스를 실행시키고 난 다음에 Process 정보 (Pid, Arrival, Burst, Priority, Wait, Turnaround, Response Work, Remain) 출력.
void Sort(process_pointer **h, process_pointer **t, int algorithm);
Process를 arrive time, burst time, remain, priority 에 따라 정렬한다.
void Copynode(process_pointer *h, process_pointer *temp);
*h node의 정보를 *temp에 복사.
참고 자료
없음