第三章 数据缓冲区高速缓冲 硬件缓存(cache) 由一种高速寄存器(register). 组成,主要解 决CPU与RAM之间的速度差问题。 数据缓冲区高速缓冲(buffer) 由软件实现的解决文件系统和物理硬盘之间的 数据同步的一种方法。 数据缓冲区高速缓冲是UNIX特有的对数据并发访 问的一种控制机制。 1
第三章 数据缓冲区高速缓冲 硬件缓存(cache) 由一种高速寄存器(register)组成,主要解 决CPU与RAM之间的速度差问题。 数据缓冲区高速缓冲(buffer) 由软件实现的解决文件系统和物理硬盘之间的 数据同步的一种方法。 数据缓冲区高速缓冲是UNIX特有的对数据并发访 问的一种控制机制。 1
问题的提出: 1、磁盘机械运行速度大大低于处理机的运行 速度; 2、多进程并发运行,少量的磁盘(通道) VO成为瓶颈; 3、数据访问的随机性,磁盘忙闲不均 2
问题的提出: 1、磁盘机械运行速度大大低于处理机的运行 速度; 2、多进程并发运行,少量的磁盘(通道) I/O成为瓶颈; 3、数据访问的随机性,磁盘忙闲不均 2
解决办法: 1、建立一个被称为数据缓冲区高速缓冲(简称高速缓冲)的内 部数据缓冲区池(buffer pool)来存放要用的数据; 2、写数据时 把数据尽量多地尽量长时间地保存在缓冲池中 延迟写出到磁盘上 以备后续进程使用 3、读数据时 先在缓冲池中查找已有的数据 如没有,再从磁盘读取,并保存在缓冲池中 事先预读数据到缓冲池中 3
解决办法: 1、建立一个被称为数据缓冲区高速缓冲(简称高速缓冲)的内 部数据缓冲区池(buffer pool)来存放要用的数据; 2、写数据时 把数据尽量多地尽量长时间地保存在缓冲池中 延迟写出到磁盘上 以备后续进程使用 3、读数据时 先在缓冲池中查找已有的数据 如没有,再从磁盘读取,并保存在缓冲池中 事先预读数据到缓冲池中 3
3.1缓冲区及缓冲区首部 缓冲区池由若干个缓冲区组成,每一个缓冲区又由两部分 组成:一个实际存放数据的存储区和一个标识该缓冲区的 缓冲区首部。 缓冲区首部 因为缓冲区首部与数据 存储区之间有一一对应的 存 关系,所以通常把两者统 储区 称为缓冲区。 缓冲区是缓冲区池中数 据存储的基本单位。 4
3.1 缓冲区及缓冲区首部 缓冲区池由若干个缓冲区组成,每一个缓冲区又由两部分 组成:一个实际存放数据的存储区和一个标识该缓冲区的 缓冲区首部。 存 储 区 因为缓冲区首部与数据 存储区之间有一一对应的 关系,所以通常把两者统 称为缓冲区。 缓冲区是缓冲区池中数 据存储的基本单位。 缓冲区首部 4
缓冲区首部的定义: struct buf 缓冲区标志 标识缓冲区状态 缓冲区链接指针 向前向后串成链表 空闲缓冲区链表指针 联结空闲缓冲区 设备号 标识缓冲区 块号 union{ 缓冲区中的数据类型 数据块 超级块 柱面块 节点块 }b_un 其它控制信息 } 5
缓冲区首部的定义: struct buf { 缓冲区标志 标识缓冲区状态 缓冲区链接指针 向前向后串成链表 空闲缓冲区链表指针 联结空闲缓冲区 设备号 标识缓冲区 块号 union{ 缓冲区中的数据类型 数据块 超级块 柱面块 i节点块 }b_un 其它控制信息 } 5