读书人

关于用户缓冲区有关问题

发布时间: 2013-07-08 14:13:00 作者: rapoo

关于用户缓冲区问题
查到资料的大致意思是:为了避免多次进行系统调用 标准IO在用户层又建立了一个缓冲区 以printf为例:将对控制台连续多次的写入放在一个数组(即用户缓冲区)里 等到数组被填满之后再一次性完成系统调用写入。

上文的意思应该是在将对控制台的多次写入变成对数组的多次写入
我的疑惑是:那对数组的N次写入难道不需要N次系统调用吗?难道只有从数组(即用户缓冲区)向控制台写数据的时候才需要系统调用吗?
[解决办法]
往数组写N次要比往文件写N次快很多倍。
[解决办法]
写进数组里是写进这个程序分得的空间里,不需要系统调用(分配空间的时候需要)
往控制台上写东西,涉及到IO了,是要有系统调用的
[解决办法]

引用:
Quote: 引用:

往数组写N次要比往文件写N次快很多倍。


多谢解答!
个人理解是往文件写需要利用系统调用read 那往数组写的话应该用什么呢(系统调用或者其他什么的呢? 如果是系统调用 那是read吗?)


如果这个数组还在内存中,没有被swap出去,那么不需要系统调用,只需要movl和移动栈指针几个机器指令
[解决办法]
写数组当然不需要进行系统调用. 就是普通的内存写入访问而已.
你访问内存, 访问变量难道都需要系统调用? 那程序不知道慢成啥样了.

读书人网 >C语言

热点推荐