页、磁盘块与扇区

扇区:磁盘的最小存储单位;
磁盘块:文件系统读写数据的最小单位;
页:内存的最小存储单位;



一个磁盘块由连续几个(2^n)扇区组成;
页的大小为磁盘块大小的2^n倍;



页大小查看: getconf PAGE_SIZE,常见为4K;
磁盘块大小查看:stat /boot/|grep “IO Block”,常见为4K;
扇区大小查看:fdisk -l,常见为512Byte;

磁盘支持对给定地址的直接访问,被广泛用于数据库应用。数据以磁盘块为单位存储在磁盘上。磁盘块是字节的一个连续序列。是从磁盘读/写数据的单位。块分布于一张或者多张盘片的同心环型磁道上。磁盘块的大小在磁盘初始化时可以被设置成扇区大小的倍数。



存取磁盘块的时间由以下部分组成:



a)寻道时间:用于移动磁头到达所需块所在的磁道的时间。



b)旋转延迟:所需块旋转到磁头下的等待时间,它的平均时间是旋转半圈需要的时间,通常小于寻道时间。



c)传输时间:当磁头定位后实际读或写磁盘块的时间,即磁盘旋转经过数据块的时间。



一次完整的输入输出(IO)操作的时间 = 磁盘轴旋转时间(旋转延迟)+磁盘臂移动时间(寻道时间)+数据传输时间。



三者所需时间的平均经验值为:0.004秒、0.008秒和0.0005秒。所以,一次完整的IO时间的经验值是0.0125秒,即1/80秒



磁盘结构对性能的影响



(1)DBMS的数据必须在内存中操作



(2)磁盘和主存之间数据传输的单位是块,如果只需要块上的某一项,也需要传输整个块,读/写一个磁盘块称为一次I/O操作。



(3)读/写块的时间依据数据所在的位置而变化:



   存取时间 = 寻道时间 + 旋转延迟 + 传输时间


磁盘空间管理器支持做为数据单元的页的概念,并且提供分配和回收及读/写页的命令。通常选择磁盘块大小作为页的大小。并且页面作为磁盘块存储起来。这样在一次磁盘的I/O操作就能够完成一页的读/写。



9.4 缓冲区管理器



缓冲区管理器是负责在必要时把页面从磁盘取到主存的软件层。它通过把缓冲区划分为页集来管理可获得的主存,这些页集通常称为缓冲池。缓冲池中的主存页称为帧,及存放页(通常驻留在磁盘或者其他二级存储上的页)的槽



除了缓冲池本身,缓冲区管理器还维护一些簿记信息和描述帧的两变量:pin-count和dirty,存放在某个帧的当前页已经被请求但是还未释放的次数,即该页的当前用户数,被记录在那个帧的pin-count变量中,布尔变量dirty表示页从磁盘中读入缓冲池后是否已经被修改。



开始时,每个帧的pin-count设置为0,dirty设置为假。当页被请求时,缓冲区做如下工作:



1.检查缓冲池是否包含被请求的页,如果缓冲池中有该页,则将该页的pin-count值增加。如果缓冲池没有该页,缓冲池管理器将按如下步骤将缺页读入缓冲池中:



a)根据替换策略选择替换真,并且增加它的pin-count;



b)如果替换帧的dirty为真,把该帧存放的页写回磁盘(即磁盘页的拷贝将由帧的内容改写)



c)把请求的页读入替换帧中



2.把替换帧的(主存)地址返回给申请者。



*缓冲区替换策略



最近最少使用策略(LRU(least recently used)) 时钟替换 先入先出(FIFO),最近经常使用策略(MRU),随机策略


Category linux