资源简介
该源代码是操作系统大作业,里面有作业要求,反正呢几种内存替换算法,有SC,ESC,ARB,EARB
代码片段和文件信息
#include “stdio.h“
#include
#include
#include
#define FILENAME_LEN 35
#define MAX_TRACE_LEN 1000000
#define D 1
/*data struct which is use for read trace file*/
typedef struct Trace {
unsigned int address;
char mode;
}Trace;
/*data struct which is use for a memory informarion*/
typedef struct Memory{
unsigned int page;
char mode;
int refe;
int arravl_time;
}Memory;
/*data struct which is use for page queue*/
typedef struct Page {
unsigned int page;
char mode;
}Page;
/*
* convert a hex char to int range in 0~15
* */
int c2i(char ch);
/*
* convert a hex string to int
* */
int hex2dec(char *hex);
/*read the trace file to Trace array*/
void read_trace_file(FILE *in Trace *tint *t_size);
/*calculate the ref bit of m*/
int refForEarb(Memory m);
int main(int argcchar** argv)
{
if (argc != 5 && argc!=6) {
printf(“argument numbers error!/n“);
return -1;
}
//argument convert
char *in = argv[1];
int pagesize = atoi(argv[2]);
int numpage = atoi(argv[3]);
char *algname = argv[4];
//variable
FILE *trace *detailed;
Trace *t = (Trace*)malloc(MAX_TRACE_LEN*sizeof(Trace)); /*read file buffer*/
int t_size; /*trace data size*/
int read_count = 0 write_count = 0; /*reault count*/
trace = fopen(in “r“);
if (trace == NULL) {
printf(“open file error!/n“);
return -1;
}
//read trace file
read_trace_file(tracet&t_size);
//init page queue and memory array
Memory *memory = malloc(numpage * sizeof(Memory));
Page *pages = malloc(t_size * sizeof(Page));
int mem_p=0; /*current memory pointer*/
/*/init page queue*/
for (int i = 0; i < t_size; ++i)
{
pages[i].page = t[i].address / pagesize; /*calculate the address is in which page*/
pages[i].mode = t[i].mode;
}
/*init memory array*/
for (int i=0;i {
memory[i].page = -1;
memory[i].refe = -1; /*-1 is no page in this memory*/
memory[i].mode = 0;
memory[i].arravl_time = 0;
}
free(t);
if (strcmp(algname“SC“)==0)
{
char de[FILENAME_LEN];
strcpy(de in) strcat(de “_SC.detailed“);
detailed = fopen(de “w“);
for (int i=0;i {
int hit = 0; /*hit flag*/
for (int j=0;j {
//HIT
if (memory[j].refe !=-1 && memory[j].page == pages[i].page)
{//hit this page
fprintf( detailed“HIT: page %d\n“ pages[i].page);
/*if hit a no dirty memory change memory state*/
if (memory[j].mode == ‘R‘)
memory[j].mode = pages[i].mode;
memory[j].refe = 1;
hit = 1;
break;
}
}
if(hit==1) /*if hit this pageskip to next page*/
continue;
/*if not hit do following coderead_count +1*/
fprintf( detailed “MISS: page %d\n“ pages[i].page);
++read_count;
if (memory[mem_p].refe == -1)
{/*if the memory no dataadd page to this memory*/
memory[mem_p].page = pages[i].page;
memor
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13013 2018-10-11 16:10 memsim(1).c
文件 10922 2018-10-11 16:46 memsim.c
目录 0 2018-10-11 16:57 作业要求\
文件 107404 2018-09-27 19:48 作业要求\example file 总览.pdf
目录 0 2018-10-11 16:57 作业要求\example input files\
文件 14340 2018-09-27 19:53 作业要求\example input files\.DS_Store
目录 0 2018-10-11 16:57 作业要求\example input files\example input 1/output 1\
文件 6148 2018-09-27 19:45 作业要求\example input files\example input 1/output 1\.DS_Store
文件 221 2018-09-27 19:41 作业要求\example input files\example input 1/output 1\input1.trace
文件 68 2018-09-27 19:42 作业要求\example input files\example input 1/output 1\input1_4096_8_ARB_2.expected
文件 68 2018-09-27 19:46 作业要求\example input files\example input 1/output 1\input1_4096_8_EARB_2.expected
文件 68 2018-09-27 19:47 作业要求\example input files\example input 1/output 1\input1_4096_8_ESC.expected
文件 68 2018-09-27 19:41 作业要求\example input files\example input 1/output 1\input1_4096_8_SC.expected
文件 566 2018-09-27 19:43 作业要求\example input files\example input 1/output 1\input1_ARB.detailed
文件 542 2018-09-27 19:43 作业要求\example input files\example input 1/output 1\input1_EARB.detailed
文件 558 2018-09-27 19:43 作业要求\example input files\example input 1/output 1\input1_ESC.detailed
文件 582 2018-09-27 19:43 作业要求\example input files\example input 1/output 1\input1_SC.detailed
目录 0 2018-10-11 16:57 作业要求\example input files\example input 2/output 2\
文件 6148 2018-09-27 19:51 作业要求\example input files\example input 2/output 2\.DS_Store
文件 220 2018-09-27 19:49 作业要求\example input files\example input 2/output 2\input2.trace
文件 68 2018-09-27 19:50 作业要求\example input files\example input 2/output 2\input2_4096_8_ARB_1.expected
文件 68 2018-09-27 19:50 作业要求\example input files\example input 2/output 2\input2_4096_8_EARB_1.expected
文件 68 2018-09-27 19:50 作业要求\example input files\example input 2/output 2\input2_4096_8_ESC.expected
文件 68 2018-09-27 19:49 作业要求\example input files\example input 2/output 2\input2_4096_8_SC.expected
文件 513 2018-09-27 19:50 作业要求\example input files\example input 2/output 2\input2_ARB.detailed
文件 489 2018-09-27 19:50 作业要求\example input files\example input 2/output 2\input2_EARB.detailed
文件 529 2018-09-27 19:50 作业要求\example input files\example input 2/output 2\input2_ESC.detailed
文件 537 2018-09-27 19:50 作业要求\example input files\example input 2/output 2\input2_SC.detailed
目录 0 2018-10-11 16:57 作业要求\example input files\example input 3_output 3\
文件 6148 2018-09-27 19:52 作业要求\example input files\example input 3_output 3\.DS_Store
文件 440 2018-09-27 19:51 作业要求\example input files\example input 3_output 3\input3.trace
............此处省略57个文件信息
评论
共有 条评论