文件系统——Hash结构文件

实验 文件系统——Hash结构文件    

一、实验目的

1、理解Linux文件系统的内部技术,掌握Linux与文件有关的系统调用命令,并在此基础上建立面向随机检索的hash结构文件。

2Linux系统保持UNIX文件系统的风格,提供流式文件界面,这种结构具有简洁灵活的特点,但并不直接支持记录式文件和关键字检索。本实验是在Linux文件系统基础上,设计一组库函数,以提供对随机检索的支持。

 

、实验内容

1参考教材中hash文件构造算法,设计一组hash文件函数,包括hash文件创建、打开、关闭、读、写等。

2编写一个测试程序,通过记录保存、查找、删除等操作,检查上述hash文件是否实现相关功能。

 

、实验准备

1教程Hash文件核心算法,包括记录保存、记录查找、记录删除等。

2教程Linux系统有关文件的系统调用命令:creatopenclosereadwritelseek

 

、实验设计

1由于在Linux系统核心之外模拟实现hash文件,有关hash文件的说明信息不能保存 inode中,而只能记录在文件的头部。这些信息包括hash文件标志、记录大小、文件 长度、记录数量等。

2可以根据hash文件核心算法设计内部函数,包括记录的保存、查找、删除等,在此 基础上实现读、写等常规操作。 

 

五、实验源码

//hashfile.h

 

#include<unistd.h>

#include<sys/stat.h>

#define COLLISIONFACTOR 0.5


struct HashFileHeader

{

int sig; //Hash文件印鉴

int reclen; //记录长度

int total_rec_num; //总记录数

int current_rec_num; //当前记录数 

};

struct CFTag

{

char collision; //冲突计数

char free; //空闲标志

};


int hashfile_creat(const char *filename,mode_t mode,int reclen,int total_rec_num);

//int hashfile_open(const char *filename,int flags); 

int hashfile_open(const char *filename,int flags,mode_t mode);

int hashfile_close(int fd);

int hashfile_read(int fd,int keyoffset,int keylen,void *buf);

int hashfile_write(int fd,int keyoffset,int keylen,void *buf);

int hashfile_delrec(int fd,int keyoffset,int keylen,void *buf);

int hashfile_findrec(int fd,int keyoffset,int keylen,void *buf);

int hashfile_saverec(int fd,int keyoffset,int keylen,void *buf);

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值