摘要: 首先来看scsi_prep_fn scsi_prep_fn只能处理来自SCSI公共层的命令,在scsi_setup_blk_pc_cmnd函数返回后,根据返回值调用scsi_prep_return进行相应的处理 sd_prep_fn函数从request结构中的信息构造SCSI(读或写)命令,将结果保 阅读全文
posted @ 2018-07-05 06:38 陆小呆 阅读(1644) 评论(0) 推荐(0) 编辑
摘要: 很长时间以来,Linux块设备使用了一种称为“蓄流/泄流”(plugging/unplugging)的技术来改进吞吐率。简单而言,这种工作方式类似浴盆排水系统的塞子。当IO被提交时,它被储存在一个队列,稍后的某个时间,我们才允许IO从队列派发出去。之所以这么做是为IO尽可能做合并和排序。 blk_p 阅读全文
posted @ 2018-07-05 06:31 陆小呆 阅读(1172) 评论(0) 推荐(0) 编辑
摘要: Linux块设备可以分为三类。分别针对顺序访问物理设备、随机访问物理设备和逻辑设备(即“栈式设备”) 类型 make_request_fn request_fn 备注 SCSI 设备等 从bio构造request(经过合并和排序),返回0 逐个处理request 调用blk_init_queue,使 阅读全文
posted @ 2018-07-03 09:50 陆小呆 阅读(1479) 评论(0) 推荐(0) 编辑
摘要: Linux通用块层提供给上层的接口函数是submit_bio。上层在构造好bio之后,调用submit_bio提交给通用块层处理。 submit_bio函数如下: void submit_bio(int rw, struct bio *bio) { bio->bi_rw |= rw; //记录读写方 阅读全文
posted @ 2018-07-02 17:17 陆小呆 阅读(1671) 评论(0) 推荐(0) 编辑
摘要: 前言:这个系列主要是记录自己学习Linux块IO子系统的过程,其中代码分析皆基于Linux3.10.0版本,如有描述错误或不妥之处,敬请指出! 参考书籍:存储技术原理分析--基于Linux 2.6内核源代码(敖青云著) 概述 块设备(Block Device)是支持以固定长度的块为单位读写数据的存储 阅读全文
posted @ 2018-07-02 15:42 陆小呆 阅读(2149) 评论(0) 推荐(1) 编辑
摘要: 参考:GUID(GPT)分区表详解 GPT分区表详解 GPT学习文档 概述 先说说目前广泛使用的磁盘分区表方案。传统的分区方案(称为MBR分区方案)是将分区信息保存到磁盘的第一个扇区(MBR扇区)中的64个字节中,每个分区项占用16个字节,这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁 阅读全文
posted @ 2017-04-28 10:42 陆小呆 阅读(456) 评论(0) 推荐(1) 编辑
摘要: 1. 字符设备驱动概述 一、linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序: 字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。 块设备:是 阅读全文
posted @ 2016-09-23 10:00 陆小呆 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 1. 逻辑地址、线性地址和物理地址 1.1 逻辑地址 例如:假定我们有一个简单的C程序Hello.c #include <stdio.h> void greeting() { printf("hello,world.\n"); } int main(void) { greeting(); } 之所以 阅读全文
posted @ 2016-09-06 14:40 陆小呆 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 1. 文件IO 本节函数和代码基于 Ubuntu16.04,内核版本:4.4.0-34-generic 1.1 文件描述符 对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读写一个文件时,使用open或 阅读全文
posted @ 2016-08-28 17:09 陆小呆 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 1. 宏内核与微内核 内核(Kernel)在计算机科学中是操作系统最基本的部分,主要负责管理系统资源。中文版维基百科上将内核分为四大类:单内核(宏内核);微内核;混合内核;外内核。 混合内核实质上也是微内核,而外内核是一种比较极端的设计方法,目前还处于研究阶段,所以我们就着重讨论宏内核与微内核两种内 阅读全文
posted @ 2016-08-27 10:22 陆小呆 阅读(829) 评论(0) 推荐(0) 编辑