사용한 개발 툴 : Microsoft Visual Studio 6.0
특징 : 라운드로빈 스케줄링, GUI, 파일처리, 구조체
구조체
typedef struct process {
특징 : 라운드로빈 스케줄링, 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 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(){ // 파일 열기
}
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{
P *p;
typedef struct ready_queue{
int remain_time; //남은 시간
int end_time; // 끝난 시간
}Q;
Q *q;
Q *chart;
Q *q;
Q *chart;
'공대생의 일기 > 2008年 2학기' 카테고리의 다른 글
[데이터베이스]ER다이어그램 (0) | 2010.12.20 |
---|---|
[데이터베이스] SQL 연습 (0) | 2010.12.20 |
[운영체제]운영체제 정리 (0) | 2010.12.20 |
[객체지향프로그래밍]JAVA (0) | 2010.12.20 |