现在的位置: 首页 > 综合 > 正文

块设备简介

2017年08月25日 ⁄ 综合 ⁄ 共 941字 ⁄ 字号 评论关闭

块设备----将数据存储在固定大小的块中,每个块的大小通常在512字节到32768字节之间,磁盘,sd卡都是常见的块设备。

块设备和字符设备区别---

读写数据的基本单元不同,一个是块,一个是字节

块设备能够随即访问,字符设备只能顺序访问。

体系结构---

------------------vfs-----------统一不同文件系统的接口

------disk caches---

-----disk filesystem---block device file------>mapping layer

------generic block layer----

-------I/O scheduler layer-------

------block device driver------block device driver

------hard disk--------------------hard disk----------

vfs---是对各种具体文件系统的一种封装,为用户程序访问文件提供统一接口。

disk cache---当用户发起文件访问请求的时候,首先会到disk cache中寻找文件是否被缓存了,如果在cache中,则直接从cache中读取。如果数据不在缓存中,就必须要到具体的文件系统中读取数据了。

mapping layer---

1--首先确定文件系统的block size,然后计算所请求的数据包含多少个block

2--调用具体文件系统的函数来访问文件的inode,确定所请求的数据在磁盘上的逻辑块地址。

generic block layer---linux 内核为块设备抽象了统一的模型,把块设备看作是由若干个扇区组成的数据空间。上层的读写请求在通用块层(generic block layer)被构成一个或多个bio结构。

I/O scheduler layer----I/O调度层负责将I/O操作进行排序,采用某种算法如电梯算法来高效的处理操作。

电梯调度算法的基本原则-----若电梯现在朝上运动,如果当前楼层的上方和下方都有请求,则先响应所有上方的请求,然后才向下响应下方的请求,如果电梯向下运动,则刚好相反。

block device driver---

块设备驱动程序通过发送命令给磁盘控制器实现真正的数据传输。


抱歉!评论已关闭.