목차
1. 목 적
2. 프로그램화면 설명
① 처음 프로그램 실행시
② data파일을 로딩했을시
③ Detect 버튼을 눌렀을시
3. 제한 사항 및 기타
4. 소스코드
① 프로그램시 필요한 전역변수들
② 프로세스가 reduction이 가능한지 테스트 하는 루틴
③ 프로세스를 삭제하기 위한 루틴 (이 루틴 안에서 ReductionTest() 호출)
④ 화면에 그래프를 나타내는 함수
⑤ Data파일 입력 루틴
5. 다른 실행결과
2. 프로그램화면 설명
① 처음 프로그램 실행시
② data파일을 로딩했을시
③ Detect 버튼을 눌렀을시
3. 제한 사항 및 기타
4. 소스코드
① 프로그램시 필요한 전역변수들
② 프로세스가 reduction이 가능한지 테스트 하는 루틴
③ 프로세스를 삭제하기 위한 루틴 (이 루틴 안에서 ReductionTest() 호출)
④ 화면에 그래프를 나타내는 함수
⑤ Data파일 입력 루틴
5. 다른 실행결과
본문내용
FILE *fp;
char buffer[100], ct[]= " ,\t\n";
if((fp = fopen(strFilename,"r")) == NULL)
return false;
fgets(buffer,150,fp);
a = (int)atof(strtok(buffer,ct)); //resource의 개수 읽어들임
b = (int)atof(strtok(NULL,ct)); //process의 개수 읽어들임
resourcenum = new int[a];
//각각의 resource의 UNIT개수를 저장하기위해 resource개수만큼
동적배열할당
currentnum = new int[a];
//각각의 resource의 현재 사용가능한 UNIT개수를 저장하기위해
resource개수만큼 동적배열할당
ProcessReduct = new bool[b];
//Process가 reduction되었는지 나타내는 동적배열
arraypointer1 = new int*[b];
//입력데이터에서 allocation행렬을 저장하기위한 2차원배열의
//각각의 행을 나타내는 포인터 배열 (동적할당)
arraypointer2 = new int*[b];
//입력데이터에서 request행렬을 저장하기위한 2차원배열의
//각각의 행을 나타내는 포인터 배열 (동적할당)
for (int i = 0 ; i < b ; ++i ) {
arraypointer1[i] = new int[a];
arraypointer2[i] = new int[a];
} //for
//위에서 지정한 각각의 행에 resource개수 만큼의 배열을 할당
fgets(buffer,150,fp);
resourcenum[0] = (int)atof(strtok(buffer,ct));
currentnum[0] = resourcenum[0];
for ( i = 1 ; i < a ; ++i) {
resourcenum[i] = (int)atof(strtok(NULL,ct));
currentnum[i] = resourcenum[i];
} //데이터 파일에서 리소스 UNIT의 개수를 읽어들임
fgets(buffer,150,fp); //빈줄은 넘어감
for ( i = 0 ; i < b ; ++i ) {
fgets(buffer,150,fp);
arraypointer1[i][0] = (int)atof(strtok(buffer,ct));
for (int j = 1 ; j < a ; ++j)
arraypointer1[i][j] = (int)atof(strtok(NULL,ct));
} //데이터 파일에서 첫번째 allocation행렬을 읽어서
//2차원배열에 저장
fgets(buffer,150,fp); //두번째 행렬 사이의 한줄을 읽음 ;
for ( i = 0 ; i < b ; ++i ) {
fgets(buffer,150,fp);
arraypointer2[i][0] = (int)atof(strtok(buffer,ct));
for (int j = 1 ; j < a ; ++j)
arraypointer2[i][j] = (int)atof(strtok(NULL,ct));
} //데이터 파일에서 두번째 request행렬을 읽어서
//2차원배열에 저장
for (i = 0 ; i < a ; ++i)
for (int j = 0 ; j < b ; ++j) {
currentnum[i] = ( currentnum[i] - arraypointer1[j][i] );
} //현재 각 리소스의 이용가능한 리소스 UNIT개수를 계산하여
currentnum배열에 저장 (total number에서 프로세스에 할당된
모든 자원의 수를 빼줌)
for (i = 0 ; i < b ; ++i )
ProcessReduct[i] = false;
//프로세스 reduction 배열은 초기에 모두 false로 세팅
fclose(fp);
return true;
}
char buffer[100], ct[]= " ,\t\n";
if((fp = fopen(strFilename,"r")) == NULL)
return false;
fgets(buffer,150,fp);
a = (int)atof(strtok(buffer,ct)); //resource의 개수 읽어들임
b = (int)atof(strtok(NULL,ct)); //process의 개수 읽어들임
resourcenum = new int[a];
//각각의 resource의 UNIT개수를 저장하기위해 resource개수만큼
동적배열할당
currentnum = new int[a];
//각각의 resource의 현재 사용가능한 UNIT개수를 저장하기위해
resource개수만큼 동적배열할당
ProcessReduct = new bool[b];
//Process가 reduction되었는지 나타내는 동적배열
arraypointer1 = new int*[b];
//입력데이터에서 allocation행렬을 저장하기위한 2차원배열의
//각각의 행을 나타내는 포인터 배열 (동적할당)
arraypointer2 = new int*[b];
//입력데이터에서 request행렬을 저장하기위한 2차원배열의
//각각의 행을 나타내는 포인터 배열 (동적할당)
for (int i = 0 ; i < b ; ++i ) {
arraypointer1[i] = new int[a];
arraypointer2[i] = new int[a];
} //for
//위에서 지정한 각각의 행에 resource개수 만큼의 배열을 할당
fgets(buffer,150,fp);
resourcenum[0] = (int)atof(strtok(buffer,ct));
currentnum[0] = resourcenum[0];
for ( i = 1 ; i < a ; ++i) {
resourcenum[i] = (int)atof(strtok(NULL,ct));
currentnum[i] = resourcenum[i];
} //데이터 파일에서 리소스 UNIT의 개수를 읽어들임
fgets(buffer,150,fp); //빈줄은 넘어감
for ( i = 0 ; i < b ; ++i ) {
fgets(buffer,150,fp);
arraypointer1[i][0] = (int)atof(strtok(buffer,ct));
for (int j = 1 ; j < a ; ++j)
arraypointer1[i][j] = (int)atof(strtok(NULL,ct));
} //데이터 파일에서 첫번째 allocation행렬을 읽어서
//2차원배열에 저장
fgets(buffer,150,fp); //두번째 행렬 사이의 한줄을 읽음 ;
for ( i = 0 ; i < b ; ++i ) {
fgets(buffer,150,fp);
arraypointer2[i][0] = (int)atof(strtok(buffer,ct));
for (int j = 1 ; j < a ; ++j)
arraypointer2[i][j] = (int)atof(strtok(NULL,ct));
} //데이터 파일에서 두번째 request행렬을 읽어서
//2차원배열에 저장
for (i = 0 ; i < a ; ++i)
for (int j = 0 ; j < b ; ++j) {
currentnum[i] = ( currentnum[i] - arraypointer1[j][i] );
} //현재 각 리소스의 이용가능한 리소스 UNIT개수를 계산하여
currentnum배열에 저장 (total number에서 프로세스에 할당된
모든 자원의 수를 빼줌)
for (i = 0 ; i < b ; ++i )
ProcessReduct[i] = false;
//프로세스 reduction 배열은 초기에 모두 false로 세팅
fclose(fp);
return true;
}
소개글