⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vm_fifo.c

📁 操作系统实验:模拟LINUX操作系统的虚存管理机制
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include "vm_global.h"

int main()
{
	FILE *fp;
	int write_num,i=0,n=0;
	char c;
	printf("How many requests do you want? ");
	scanf("%d",&n);
	srand(time(NULL));
	MemoryAccessRequestPtr mem_request0;
	mem_request0=(MemoryAccessRequestPtr)malloc(sizeof(MemoryAccessRequest));
	//mkfifo(FIFO,S_IFIFO|0666,0);
	while(i<n)
	{
		if((fp=fopen(FIFO,"a+"))==NULL)
		{
			//handle_error(FILE_OPEN_FAILED);
			exit(1);
		}
		do_request(mem_request0);
		printf("Success request : %d\n",++i);
		write_num=fwrite(mem_request0,sizeof(MemoryAccessRequest),1,fp);
	}
	fclose(fp);
    return 0;
}
void do_request(MemoryAccessRequestPtr mem_request)
{
	
	mem_request->virtual_address=rand()%VIRTUAL_MEMORY_SIZE;

	switch (rand()%3)
	{
		case 0:			/*读请求*/
			mem_request->request_type=READ;
			printf("Produce request:\nAddress:%u\tType:read\n",mem_request->virtual_address);
			break;
		case 1:			/*写请求*/
			mem_request->request_type=WRITE;
			mem_request->value=rand()%MAX_VALUE;
			printf("Produce request:\nAddress:%u\tType:write\tvalue:%02X\n",mem_request->virtual_address,mem_request->value);
			break;
		case 2:			/*执行请求*/
			mem_request->request_type=EXECUTE;
			printf("Produce request:\nAddress:%u\tType:execute\n",mem_request->virtual_address);
			break;
		default:
			break;
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -