사용한 개발 툴 : Microsoft Visual Studio 6.0
특징 : 라운드로빈 스케줄링, GUI, 파일처리, 구조체

GUI를 위해

void gotoxy(int x, int y)
{
 COORD Cur; Cur.X = x; Cur.Y = y;
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur);
}
void PrintSquare(int x1, int y1, int x2, int y2)
{
 int i;
 // 사각형의 각 모서리를 먼저 그리고,
 gotoxy(x1, y1);
 printf("┏");
 gotoxy(x2, y1);
 printf("┓");
 gotoxy(x1, y2);
 printf("┗");
 gotoxy(x2, y2);
 printf("┛");
 // 윗변과 아랫변(가로 부분을 그림) "━"게 2바이트를 차기 하 기 때문에 I의 증가값을 2
 for (i=2; i < (x2-x1); i += 2)
 {
  gotoxy(x1 + i, y1);
  printf("━");
  gotoxy(x1 + i, y2);
  printf("━");
 }
 // "┃"는 1바이트를 차기 하기 때문에 증가값을 1
 for (i=1; i< y2-y1; i++)
 {
  gotoxy(x1, y1+i);
  printf("┃");
  gotoxy(x2, y1+i);
  printf("┃");
 }
}
//메시지를 출력
void OpeningMessage(int x, int y)
{
 int i;
 gotoxy(x, y);
 printf("Waiting simulation...\n");
 gotoxy(x, y+1);
 for (i=0; i<12; i++)
 {
  printf("■");
  Sleep(400);
 } }

이렇게 프로세스 GUI 생성~

파일처리

void openfile(){ // 파일 열기
 int n =0; // 버퍼수 
 int i = 0;
 char *buff;
 FILE *f;
 
 char fname[] = "process.dat"; 
 if ( (f = fopen(fname, "r")) == NULL){
  printf("파일이 열리지 않습니다.\n");
  exit(1);
 };
 
 while(!feof(f)){
  fscanf(f, "%d", &buff);
  n++;
 }
 num = n/2;
 rewind(f);
 p =(P *)malloc( sizeof(P)*num);
 for(i = 0; i <num ; i++){
  fscanf(f, "%d %d", &p[i].arrive_time, &p[i].burst_time);
  if(p[i].arrive_time <p[i-1].arrive_time){
   num = i;
   break;
  }
  p[i].copy_burst_time=p[i].burst_time;
 }
 fclose(f);
 
}


구조체

typedef struct process {
 int burst_time; // 버스트 타임
 int copy_burst_time;
 int arrive_time; //도착 시간
}P; // 프로세스에 관한 구조체
P *p;
typedef struct ready_queue{
 int remain_time; //남은 시간
 int end_time; // 끝난 시간
}Q;
Q *q;
Q *chart;

Posted by 검지발가락♡