操作系统——IO缓存技术
2015-07-12 14:48
232 查看
一、为什么引入缓存技术
为了解决cpu速度和外部设备速度不匹配的问题。
减少了io对cpu的中断的次数。每进行一次IO设备的时间都很长,所以把数据先放入缓冲区,再进行IO操作。
二、缓冲技术的实现
缓冲区的分类:
(1)在设备中设置缓冲区
(2)在内存中设置缓冲区
假如读取数据,先将磁盘的数据通过DMA的形式读入操作系统内核的内存缓冲区,然后应用进程再进行读操作。
三、带缓存的io和非缓存的io
不带缓存的io操作:
在linux操作系统中,read(),write()等系统调用是不带缓存的io操作,其将应用进程中的字节写入内核缓冲区,然后调用fsync()函数同步到磁盘。
带缓存的io操作:
在应用进程中,也有一个文件缓冲区,直到此缓冲区填满之后,再调用read(),write()等系统调用,将数据放入内核缓冲区。
为了解决cpu速度和外部设备速度不匹配的问题。
减少了io对cpu的中断的次数。每进行一次IO设备的时间都很长,所以把数据先放入缓冲区,再进行IO操作。
二、缓冲技术的实现
缓冲区的分类:
(1)在设备中设置缓冲区
(2)在内存中设置缓冲区
假如读取数据,先将磁盘的数据通过DMA的形式读入操作系统内核的内存缓冲区,然后应用进程再进行读操作。
三、带缓存的io和非缓存的io
不带缓存的io操作:
在linux操作系统中,read(),write()等系统调用是不带缓存的io操作,其将应用进程中的字节写入内核缓冲区,然后调用fsync()函数同步到磁盘。
带缓存的io操作:
在应用进程中,也有一个文件缓冲区,直到此缓冲区填满之后,再调用read(),write()等系统调用,将数据放入内核缓冲区。
相关文章推荐
- Oracle基本命令符
- vs2010下使用绘图控件MsChart的方法
- Remove Nth Node From End of List
- 股市暴涨暴跌另一个更致命的影响,被高估的人民币大幅贬值
- hdu 4083
- Silverlight 5 Grid组的MouseLeave响应
- spring里面事务的传播属性和事务隔离级别
- !HDU 1493 QQpet exploratory park-dp
- 文章标题
- 判断两个线段是否相交
- android支付平台集成调研
- BZOJ 1008 [HNOI2008]越狱
- BZOJ4184 : shallot
- 关于网上一些兼容性问题的处理总结
- [LeetCode] Lowest Common Ancestor of a Binary Search Tree
- 大整数乘法
- Windows进程内部堆的操作
- 内幕视角揭秘那些年的微软和诺基亚
- C语言之基本算法30—数组的灵活应用(一个正整数的各位数字平方和)
- Embedded_SW_模块化]嵌入式C语言工程文件组织_保持更新