운영 체제 실험 4 페이지 교체 알고리즘 (fifo 알고리즘 코드 --- 페이지 교체 코드 집합)

실험 4 기억 장치 관리
하나     실험 목적
1.       연속 저장 관리 방식 의 원리 와 분 류 를 이해 하 다. 
2.       분 산 된 저장 관리 방식 의 원리 와 분 류 를 이해 하 다.
3.       가상 메모리 의 원리 와 분 류 를 이해 하 다.
4.       동적 구역 분배 의 상용 알고리즘 을 파악 하 다.
5.       페이지 가상 관리 에서 자주 사용 하 는 페이지 교체 알고리즘 을 파악 합 니 다. 
둘째,     실험 설비
1.     윈도 우즈 나 linux 운영 체 제 를 설치 한 PC 기기
2.     C 프로그램 컴 파일 환경
셋째,     실험 내용
C 언어 프로 그래 밍 시 뮬 레이 션 으로 하나 이상 의 동적 분할 알고리즘 이나 페이지 교체 알고리즘 을 실현 합 니 다.흔히 볼 수 있 는 동적 파 티 션 할당 알고리즘 은 최초 적응 알고리즘, 순환 최초 적응 알고리즘, 최 적 적응 알고리즘, 최 악의 적응 알고리즘 등 이 있 으 며, 흔히 볼 수 있 는 페이지 치환 알고리즘 은 선진 선 출 (FIFO) 페이지 치환 알고리즘, 최근 가장 오랫동안 사용 되 지 않 은 (LRU) 치환 알고리즘, 최소 사용 (LFU) 치환 알고리즘 등 이 있다.
넷,     실험 요구
1.     동적 파 티 션 할당 알고리즘 (또는 페이지 교체 알고리즘) 을 작성 하고 디 버 깅 하 는 아 날로 그 프로그램 입 니 다.
2.     해당 프로그램 코드 와 프로그램 실행 결 과 를 실험 보고서 에 기록 해 야 합 니 다.
 선진 선 출 (FIFO) 페이지 교체 알고리즘
#include "stdio.h"

#include "stdlib.h"

#include "math.h"

#include "conio.h"

#include "time.h"

#define TRUE 1

#define FALSE 0

#define NULL 0

#define total_instruction 20

#define total_vp 10

typedef struct

{ int pn,pfn;

}pv_type;

pv_type pv[10];

typedef struct pf_struct

{ int pn,pfn;

struct pf_struct *next;

}pf_type;

pf_type pf[20],*free_head,*busy_head,*busy_tail,*q;

int page[total_instruction];

int total_pf;

int count;

void initialiaze()

{ int i;

count=0;

for(i=0;ipfn,busy_head->pn);

p=busy_head->next;

pv[busy_head->pn].pfn=-1;

free_head=busy_head;

free_head->next=NULL;

busy_head=p;

}

p=free_head->next;

free_head->next=NULL;

free_head->pn=page[i];

pv[page[i]].pfn=free_head->pn;

if(busy_tail==NULL)

busy_head=busy_tail=free_head;

else

{ busy_tail->next=free_head;

busy_tail=free_head;

}

free_head=p;

}

else printf("  ,      ,  count=%d",count);

printf("
pfn pn"); for(j=0;j<=total_pf-1;j++) {if(pf[j].pn!=-1) printf("
%d%8d",pf[j].pfn,pf[j].pn); } } printf("
:%6.4f
%d
",1-(float)count/20,count); } int main() { srand((unsigned)time(NULL)); initialiaze(); FIFO(); return 0;

} (FIFO) 、 (LRU) 、 (LFU) 。

#include 
#include 
/*È«¾Ö±äÁ¿*/
int mSIZE; /*ÎïÀí¿éÊý*/
int pSIZE; /*Ò³ÃæºÅÒýÓô®¸öÊý*/
static int memery[10]={0}; /*ÎïÀí¿éÖеÄÒ³ºÅ*/
static int page[100]={0}; /*Ò³ÃæºÅÒýÓô®*/
static int temp[100][10]={0}; /*¸¨ÖúÊý×é*/
/*Öû»Ëã·¨º¯Êý*/
void FIFO();
void LRU();
void OPT();
/*¸¨Öúº¯Êý*/
void print(unsigned int t);
void designBy();
void download();
void mDelay(unsigned int Delay);
/*Ö÷º¯Êý*/
int main()
{
    int i,k,code;
	system("color 0A");
	designBy();
	printf("©§Çë°´ÈÎÒâ¼ü½øÐгõʼ»¯²Ù×÷...                       ©§
"); printf("©»©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¿
"); printf(" >>>"); getchar(); system("cls"); system("color 0B"); printf("ÇëÊäÈëÎïÀí¿éµÄ¸öÊý(M<=10)£º"); scanf("%d",&mSIZE); printf("ÇëÊäÈëÒ³ÃæºÅÒýÓô®µÄ¸öÊý(P<=100)£º"); scanf("%d",&pSIZE); puts("ÇëÒÀ´ÎÊäÈëÒ³ÃæºÅÒýÓô®(Á¬ÐøÊäÈ룬ÎÞÐè¸ô¿ª)£º"); for(i=0;i>>"); getchar(); system("cls"); }while (code!=4); getch(); return 0; } /*ÔØÈëÊý¾Ý*/ void download() { int i; system("color 0D"); printf("¨X¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨[
"); printf("¨UÕýÔÚÔØÈëÊý¾Ý£¬ÇëÉÔºò !!!¨U
"); printf("¨^¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨a
"); printf("Loading...
"); printf(" O"); for(i=0;i<51;i++) printf("\b"); for(i=0;i<50;i++) { mDelay((pSIZE+mSIZE)/2); printf(">"); } printf("
Finish.
ÔØÈë³É¹¦£¬°´ÈÎÒâ¼ü½øÈëÖû»Ë㷨ѡÔñ½çÃ棺>>>"); getchar(); } /*ÉèÖÃÑÓ³Ù*/ void mDelay(unsigned int Delay) { unsigned int i; for(;Delay>0;Delay--) { for(i=0;i<124;i++) { printf(" \b"); } } } /*ÏÔʾÉè¼ÆÕßÐÅÏ¢*/ void designBy() { printf("©³©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©·
"); printf("©§ ʵÑéËÄ£ºÒ³ÃæÖû»Ëã·¨ ©§
"); printf("©§ °à¼¶£º ©§
"); printf("©§ ÐÕÃû£ºÕÅͬѧ ©§
"); printf("©Ç©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©Ï
"); } void print(unsigned int t) { int i,j,k,l; int flag; for(k=0;k<=(pSIZE-1)/20;k++) { for(i=20*k;(i=j) printf(" |%d|",temp[i][j]); else printf(" | |"); } for(i=mSIZE+20*k;(i=next[1]?0:1; for(m=2;mnext[max]) max=m; /*ÏÂÒ»´Î·ÃÎÊʱ¼ä¶¼ÎªpSIZE,ÔòÖû»ÎïÀí¿éÖеÚÒ»¸ö*/ memery[max]=page[i]; for(j=0;j

좋은 웹페이지 즐겨찾기