FIFO fifo算法模拟?操作系统先进先出和先来先服务(FCFS)有什么区别?
文章插图
本篇文章给大家谈谈fifo算法,以及fifo算法模拟对应的知识点,希望对各位有所帮助,不要忘了收藏本站!
内容导航:
- fifo算法怎么写
- FIFO算法的解释
- 操作系统先进先出(FIFO)和先来先服务(FCFS)有什么区别
- FIFO调度算法和LRU算法?
- FIFO和LRU小结
- FIFO算法(假定开始时先把1,2,3,4号页面装入内存)
用C语言编写简单的FIFO置换算法#include "stdio.h"
#include "malloc.h"
#define OK 1
#define ERROR 0
#define NULL 0
#define status int
typedef int Elemtype;
/*这个定义的是队列的元素的数据结构*/
typedef struct tailDATA{
Elemtype data;/*这个存放的是队列元素的值*/
struct tailDATA *next;//指向下一个元素
}datatail,*map;
/*以下定义的是队列头的数据结构*/
typedef struct Tail{
/*说明:对队列进行操作的时候,插入的时候是对front操作,删除*/
Elemtype data;/*这个记载的是队列的元素的个数*/
map front;/*这个是队列的头*/
map rear;/*这个是队列的尾*/
}tail,*mappath;
/*以下定义的就是操作了,初始话的操作就不想做了,直接写个插入和删除等的一些的算法就可以了*/
status inserttail(mappath &T,map P)
{/*这个函数的功能是将一个个已知的元素插入队列中*/
if(T==NULL)
{
T=(mappath)malloc(sizeof(tail));
T->data=https://www.08ts.cn/0;
T->front=NULL;
T->rear=NULL;
}
if(!P) return OK;
T->rear->next=P;
T->rear=P;
if(!(T->front)) T->front=P;
return OK;
}
status insertdatatail(mappath &T,int a)
{/*这个函数将一个元素插入队列中,其实这个函数是没有必要的,但是为了方便起见,还是写了个*/
if(T==NULL)
{
T=(mappath)malloc(sizeof(tail));
T->data=https://www.08ts.cn/0;
T->front=NULL;
T->rear=NULL;
map linshi=(map)malloc(sizeof(datatail));
linshi->data=https://www.08ts.cn/a;
linshi->next=NULL;
【FIFO fifo算法模拟?操作系统先进先出和先来先服务(FCFS)有什么区别?】T->front=linshi;
T->rear=linshi;
T->data=https://www.08ts.cn/1;
return OK;
}
map linshi=(map)malloc(sizeof(datatail));
linshi->data=https://www.08ts.cn/a;
linshi->next=NULL;
T->rear->next=linshi;
T->rear=linshi;
if(!(T->front)) T->front=linshi;
T->data++;
return OK;
}
status deltail(mappath &T)
{/*因为对队列进行删除操作的时候,基本上是没有什么条件,就是对front做一些相应的操作就可以了
,所以他的函数列表也就比较少了*/
if(!T) return ERROR;/*如果队列本来就是空的,那么就返回一个错误的信息*/
if(T->front==T->rear)
{/*如果队列只有一个元素,就执行下面的操作,防止出现了错误*/
map linshi=T->front;
free(linshi);
T->data=https://www.08ts.cn/0;
T->front=NULL;
T->rear=NULL;
return OK;
}
map linshi=T->front;
T->front=T->front->next;
T->data--;
free(linshi);
return OK;
}
status puttail(mappath T)
{/*这个是对一个已经存在的队列进行输出*/
if(!T) return ERROR;
printf("the tail'count is %d
",T->data);
int count=T->data;map q=T->front;
for(int i=0;i<count;i++)
{
printf("%d",q->data);
q=q->next;
}
return OK;
}
int main()
{
printf("hello,world!
");
mappath q=NULL;int count1=0;int dataa=0;
printf("please input a number to the count of tail
");
scanf("%d",&count1);
for(int i=0;i<count1;i++)
{
printf("please input a number to tail
");
scanf("%d",&dataa);
insertdatatail(q,dataa);
}
puttail(q);
deltail(q);
puttail(q);
return 0;
}
Q2:FIFO算法的解释
/*我知道FIFO算法的原理,可还是不理解这代码,哪位高手指教下各个程序段的意思啊?不胜感激! */
#include <stdio.h>
#include <stdlib.h>
#define mSIZE 3//分配三个内存页框
#define pSIZE 12//总共12个进程
static int memery[mSIZE] = {0};
static int process[pSIZE] = {1,2,3,4,1,2,5,1,2,3,4,5};//页面访问序列
void FIFO();
int main()
{
get();
printf("
(FIFO)\tcount
");
FIFO();
推荐阅读
- 反向传播算法过程 什么事反向传播算法
- 图像识别算法的核心技术~人脸识别的识别算法
- seo的意思是什么,搜索引擎seo算法介绍
- seo好做吗,seo工作前景分析
- 排名点击算法和链接算法 seo算法分享
- 微美全息研究基于多视图的三维重建算法
- 人工智能图像识别技术原理,图像识别的算法是什么
- 关键词密度算法,网站关键词密度多少合适
- fifo原则?fifo管理是指什么?
- 人脸算法最佳综述 人脸检测综述