Linux内核学习笔记(三)Block I/O层

你也可以通过我的独立博客 —— www.huliujia.com 获取本篇文章

块设备(Block Device)简介

块设备是一种以块(block)为单位可以进行随机存取的硬件设备。常见的块设备有硬盘,软盘,闪存等。

块设备的最小寻址单元是扇区(sector),一个扇区是2^n个字节,512Bytes是最常见的扇区大小。内核的文件系统使用块(block)作为最小寻址单元。block的大小是sector的2^n次方倍(n可以为0),但是不大于page size. 常见的block大小为512Bytes,1KB,4KB。

buffer 与 buffer_head结构体

当一个block被读入内存或者等待写入块设备时,保存在buffer中,一个buffer对应一个block。每个buffer都有一个对应的描述符,这个描述符被称为buffer head,使用buffer_head结构体来表示(定义在<linux/buffer_head.h>中),buffer_head结构体的唯一角色是作为buffer-to-block映射关系的描述符,该结构体保存了内核对buffer进行操作需要的所有信息。

下面是buffer的定义:

struct buffer_head
{
    unsigned long b_state; /* buffer state flags */
    struct buffer_head *b_this_page; /* list of page’s buffers */
    struct page *b_page; /* associated page */
    sector_t b_blocknr; /* starting block number */
    size_t b_size; /* size of mapping */
    char *b_data; /* pointer to data within the page */
    struct block_device *b_bdev; /* associated block device */
    bh_end_io_t *b_end_io; /* I/O completion */
    void *b_private; /* reserved for b_end_io */
    struct list_head b_assoc_buffers; /* associated mappings */
    struct address_space *b_assoc_map; /* associated 
  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值