linux中,buffer内存与cache内存有何区别?
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/19 23:45:53
linux中,buffer内存与cache内存有何区别?
两者都是RAM中的数据.简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的.
缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘.其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除.
缓存(cache)实际并不是缓冲文件的,而是缓冲块的,块是磁盘I/O操作的最小单元(在Linux中,它们通常是1KB).这样,目录、超级块、其它文件系统的薄记数据以及非文件系统的磁盘数据都可以被缓冲了.
如果缓存有固定的大小,那么缓存太大了也不好,因为这会使得空闲的内存太小而导致进行交换操作(这同样是慢的).为了最有效地使用实际内存,Linux自动地使用所有空闲的内存作为高速缓冲,当程序需要更多的内存时,它也会自动地减小缓冲的大小.
缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能.linux有一个守护进程定期清空缓冲内容(即写磁盘),也可以通过sync命令手动清空缓冲.举个例子吧:我这里有一个ext2的U盘,我往里面cp一个3M的 MP3,但U盘的灯没有跳动,过了一会儿(或者手动输入sync)U盘的灯就跳动起来了.卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟.
buffer是由各种进程分配的,由进程和系统一起管理.被用在如输入队列等方面,一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存.
cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能.
综上所述可以理解为cache系统管理,buffer由进程和系统一起管理.
缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘.其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除.
缓存(cache)实际并不是缓冲文件的,而是缓冲块的,块是磁盘I/O操作的最小单元(在Linux中,它们通常是1KB).这样,目录、超级块、其它文件系统的薄记数据以及非文件系统的磁盘数据都可以被缓冲了.
如果缓存有固定的大小,那么缓存太大了也不好,因为这会使得空闲的内存太小而导致进行交换操作(这同样是慢的).为了最有效地使用实际内存,Linux自动地使用所有空闲的内存作为高速缓冲,当程序需要更多的内存时,它也会自动地减小缓冲的大小.
缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能.linux有一个守护进程定期清空缓冲内容(即写磁盘),也可以通过sync命令手动清空缓冲.举个例子吧:我这里有一个ext2的U盘,我往里面cp一个3M的 MP3,但U盘的灯没有跳动,过了一会儿(或者手动输入sync)U盘的灯就跳动起来了.卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟.
buffer是由各种进程分配的,由进程和系统一起管理.被用在如输入队列等方面,一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存.
cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能.
综上所述可以理解为cache系统管理,buffer由进程和系统一起管理.
什么是寄存器?寄存器与存储器有何区别?两者是否一样?存储器(包括内存和外存)与寄存器均存在CPU中吗?
什么是Cache?什么是Buffer?区别是什么?
Buffer和cache的区别是什么?
电话内存的单位M是什么意思?与其他内存单位有何关系?
手机内存date文件夹里的 dalvik-cache是什么意思?
2.70GHz 2.00GB的内存物理地址扩展是什么意思,和内存有什么区别吗?
内存大和小有什么区别256的内存为什么运行这么慢
CPU Internal Cache与External Cache区别
手机内存和ROM,RAM有什么区别?
计算机的内存和外存有什么区别?
使用Cache可以提高计算机运行速度,这是因为__ Cache增大了内存的容量 Cache扩大了硬盘的容量 Cache缩
I/O单元地址与内存单元地址有何异同?I/O单元内容可以存放什么性质数据?如何实现I/O单元的读写操作