关于进程的题目!嵌入式考试啊!编写程序实现如下功能:

关于进程的题目!嵌入式考试啊!编写程序实现如下功能:,第1张

readerc

char buf[128];

char fifo_name[] = "/home/linux/myfifo";

write_fd = open(fifo_name, O_WRONLY);

if(write_fd == -1)

{

printf("Fail to open FIFO\n");

exit(-1);

}

FILE r_fd = fopen(argv[1], "r+");

while(1)

{

sleep(1);

fgets(buf,128, r_fd);

write(write_fd, buf, strlen(buf));

}

writerc

int w_fd,len;

char buf[128];

char fifo_name[] = "/home/linux/myfifo";

read_fd = open(fifo_name, O_WRONLY);

if(read_fd == -1)

{

printf("Fail to open FIFO\n");

exit(-1);

}

w_fd = open(argv[1], O_WRONLY);

while(1)

{

sleep(1);

len = read(read_fd, buf, strlen(buf))

write(w_fd, buf, len);

}

自己可以再看看文件读写的资料,有多种方式

这可是hen宝贵的啊

#include

#include

#include

#include

#define Bsize 4

typedef struct BLOCK//声明一种新类型——物理块类型

{

int pagenum;//页号

int accessed;//访问字段,其值表示多久未被访问

}BLOCK;

int pc;//程序计数器,用来记录指令的序号

int n;//缺页计数器,用来记录缺页的次数

static int temp[320];//用来存储320条随机数

BLOCK block[Bsize]; //定义一大小为4的物理块数组

//

void init( ); //程序初始化函数

int findExist(int curpage);//查找物理块中是否有该页面

int findSpace( );//查找是否有空闲物理块

int findReplace( );//查找应予置换的页面

void display ( );//显示

void suijishu( );//产生320条随机数,显示并存储到temp[320]

void pagestring( );//显示调用的页面队列

void OPT( );//OPT算法

void LRU( );// LRU算法

void FIFO( );//FIFO算法

//

void init( )

{

for(int i=0;i<Bsize;i++)

{

block[i]pagenum=-1;

block[i]accessed=0;

pc=n=0;

}

}

//-------------------------------------------------------------

int findExist(int curpage)

{

for(int i=0; i<Bsize; i++)

{

if(block[i]pagenum == curpage )

return i;//检测到内存中有该页面,返回block中的位置

}

return -1;

}

//-------------------------------------------------------------

int findSpace( )

{

for(int i=0; i<Bsize; i++)

{

if(block[i]pagenum == -1)

return i;//找到空闲的block,返回block中的位置

}

return -1;

}

//-------------------------------------------------------------

int findReplace( )

{

int pos = 0;

for(int i=0; i<Bsize; i++)

{

if(block[i]accessed >block[pos]accessed)

pos = i;//找到应予置换页面,返回BLOCK中位置

}

return pos;

}

//-------------------------------------------------------------

void display( )

{

for(int i=0; i<Bsize; i++)

{

if(block[i]pagenum != -1)

{ printf(" %02d",block[i]pagenum);}

}

cout<<endl;

}

//-------------------------------------------------------------

void suijishu( )

{ int flag=0;

cin>>pc;

cout<<"按照要求产生的320个随机数:"<<endl;

for(int i=0;i<320;i++)

{

temp[i]=pc;

if(flag%2==0) pc=++pc%320;

if(flag==1) pc=rand( )% (pc-1);

if(flag==3) pc=pc+1+(rand( )%(320-(pc+1)));

flag=++flag%4;

printf(" %03d",temp[i]);

if((i+1)%10==0) cout<<endl;

}

}

//-------------------------------------------------------------

void pagestring( )

{

for(int i=0;i<320;i++)

{

printf(" %02d",temp[i]/10);

if((i+1)%10==0) cout<<endl;

}

}

//-------------------------------------------------------------

void OPT( )

{

int exist,space,position ;

int curpage;

for(int i=0;i<320;i++)

{

if(i%100==0) getch( );

pc=temp[i];

curpage=pc/10;

exist = findExist(curpage);

if(exist==-1)

{

space = findSpace ( );

if(space != -1)

{

block[space]pagenum = curpage;

display( );

n=n+1;

}

else

{

for(int k=0;k<Bsize;k++)

{

for(int j=i;j<320;j++)

{

if(block[k]pagenum!= temp[j]/10)

{

block[k]accessed = 1000;

}//将来不会用,设置为一个很大数

else

{

block[k]accessed = j;

break;

}

}

}

position = findReplace( );

block[position]pagenum = curpage;

display( );

n++;

}

}

}

cout<<"缺页次数:"<<n<<endl;

cout<<"缺页率:"<<(n/3200)100<<"%"<<endl;

}

//-------------------------------------------------------------

void LRU( )

{

int exist,space,position ;

int curpage;

for(int i=0;i<320;i++)

{

if(i%100==0) getch( );

pc=temp[i];

curpage=pc/10;

exist = findExist(curpage);

if(exist==-1)

{

space = findSpace( );

if(space != -1)

{

block[space]pagenum = curpage;

display( );

n=n+1;

}

else

{

position = findReplace( );

block[position]pagenum = curpage;

display( );

n++;

}

}

else block[exist]accessed = -1;//恢复存在的并刚访问过的BLOCK中页面accessed为-1

for(int j=0; j<4; j++)

{block[j]accessed++;}

}

cout<<"缺页次数:"<<n<<endl;

cout<<"缺页率:"<<(n/3200)100<<"%"<<endl;

}

//-------------------------------------------------------------

void FIFO( )

{

int exist,space,position ;

int curpage;

for(int i=0;i<320;i++)

{

if(i%100==0) getch( );

pc=temp[i];

curpage=pc/10;

exist = findExist(curpage);

if(exist==-1)

{

space = findSpace( );

if(space != -1)

{

block[space]pagenum = curpage;

display( );

n=n+1;

}

else

{

position = findReplace( );

block[position]pagenum = curpage;

display( );

n++;

block[position]accessed--;

}

}

for(int j=0; j<Bsize; j++)

block[j]accessed++;

}

cout<<"缺页次数:"<<n<<endl;

cout<<"缺页率:"<<(n/3200)100<<"%"<<endl;

}

//

void main( )

{

int select;

cout<<"请输入第一条指令号(0~320):";

suijishu( );

cout<<"对应的调用页面队列"<<endl;

pagestring( );

do

{

cout<<""<<endl;

cout<<"------1:OPT 2:LRU 3:FIFO 4:退出-----"<<endl;

cout<<""<<endl;

cout<<" 请选择一种页面置换算法:";

cin>>select;

cout<<""<<endl;

init( );

switch(select)

{

case 1:cout<<"最佳置换算法OPT:"<<endl;

cout<<""<<endl;

OPT( );

break;

case 2:cout<<"最近最久未使用置换算法LRU:"<<endl;

cout<<""<<endl;

LRU( );

break;

case 3:cout<<"先进先出置换算法FIFO:"<<endl;

cout<<""<<endl;

FIFO( );

break;

default: ;

}

}while(select!=4);

}

你试试可以不,应该没问题的

要注意这是用C++编写的,你改一下就可以用了

以上就是关于关于进程的题目!嵌入式考试啊!编写程序实现如下功能:全部的内容,包括:关于进程的题目!嵌入式考试啊!编写程序实现如下功能:、C语言模拟FIFO算法,随机生成320条指令,有四块物理块,为什么错了、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9683798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存