Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save buixuanhai/934dc0e30c849af385112da7fc51df01 to your computer and use it in GitHub Desktop.
Save buixuanhai/934dc0e30c849af385112da7fc51df01 to your computer and use it in GitHub Desktop.
Hoang Trieu Lab6
#include <stdio.h>


void fifo(int chuoi_tham_chieu[], int size, int so_khung_trang)
{
    int z;
    for(z = 0; z < size; z++) {
        printf("%d ", chuoi_tham_chieu[z]);
    }
    
    printf("\n%d\n", size);
    printf("%d\n", so_khung_trang);
    
// 	int i, j, n, a[50], frames[5], frame, k, available, count = 0;
// 	printf(" \nNhập số phần tử chuỗi tham chiếu: \n");
// 	scanf("%d", &n);
// 	printf(" \nNhập vào chuỗi tham chiếu: \n");
// 	for (i = 1; i <= n; i++)
// 		scanf("%d", &a[i]);
// 	printf("\nNhập vào số khung trang :\n");
// 	scanf("%d", &frame);
// 	for (i = 0; i < frame; i++)
// 		frames[i] = -1; // Giả sử ban đầu các frame trống
// 	j = 0;
// 	printf("\t|Chuỗi|\t|Khung trang");
// 	for (k = 0; k < frame - 1; k++)
// 		printf("\t");
// 	printf("|\n");
// 	for (i = 1; i <= n; i++)
// 	{
// 		printf("\t| %d |\t", a[i]);
// 		available = 0; // trang không có sẵn
// 		for (k = 0; k < frame; k++)
// 			if (frames[k] == a[i]) // kiểm tra trang có sẵn
// 				available = 1;	 // trang có sẵn
// 		if (available == 0)		   // thay thế trang nếu không có sẵn
// 		{
// 			frames[j] = a[i];
// 			j = (j + 1) % frame;
// 			count++;
// 			printf("|");
// 			for (k = 0; k < frame; k++)
// 				printf("%d\t", frames[k]);
// 			printf("| F"); // Dấu hiệu nhận biết xảy ra lỗi trang
// 		}
// 		else
// 		{
// 			printf("|");
// 			for (k = 0; k < frame; k++)
// 				printf("%d\t", frames[k]);
// 			printf("|");
// 		}
// 		printf("\n");
// 	}
// 	printf("Số trang lỗi là: %d\n", count);
// 	return 0;
}

void otp(int chuoi_tham_chieu[], int size, int so_khung_trang) {
    
}

void lru(int chuoi_tham_chieu[], int size, int so_khung_trang) {
    
}


void chon_giai_thuat(int chuoi_tham_chieu[], int size, int so_khung_trang) {
    
    int choice;
	do
	{
		printf("-----Page Replacement algorithm-----\n");
		printf("1. Giải thuật FIFO\n");
		printf("2. Giải thuật OTP(optimal)\n");
		printf("3. Giải thuật LRU\n");
		printf("4. Exit\n");
		scanf("%d", &choice);

		switch (choice)
		{
		case 1:
			fifo(chuoi_tham_chieu, size, so_khung_trang);
			break;
		case 2: /*Call function here to do the required operation*/
		    otp(chuoi_tham_chieu, size, so_khung_trang);
			break;
		case 3: /*Call function here to do the required operation*/
	    	lru(chuoi_tham_chieu, size, so_khung_trang);
			break;
		case 4:
			break;
		default:
			printf("Wrong Choice. Enter again\n");
			break;
		}

	} while (choice != 4);
}


void nhap_so_khung_trang(int chuoi_tham_chieu[], int size) {
    printf("Nhập số khung trang\n");
    int so_khung_trang;
    scanf("%d", &so_khung_trang);
    
    chon_giai_thuat(chuoi_tham_chieu, size, so_khung_trang);
}

void nhap_chuoi_tham_chieu() {
    printf("Nhâp số lượng phần từ của chuỗi tham chiếu:\n");
     int size;
     int array[100];
     scanf("%d", &size);

     int a;
     
     for( a = 0; a < size; a = a + 1 ){
      scanf("%d", &array[a]);
     }

    nhap_so_khung_trang(array, size);
}


void printmenu()
{
	int choice;
	int size = 12;
	int chuoi_tham_chieu[] = {0, 2, 1, 6, 4, 0, 1, 0, 3, 1, 2, 1};

	do
	{
		printf("-----Page Replacement algorithm-----\n");
		printf("1. Chuỗi tham chiếu mặc định.\n");
		printf("2. Nhập chuỗi tham chiếu bằng tay\n");
		printf("3. Exit\n");
		scanf("%d", &choice);

		switch (choice)
		{
		case 1:
			nhap_so_khung_trang(chuoi_tham_chieu, 12);
			break;
		case 2:
			nhap_chuoi_tham_chieu();
			break;
		case 3:
			break;
		default:
			printf("Wrong Choice. Enter again\n");
			break;
		}

	} while (choice != 3);
}

void main()
{
	printmenu();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment