Chinaunix

标题: 求教write函数的系统实现过程 [打印本页]

作者: hong106525654    时间: 2007-01-08 19:45
标题: 求教write函数的系统实现过程
听说系统先分配一个跟要写的内容大小同样的临时缓冲区  然后将数据拷贝到临时缓冲区中
网络发送数据是这样的吗  这样做有什么好处没有
作者: Edengundam    时间: 2007-01-08 20:01
os 维护 buffer 和 cpu 的 cache, memory一个道理. 加快数据访问速度.
对于多次重复修改, 访问缓存的数据的肯定快. 还能有效减少I/O次数. 还可以多个进程间共享...好多都忘记了...
看bash unix内核设计实现...
作者: langue    时间: 2007-01-08 20:16
缓存 (cache) 和缓冲 (buffer) 起着不同的作用
作者: Edengundam    时间: 2007-01-08 20:25
原帖由 langue 于 2007-1-8 20:16 发表
缓存 (cache) 和缓冲 (buffer) 起着不同的作用



hoho姐姐说得是...

不过我从感觉上还区分不出他们的区别, google 了 difference between cache and buffer ...viki 访问不了...

不过ORACLE有个 CACHE 数据的语法, 不过实际使用了 buffer... buffer 名词,一般都是大块大块的数据吧.. cache包括了动词...一般也都比较小...

理解水平有限, 但是 buffer 和 cache 的本质作用不会相距太远...真的要准确区分, 还得进一步理解....体会差异...
作者: cjaizss    时间: 2007-01-08 20:43
cache的意思在于——
有个方法A可以获得对数据的访问,但是速度比较慢,那么就用另外一种方法把我最近可能访问或者可能访问最多的数据提取出来,而这些数据可以用方法B来访问。方法B的速度比方法A快,但是方法B可以获得的数据量比方法A少,只是A的一部分,那么就可能存在我要访问一个数据,方法B的这种快速可能会导致不命中(既方法B不能够访问该数据)。
cache的思想无论在硬还是软中都普遍存在
作者: hong106525654    时间: 2007-01-09 11:09
网络发送数据过程中  到底分配了临时缓冲区没有
作者: ghostwwl    时间: 2007-01-09 12:35
说是说write是nobuffered 实际上 也有缓冲区的 不过是内核 缓冲 内核把内核缓冲区的数据写入设备
作者: langue    时间: 2007-01-09 18:22
原帖由 ghostwwl 于 2007-1-9 12:35 发表
说是说write是nobuffered 实际上 也有缓冲区的 不过是内核 缓冲 内核把内核缓冲区的数据写入设备


是的,write() 在用户空间外是否缓冲,得看内核的具体设计与实现。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2