Mysql上的innodb log buffer与buffer pool都使用到了缓冲技术,特别是在刷写数据和日志的时候,会用到操作系统的缓冲。特此我翻了翻OS原理一书,予以记录于此。
缓冲技术
为什么要在操作系统中使用缓冲技术?
1.改善CPU与IO设备之间速度的差距
2.逻辑记录大小与物理记录大小不一致
3.提高CPU与IO设备的并行性
4.减少IO对CPU的中断次数
5.放宽CPU中断响应时间的要求
在操作系统中普遍要使用缓冲技术
一般缓冲技术用于平滑连接两种速度不同设备之间的信息传输,由于硬件缓冲成本高,所以一般都直接在主机内存中分配一块区域作为io缓冲区
专门存放临时IO的数据。
读缓冲:
当一个进程执行读操作数据的时候,先向系统申请一个读缓冲区,系统将IO设备的物理记录读入到读缓冲区,然后根据进程需求,把需要的逻辑记录从
读缓冲区选出,送给进程
写缓冲:
当一个进程执行写操作数据的时候,先向系统申请一个写缓冲,申请完后,数据将高速送到该缓冲区,当进程写需求完成后,继续进行计算时,系统
可以将顺序的写或者随机的写操作,转换为顺序的IO写操作到IO设备上。(如果缓冲区不够,直到缓冲区写满时,进程如果还需要写操作,可能需要一边
回写IO设备,一边清空脏缓冲区)
操作系统的缓冲分为3种:
单缓冲
双缓冲
多缓冲
单缓冲就是单个缓冲区进行缓冲物理记录
双缓冲就是两个缓冲区轮流交替进行r/w IO设备物理记录
多缓冲就是多个缓冲区进行循环交替R/W IO设备物理记录
阅读(2314) | 评论(1) | 转发(0) |