摘要:
fuse处理请求的整个流程如下图所示,以unlink操作为例进行说明。其中“>”表示调用,”<”表示返回,[]表示调用中所做的工作。本人结合fuse的源代码,对整个流程进行了分析。 fuse通过fuse_session_loop(或对应多线程的方法)来启动fuse守护程序,守护程序不断的从/dev/fuse上读取请求,并处理。 代码片段1
int fuse_session_loop(st... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(1512)
评论(0)
推荐(1)
摘要:
fuse为开发者提供了两组接口,分别是fuse_lowlevel_ops以及fuse_operations,开发者只需要实现这两组接口的一种即可实现一个用户空间文件系统。 struct fuse_lowlevel_ops的成员如下所示,其中init方法在其它所有方法之前调用,用于初始化文件系统,fuse已经实现,destroy则是在文件系统被卸载时做一些清理工作。用于大多数请求的参数都是fuse... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(1219)
评论(0)
推荐(1)
摘要:
对fuse提供的两个选项direct_io及big_writes困惑已久,以前对内核完全不了解,看不懂fuse内核模块的代码,这两天把fuse的代码重新过了一遍,把整个机制弄清楚了,很多细节方面的东西还在学习中。 指定direct_io挂载文件系统时,系统调用到了fuse层后,会跳过页高速缓存,当指定了direct_io后,读写系统调用会使用fuse_direct_io_file_operati... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(2318)
评论(0)
推荐(0)
摘要:
RPC的xdr(外部数据表示)是为了编码(解码)C语言定义的数据,从而使得RPC传输的数据平台无关性。
xdr对C语言常见的类型编码规则在之前已经说过了,参见http://blog.chinaunix.net/u2/87570/showart_2159266.html,对于说明书test.x定义的定义,最终会被rpcgen翻译成支持C语言支持的类型定义,之后test.x就没有任何作用了。 如在... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(1736)
评论(0)
推荐(0)
摘要:
测试例子: #include <stdio.h>void print(char *arr){printf("%#x %#x %#x\n", &arr, arr, arr[0]);}int main(){char arr[5] = "abcd";printf("%#x %#x %#x\n", &arr, arr, arr[0]);print(arr);return 0;}
输出: ... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(190)
评论(0)
推荐(0)
摘要:
根据UNP上介绍,SUN RPC随solaris 2.4提供多线程化的服务器,通过向rpcgen传递-M参数以支持多线程。使得有rpcgen产生的服务器代码线程安全。选项-A让服务器根据处理新客户请求的需要自动创建线程。 但linux下并不支持-A选项,-M只是使rpcgen产生的代码是线程安全的,并不会自动创建线程处理请求。 测试:(rpc -M -C square.x)
服务器端睡眠10... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(733)
评论(0)
推荐(0)
摘要:
fyf师兄总结的,写得不错,转载一下,顺便给他的blog做做广告
http://blog.sina.com.cn/icemangary 附网上牛人写的一个内存泄露检查工具,对malloc,free进行封装以跟踪内存分配情况,详细的内容见附件中的文档。 文件:
C内存泄露检测工具.rar 大小:
21KB 下载:
下载 (1)被分配的内存总是经过对齐,以适合机器上最大... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(186)
评论(0)
推荐(0)
摘要:
对于rpc说明书文件test.x,其中定义服务器过程以及他们的参数和结果。
使用rpcgen必须要生成的几个文件: rpcgen –C -M test.x //-C生成ANSI C的代码, -M
test.h:过程及其参数的说明
tes_xdr.c: 用于rpc外部数据表示
test_clnt.c :客户端存根
test_svc.c : 服务器存根 对于说明书文件test.x(至于说明书文... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(643)
评论(0)
推荐(0)
摘要:
刚来实验室时,为了完成毕业设计的内容,读了很多中文文章,后来发现这方面比较好的一篇英文的,发现其内容差不多涵盖了看过的所有中文文章的内容,后来发现大大部分中文文章的内容一般都是某篇英文文章的内容子集,有的甚至是直接翻译过来的,计算机学术界的悲哀,慢慢的我彻底对中文的paper死心了。
让人不爽的时,最近看了几篇英文的文章,内容很空泛,related work搞了一大堆,分析了这趋势,那趋势,到最... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(151)
评论(0)
推荐(0)
摘要:
1. 空间换时间法则 1.1 修改数据结构
例如:计算球面距离:输入为球面上5000个点组成的集合S,再输入20000个点组成的序列,每个点实用经度和纬度表示,对于20000个点的序列,程序必须求出S中哪个点最接近它,距离使用球体中心与两个点的连线之间的夹角来度量。
直接计算需要用到大量的三角函数,开销很大,而两个点的距离随其欧氏距离单调增加(减小),故可将(经度,纬度)表示的数据结构变换为三... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(281)
评论(0)
推荐(0)
浙公网安备 33010602011771号