自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(139)
  • 资源 (3)
  • 收藏
  • 关注

原创 【存储原理】IO超时处理 块层block-scsi层之间

【存储原理】IO超时处理 块层block-scsi层之间

2023-10-29 23:33:53 266

原创 深入理解ext2文件系统

深入理解ext2文件系统

2022-07-11 10:37:50 3155 1

原创 一个IO朝圣之路(2)打开文件

文件打开

2022-06-07 22:03:50 304

原创 一个IO朝圣之路(1) 整体流程概述

一个IO朝圣之路

2022-06-07 21:35:13 271

原创 深入浅出块I/O子系统(五)I/O调度算法

I/O调度算法I/O调度器(I/O Scheduler)的工作是管理块设备的请求队列。它决定队列中的请求排列顺序以及在什么时刻派发请求到块设备。这样做有利于减少磁盘寻址时间,从而提高整体性能。I/O调度程序通过两种方法来减少磁盘寻址时间:合并与排序。1.为请求队列建立关联的I/O调度队列2.判断bio是否可以被合并到request3.将请求添加到I/O调度队列或请求队列4.从I/O调度队列派发请求到请求队列...

2022-05-08 11:02:07 538

原创 深入浅出块I/O子系统(四)请求处理过程

BIO请求处理的流程函数scsi_request_fn()代码(摘自文件drivers/scsi/scsi_lib.c)(1)static void scsi_request_fn(struct request_queue *q)(2)int scsi_dispatch_cmd(struct scsi_cmnd *cmd){host->hostt->queuecommand(host, cmd)}(3)struct sas_internal *isas_queuec

2021-12-26 20:21:48 934

原创 从代码层次深入分析文件系统

(1)一个最简单的文件系统aufsstatic struct file_system_type au_fs_type = { .owner = THIS_MODULE, .name = "aufs", .get_sb = aufs_get_sb, .kill_sb = kill_litter_super, }; static int __init aufs_init(void) { int retval;

2021-12-26 10:34:31 656

原创 Linux内核源码分析-scsi子系统-让磁盘转起来-sd_spinup_disk

如何调用到sd_spinup_disk接口,请查看前面文章【深入浅出SCSI子系统(六)SCSI 磁盘驱动】链接:深入浅出SCSI子系统(六)SCSI 磁盘驱动_sinat_37817094的博客-CSDN博客函数sd_spinup_disk()代码(摘自文件drivers/scsi/sd.c)sd_spinup_disk函数尝试等到SCSI磁盘已经准备好,必要时使磁盘转起来。前者发送TEST UNITREADY命令,后者发送START UNIT命令。/* * spinup di

2021-12-07 07:42:24 1611 2

原创 sas协议(SAS PL-3)之Zoning功能

1 Zoning overviewSAS zoning is implemented by a set of zoning expander devices with zoning enabled that define a zoned portion of a service delivery subsystem (ZPSDS)服务子系统.The zoning expander devices control whether a phy is permitted to participate in

2021-11-28 22:08:06 1042

原创 深入浅出文件系统(二)文件系统对象

文件系统对象Linux文件系统对象之间的关系可以概括为文件系统类型、超级块、inode、dentry和vfsmount之间的关系。文件系统类型规定了某种类型文件系统的行为,它存在的主要目的是为了构造这种类型文件系统的实例,或者被称为超级块实例。超级块反映了文件系统整体的控制信息,超级块以多种方式存在。对于基于磁盘的文件系统,它以特定格式存在于磁盘的固定区域(取决于文件系统类型),为磁盘上的超级块。在文件系统被装载时,其内容被读入内存,构建内存中的超级块。其中某些信息为各种类型的文件系统所共有..

2021-11-27 11:53:57 1017

原创 深入浅出文件系统(一)概述

看到的磁盘设备,都有以下性质:• 是一组线性排列的磁盘块;• 可以访问其中的任意磁盘块;• 可以独立地读/写磁盘块;文件系统(File System)是存储和组织文件(即一系列相关的数据),以便可以方便地进行查找和访问一种机制。不同的文件系统有不同的文件存储和组织方式。(fat32 ext4等)以基于磁盘的文件系统为例,文件是以磁盘块为单位存储的,文件系统设计的一个重要问题是记录各个文件分别用到哪些磁盘块。//test.c文件占用439字节,用了8个磁盘块存储,一般是8个磁

2021-11-27 11:26:44 466

原创 pm8001驱动内核代码分析(三)pm8001_init和pm8001_exit函数

基础阅读:主机适配器怎么加入系统的文章《深入浅出SCSI子系统(四)添加适配器到系统》pm8001_init主要做工作队列申请,Sas layer 回调函数注册,pci驱动注册到设备模型中。drivers/scsi/pm8001/pm8001_init.c接口代码赏析:/** .

2021-11-21 22:25:34 473

原创 pm8001驱动内核代码分析(一)概述,该驱动的位置

该驱动属于scsi子系统中的低层驱动,sata/sas控制器芯片8001,处于x86 cpu 和 sas expander 8054中间,桥梁的位置。1.8001发送smp命令与连接在上面的8054进行同通信。2.如果8054上面接入的是sata硬盘,8001发送stp命令进行通信。使用ATA指令。3.如果8054上面接入的是sas硬盘,8001发送ssp命令进行通信。使用SCSI指令。...

2021-11-21 22:02:55 585

原创 pm8001驱动内核代码分析(二)学习驱动第一步先看对象成员

1.pm8001驱动相关对象(1)相关头文件,所涉及的对象和枚举/drivers/scsi/pm8001/pm8001_hwi.h@||- struct@||| mpi_msg_hdr@||| phy_start_req@||| phy_stop_req@||| set_dev_bits_fis@||| pio_setup_fis@||| sata_completion_resp@||| hw_event_resp...

2021-11-14 22:37:25 603

原创 sas协议内核代码分析

1.sas相关对象(1)struct sas_internalstruct sas_internal { struct scsi_transport_template t; struct sas_function_template *f; struct sas_domain_function_template *dft; struct device_attribute private_host_attrs[SAS_HOST_ATTRS]; struc

2021-11-14 21:25:22 1441

原创 每天读Linux内核 01 定时器

定时器

2021-11-07 21:49:28 255

原创 sas协议分析

------------------------------------重要说明------------------------------------以下部分内容来网络,部分自华为存储官方教材具体教材内容请移步华为存储官网进行教材下载网络引用内容无法找到原创,如有侵权请通知------------------------------------重要说明------------------------------------1.存储中的SASSAS采用点对点的设计使得通信的.

2021-10-24 16:12:40 10393 2

原创 每天读论语《论语·学而》02

有子曰:“其为人也孝弟,而好犯上者,鲜矣;不好犯上,而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与!”原 句 译 文有子说:孝顺父母又友爱兄弟姐妹的人,很少会做出不尊重长者或上司的事情。如果他懂得尊重上司和长者,那么也很少会做出违法乱纪的事情。这才是君子应当关注的根本事务,根本建立了,治国和做人的原则也就有了。孝顺父母、友爱兄弟姐妹,这就是仁的根本啊!...

2021-10-24 06:13:41 100

原创 每天读论语《论语·学而》01

子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?”原 句 译 文孔子说:“学习知识后在生活中经常实践,这不是很愉快吗?有志同道合的朋友从远方来一起共事,不是很令人高兴吗?别人不了解我,我也不怨恨、恼怒,这不就是我修为的境界吗?"...

2021-10-23 09:32:41 134

原创 趣谈Linuxn操作系统:05 学会几个系统调用:咱们公司能接哪些类型的项目?

1.立项服务与进程管理立项服务,在Linux 操作系统中就是创建进程。创建进程的系统调用叫fork。在 Linux 里,要创建一个新的进程,需要一个老的进程调用 fork 来实现,其中老的进程叫作父进程(Parent Process),新的进程叫作子进程(Child Process)。Linux 就是这样想的。当父进程调用 fork 创建进程的时候,子进程将各个子系统为父进程创建的数据结构也全部拷贝了一份,甚至连程序代码也是拷贝过来的。#include<...

2021-10-16 22:06:41 132

原创 趣谈Linuxn操作系统:04 快速上手几个Linux命令:每家公司都有自己的黑话

【该文章知识来源《极客时间刘超老师-趣谈Linux操作系统》向大神致敬。趣谈Linux操作系统(极客时间)链接:http://gk.link/a/10iXZ欢迎大家来一起交流学习,一起探索Linux内核的奥秘,一起修炼硬本领,升职加薪。哈哈】常看,常用...

2021-10-16 21:01:44 148

原创 趣谈Linuxn操作系统:03你可以把Linux内核当成一家软件外包公司的老板

【该文章知识来源《极客时间刘超老师-趣谈Linux操作系统》向大神致敬。趣谈Linux操作系统(极客时间)链接:http://gk.link/a/10iXZ欢迎大家来一起交流学习,一起探索Linux内核的奥秘,一起修炼硬本领,升职加薪。哈哈】目录1.“双击 QQ”这个过程,都需要用到哪些硬件?2.从点击 QQ 图标,看操作系统全貌操作系统其实就像一个软件外包公司,其内核就相当于这家外包公司的老板。所以接下来的整个课程中,请你将自己的角色切换成这家软件外包公司的老板,设身处

2021-10-16 17:16:43 384

原创 趣谈Linuxn操作系统:02 学习路径:爬过这六个陡坡,你就能对Linux了如指掌

【该文章知识来源《极客时间刘超老师-趣谈Linux操作系统》向大神致敬。趣谈Linux操作系统(极客时间)链接:http://gk.link/a/10iXZ欢迎大家来一起交流学习,一起探索Linux内核的奥秘,一起修炼硬本领,升职加薪。哈哈】第一个坡:抛弃旧的思维习惯,熟练使用 Linux 命令行推荐阅读《鸟哥的 Linux 私房菜》《Linux 系统管理技术手册》《Linux命令行与shell脚本编程大全.第3版》第二个坡:通过系统调用或者 glibc,学会自己进行程序

2021-10-16 16:14:54 237

原创 趣谈Linuxn操作系统:01 我们为什么要学习Linux操作系统

该文章知识来源《极客时间刘超老师-趣谈Linux操作系统》向大神致敬。参考资料:趣谈Linux操作系统(极客时间)链接:http://gk.link/a/10iXZ欢迎大家来一起交流学习,一起探索Linux内核的奥秘,一起修炼硬本领,升职加薪。哈哈1.为什么要学习Linux操作系统无论是从个人的职业发展角度,还是从公司招聘候选人的角度来看,扎实的基础知识是很多人的诉求。底层需求,社会现状:拥有扎实的基础知识的程序员才能立于社会之林,所以我们要不断深入,反复研究学习Linux内核,

2021-10-16 09:27:40 423

原创 深入浅出块I/O子系统(二)块I/O子系统对象

目录块I/O子系统对象1 gendisk:通用磁盘2 hd_struct:分区3 block_device:块设备4 request_queue:请求队列5 request:块设备驱动层请求6 bio:通用块层请求块I/O子系统对象1 gendisk:通用磁盘2 hd_struct:分区3 block_device:块设备4 request_queue:请求队列5 request:块设备驱动层请求

2021-10-10 09:11:44 245

原创 深入浅出SCSI子系统(九)SCSI低层驱动编程模式

目录SCSI低层驱动编程模式1 定义主机适配器模板2 完善探测回调处理逻辑3 实现queuecommand回调函数1.设备DMA处理2.驱动与固件交互4 实现中断处理函数5 实现其他回调函数6 模块加载和卸载SCSI低层驱动编程模式1 定义主机适配器模板2 完善探测回调处理逻辑3 实现queuecommand回调函数1.设备DMA处理2.驱动与固件交互4 实现中断处理函数

2021-10-08 17:18:06 451

原创 深入浅出SCSI子系统(八)SCSI错误恢复

SCSI错误恢复1 命令进入错误恢复故障SCSI命令通过scsi_eh_scmd_add函数进入错误恢复(EH),执行下面的工作。函数scsi_eh_scmd_add()代码(摘自文件drivers/scsi/scsi_error.c)2 错误恢复线程执行SCSI错误恢复是由专门的内核线程来处理的。每个SCSI主机适配器有一个这样的内核线程,其名字为scsi_eh_#,其中#为主机适配器在系统范围内的唯一编号,在调用scsi_host_alloc函数分配SCSI主机适配器描述..

2021-10-08 17:04:53 3103

原创 深入浅出SCSI子系统(七)SCSI命令执行

目录SCSI命令执行scsi_execute_reqSCSI命令执行scsi_execute_req上面看到,在探测过程中发送的SCSI命令,如INQUIRY和SPINUP,它们的执行都调用了scsi_execute_req函数。从请求的角度,它们是发源于SCSI层的,但更常见的是来自上层的请求,如读/写文件等。这里将跟踪scsi_execute_req函数的执行,至于来自上层的I/O请求执行过程,在防止后面的块I/O子系统中讨论。函数scsi_execute_req()代码(摘

2021-10-05 10:20:48 2354

原创 深入浅出SCSI子系统(五)SCSI设备探测

SCSI设备探测在计算机系统启动过程中,操作系统会扫描默认的PCI根总线,从而触发了PCI设备扫描的过程,开始构建PCI设备树。SCSI主机适配器作为PCI设备会被PCI总线驱动层扫描到(PCI设备的扫描采用配置空间访问的方式),扫描到SCSI主机适配器之后,操作系统开始加载SCSI主机适配器驱动,SCSI主机适配器驱动就是上面所说的低层驱动。SCSI主机适配器驱动根据SCSI主机适配器模板分配SCSI主机适配器描述符,并添加到系统。在此之后或与此同时,还需要启动通过SCSI主机适配器扩展出...

2021-10-04 08:08:25 2477

原创 深入浅出SCSI子系统(四)添加适配器到系统

目录添加适配器到系统scsi_host_alloc()scsi_add_host()添加适配器到系统SCSI低层驱动是面向主机适配器的,低层驱动被加载时,首先要添加主机适配器。主机适配器可以在PCI子系统完成ID匹配时添加,或者通过手工方式添加。所有基于硬件PCI接口的主机适配器都采用前一种方式,而UNH iSCSI启动器采用的是后一种方式。添加主机适配器包括两部分的内容,为主机适配器分配数据结构,将主机适配器添加到系统。SCSI中间层为此提供了两个公共函数:scsi_host_

2021-10-02 16:01:16 1144

原创 深入浅出SCSI子系统(三)SCSI子系统初始化

SCSI子系统总是被编译到Linux内核的,其初始化入口函数为init_scsi,在文件drivers/scsi/scsi.c中。它使用宏subsys_initcall定义,依次调用:• scsi_init_queue——初始化聚散列表等所需要的存储池;• scsi_init_procfs——初始化proc文件系统中与SCSI有关的目录项;• scsi_init_devinfo——设置SCSI动态设备信息列表;• scsi_init_hosts——注册shost_class类,这将在sys/

2021-10-02 14:41:28 839

原创 深入浅出SCSI子系统(二)SCSI子系统对象

目录SCSI子系统对象1 scsi_host_template:SCSI主机适配器模板2 Scsi_Host:SCSI主机适配器3 scsi_target:SCSI目标节点4 scsi_device:SCSI逻辑设备5 scsi_cmnd:SCSI命令SCSI子系统对象下图SCSI子系统对象之间的关系。Scsi_Host、scsi_target和scsi_device分别描述的是Linux SCSI模型中的主机适配器、目标节点和逻辑单元,而scsi_host_templa

2021-09-29 07:36:26 2769

原创 深入浅出SCSI子系统(六)SCSI 磁盘驱动

Linux SCSI子系统实现了各种类型的高层驱动,如SCSI磁盘驱动、SCSI磁带驱动和SCSI CDROM驱动等。SCSI总线类型scsi_bus_type SCSI设备和SCSI驱动

2021-09-24 06:57:55 6027

原创 深入浅出块I/O子系统(一)概述

深入浅出块I/O子系统

2021-09-17 21:47:43 573

原创 深入浅出Multi-Disk(MD)模块(一)

深入浅出Multi-Disk(MD)模块

2021-09-17 21:46:25 260

原创 深入浅出SCSI子系统(一)Linux 内核中的 SCSI 架构

scsi系统

2021-09-17 21:43:06 4034

原创 深入浅出SSD--5.1PCIE基础知识

参考《深入浅出SSD:固态存储核心技术,原理与实战》

2021-08-29 21:27:57 7176 2

原创 李笑来《通往财富自由之路》学习笔记-51“提问”

脉络框图:论述:1.为什么高级程序员能提出好问题,对问题有更深层次的思考和理解?a.高级程序员建立在强大的自学能力基础上,遇到不会的问题的时候,他们懂得如何检索文档,如何问Google,工具书等方式查找答案,高效的掌握新技能,新知识。2....

2021-04-24 08:24:06 246

原创 sd/mmc驱动框架-(三)mmc子系统的数据结构

知识脉络框图:备注:相关知识来源与文献《深入实践嵌入Linux系统移植 范展源 刘韬》

2021-04-11 11:30:29 672

原创 sd/mmc驱动框架-(二)Linux mmc子系统概述

框架图和知识脉络图:备注:相关知识来源与文献《深入实践嵌入Linux系统移植 范展源 刘韬》

2021-04-11 10:27:53 206

sata3.0.rar

sata3.0英文协议

2021-10-25

arm常用指令.pdf

ARM指令集是指计算机ARM操作指令系统。在ARM中有两种方式可以实现程序的跳转:一种是跳转指令;另一种是直接向PC寄存器(R15)中写入目标地址值。 ARM指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。

2020-01-09

MIPS 指令集.pdf

mips指令集文档,适合做mips架构开发. MIPS(Million Instructions Per Second):单字长定点指令平均执行速度 Million Instructions Per Second的缩写,每秒处理的百万级的机器语言指令数。这是衡量CPU速度的一个指标。像是一个Intel80386 电脑可以每秒处理3百万到5百万机器语言指令,即我们可以说80386是3到5MIPS的CPU。MIPS只是衡量CPU性能的指标。

2020-01-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除