如何用java实现fifo页面置换算法

如何用java实现fifo页面置换算法,第1张

[fifo.rar] - *** 作系统中内存页面的先进先出的替换算法fifo

[先进先出页面算法程序.rar] - 分别实现最佳置换算法(optimal)、先进先出(fifo)页面置换算法和最近最久未使用(LRU)置换算法,并给出各算法缺页次数和缺页率。

[0022.rar] - 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断

[Change.rar] - 用java实现 *** 作系统的页面置换 其中包括 最佳置换算法(Optimal)、先进先出算法(First-in, First-out) 、最近最久不用的页面置换算法(LeastRecently Used Replacement)三种算法的实现

[M_Management.rar] - *** 作系统中内存管理页面置换算法的模拟程序,采用的是LRU置换算法

[detail_of_44b0x_TCPIP.rar] - TCPIP 程序包加载到44b0x 的ADS1.2工程文件的说明书。说名了加载过程的细节和如何处理演示程序和代码。演示代码已经上传,大家可以搜索

[OperatingSystemPageReplacementAlgorithm.rar] - java *** 作系统页面置换算法: (1)进先出的算法(fifo) (2)最近最少使用的算法(LRU) (3)最佳淘汰算法(OPT) (4)最少访问页面算法(LFU) (注:由本人改成改进型Clock算法) (5)最近最不经常使用算法(NUR)

创建一个FIFO文件类似于创建文件,FIFO文件就像普通文件一样,也是可以经过路径名来访问的。相应文件stat结构的域st_mode的编码指明了文件是否是FIFO类型。FIFO管道通过函数mkfifo创建,函数原型如下:

#include <sys/stat.h>

#include <sys/types.h>

int mkfifo( const char * filename, mode_t mode )

mkfifo函数中参数mode指定FIFO的读写权限,新创建FIFO的用户ID和组ID规则域open函数相同。参数filename指定新创建FIFO的文件名称。函数如果成功返回0,出 错返回–1,并更改errno的值。errno有可能出现的值为:EACCESS、EEXIST、ENAMETOO- LONG、ENOENT、ENOSPE、ENOTDIR和EROFS。

下面实例演示了如何使用mkfifo函数来创建一个FIFO。程序中从程序的命令行参数中得到一个文件名,然后使用mkfifo函数创建FIFO文件。新创建的FIFO只具有读写权限。由于FIFO文件的特性,所以它被隐性地规定不具有执行权限。

程序清单14-5 create_fifo.c 使用mkfifo函数创建FIFO管道

#include <sys/types.h>

#include <sys/stat.h>

#include <errno.h>

#include <stdio.h>

#include <stdlib.h>

int main (int argc, char *argv[] )

{

mode_t mode = 0666/*新创建的FIFO模式*/

if ( argc != 2 ){

/*向用户提示程序使用帮助*/

printf(USEMSG: create_fifo {fifoname}\n)

exit (1)

}

/* 使用mkfifo函数创建一个FIFO管道*/

if ( ( mkfifo (argv[1], mode )) <0) {

perror ( failed to mkfifo )

exit ( 1 )

}

else

printf (you successfully create a FIFO name is : %s\n, argv[1])

/* 输出FIFO文件的名称 */

exit (0)

}

(2)在shell中编译该程序如下:

$gcc create_fifo.c–o create_fifo

(3)在shell中运行该程序如下:

$./ create_fifo

USEMSG: create_fifo {fifoname}

输入正确的命令符。

$./ create_fifo fifo1

you successfully create a FIFO name is :fifo1

$./ create_fifo fifo1

mkfifo: File exists

上述程序使用mkfifo函数创建一个FIFO,名字是基于用户的输入文件名,可以看到当要创建一个已经存在的FIFO时,程序会产生一个EEXIST的异常,相对应该异常,perror函数打印了相应的帮助信息为mkfifo: File exists。

FIFO(数据结构中的先入先出队列)一般指先入先出队列。

First Input First Output的缩写,先入先出队列,这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。

在计算机中,先入先出队列是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令(指令就是计算机在响应用户 *** 作的程序代码,对用户而言是透明的)。

重要参数:

满标志:FIFO已满或将要满时由FIFO的状态电路送出的一个信号,以阻止FIFO的写 *** 作继续向FIFO中写数据而造成溢出(overflow)。

空标志:FIFO已空或将要空时由FIFO的状态电路送出的一个信号,以阻止FIFO的读 *** 作继续从FIFO中读出数据而造成无效数据的读出(underflow)。

读时钟:读 *** 作所遵循的时钟,在每个时钟沿来临时读数据。

写时钟:写 *** 作所遵循的时钟,在每个时钟沿来临时写数据。

读指针:指向下一个读出地址。读完后自动加1。

写指针:指向下一个要写入的地址的,写完自动加1。

读写指针其实就是读写的地址,只不过这个地址不能任意选择,而是连续的。


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

原文地址: http://outofmemory.cn/yw/11628398.html

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

发表评论

登录后才能评论

评论列表(0条)

保存