LabVIEWwilliam hill官网
直播中

wjc0403

11年用户 36经验值
私信 关注
[问答]

VISA设置I/O缓冲区大小,根据什么设定的?

哪们大神知道,VISA设置I/O缓冲区大小,默认是4096字节,其它情况一般设成多少,根据什么标准设定的?

回帖(6)

碧芝麻

2014-5-6 21:13:43
请教楼主,你现在知道了吗?我也想问问这个问题。
举报

DannyG

2015-5-7 16:24:52
时隔两年还是没有答案啊
举报

1975456477

2016-3-26 14:29:40
这个答案不知道对不 --转自 http   ://blog.sina.com.cn/s/blog_49a8f7b10100n2ki.html
用户程序调用C标准I/O库函数读写文件或设备,而这些库函数要通过系统调用把读写请求传给内核,最终由内核驱动磁盘或设备完成I/O操作。C标准库为每个打开的文件分配一个I/O缓冲区以加速读写操作,通过文件的FILE结构体可以找到这个缓冲区,用户调用读写函数大多数时候都在I/O缓冲区中读写,只有少数时候需要把读写请求传给内核。以fgetc/fputc为例,当用户程序第一次调用fgetc读一个字节时,fgetc函数可能通过系统调用进入内核读1K字节到I/O缓冲区中,然后返回I/O缓冲区中的第一个字节给用户,把读写位置指向I/O缓冲区中的第二个字符,以后用户再调fgetc,就直接从I/O缓冲区中读取,而不需要进内核了,当用户把这1K字节都读完之后,再次调用fgetc时,fgetc函数会再次进入内核读1K字节到I/O缓冲区中。在这个场景中用户程序、C标准库和内核之间的关系就像CPU、Cache和内存之间的关系一样,C标准库之所以会从内核预读一些数据放在I/O缓冲区中,是希望用户程序随后要用到这些数据,C标准库的I/O缓冲区也在用户空间,直接从用户空间读取数据比进内核读数据要快得多。另一方面,用户程序调用fputc通常只是写到I/O缓冲区中,这样fputc函数可以很快地返回,如果I/O缓冲区写满了,fputc就通过系统调用把I/O缓冲区中的数据传给内核,内核最终把数据写回磁盘。有时候用户程序希望把I/O缓冲区中的数据立刻传给内核,让内核写回设备,这称为Flush 操作,对应的库函数是fflush,fclose函数在关闭文件之前也会做Flush操作。
举报

小灿灿94

2016-4-22 19:19:59
感觉楼上的回答好有道理。。。。。应该是个好参考
举报

更多回帖

发帖
×
20
完善资料,
赚取积分