首页 » 互联通信 » 应用轨范read和write到设备的过程

应用轨范read和write到设备的过程

福州有家装饰工程通讯 2025-02-12 0

扫一扫用手机浏览

文章目录 [+]

这篇文章阐述的是read和write从运用程序调用后,都发生了什么,终极是怎么发送给设备的,设备又是怎么相应这些要求的过程,下图为整体调用过程涉及到的模块,我会对从运用程序到设备,逐个讲解各个模块的细节。

运用程序写数据(write)的过程

第一步:运用程序调用IO库

应用轨范read和write到设备的过程 应用轨范read和write到设备的过程 互联通信

为了方便运用程序写入设备,常日操作系统都供应IO库,在IO库中进行系统调用,同时为了减少系统调用的次数,常日IO库会增加缓冲,每当缓冲满了,就进行一次系统调用,IO库会供应write方法,一样平常为如下格式

应用轨范read和write到设备的过程 应用轨范read和write到设备的过程 互联通信
(图片来自网络侵删)

/writeDatas 便是要写入的数据,写入的数据一样平常不直接系统调用写入设备,而是等待IO库中缓冲满了,才进行系统调用,进行系统调用后才写入设备。
/write(byte[] writeDatas,int offset, int len)

第二步:IO库进行系统调用

IO库在缓冲满了后,或者调用flush或者close时,都会进行系统调用,系统调用开始实行操作系统代码,进入内核模式,操作系统会根据系统调用号(运用程序编译后,会将系统调用号链接好)定位到不同的设备驱动程序,不同的设备,系统调用号不同,系统调用号也可以认为是设备编号,它是操作系统分配给设备的唯一标识,找到了驱动程序后,就将数据交给设备驱动程序去处理。

第三部:实行设备驱动程序

打算机在启动时,会安装设备驱动程序到操作系统中,同时根据设备驱动程序天生系统调用号即设备编号,其余也会根据设备驱动程序初始化中断向量表,建立设备编号跟中断向量的映射关系,如下图所示为中断旗子暗记向量表

中断设备向量表

设备驱动程序既可以直接操作硬件,给硬件发送各种指令(通过设备掌握寄存器),也可以供应上层接口供操作系统调用,如下图上部分供应上层接口,下部分便是中断处理程序,用于相应CPU中断。

设备驱动程序架构图

正如上图所示,设备驱动程序分为上部分,写行列步队,读行列步队和下部分,下边阐述一下对付写操作来说,上部分,写行列步队,下部分的详细逻辑

上部分:供应上层接口,操作系统根据系统调用号,调用该接口。

设备驱动程序-上部分流程

该部分的紧张逻辑是:

1.将运用程序写的数据(用户内存空间)拷贝到设备驱动程序的写行列步队(内核内存空间)中。

2.设置设备掌握寄存器的中断旗子暗记,如果设备正在操作,则忽略该旗子暗记。

3.系统调用完成,返回到运用程序,剩下的事情交给驱动程序的下半部分实行。

数据流如下图所示

写行列步队:用于存放运用程序写入的数据

下部分:CPU接管到中断旗子暗记后,会查找中端向量表,实行中断处理程序,中断处理程序便是设备驱动程序的下部分逻辑,整体流程如下图所示

下部分即中断处理程序实行流程

该部分的紧张逻辑:

1.从写行列步队中获取一项要写入的数据,设置设备掌握寄存器写命令,掌握设备将这一项数据写到设备中

2.写行列步队中如果为空的话,设置设备状态为空闲状态,打消设备中断状态。

第四步:设备实行写入指令和发出中断旗子暗记

设备通过掌握寄存器和状态寄存器来接管命令,掌握寄存器用于接管来自设备驱动程序设置的指令,例如中断,启动设备,关闭设备,写入数据到设备等。

设备创造掌握寄存器中有中断旗子暗记后,会向CPU发出中断旗子暗记,CPU不才一次实行指令时,检讨到有中断旗子暗记,根据中断旗子暗记找到中断向量表,定位到设备驱动程序的下部分,实行中断处理程序。

设备在接管到写命令后,会开启设备,实行写设备操作,写入完成后,会向CPU发出中断旗子暗记,CPU不才一次实行指令时,检讨到有中断旗子暗记,根据中断旗子暗记找到中断向量表,定位到设备驱动程序的下部分,实行中断处理程序,从而实行下一次写入数据。

设备实行流程图

运用程序读数据(read)的过程

运用程序读数据的整体过程与写比较类似,下面讲述不同的部分

第一步:运用程序调用IO库

为了方便运用程序读入设备数据,常日操作系统都供应IO库,在IO库中进行系统调用,同时为了减少系统调用的次数,常日IO库会一次性读取一批数据,IO库会供应read方法,一样平常为如下格式

read(byte[] readDatas,int offset, int len)

第二步:IO库进行系统调用

IO库会进行系统调用,系统调用开始实行操作系统代码,进入内核模式,操作系统会根据系统调用号(运用程序编译后,会将系统调用号链接好),不同的系统调用号即设备编号,根据不同的设备编号定位到不同的设备驱动程序,然后将交给设备驱动程序去读取数据。

第三部:实行设备驱动程序

上部分:会检讨读行列步队有没有数据,如果没有数据,则操作系统将运用程序加入到壅塞行列步队,运用程序壅塞,否则获取读行列步队中的数据,从内核空间拷贝到用户空间,读系统调用返回。

读行列步队:从设备读入的数据,加入到读行列步队中

下部分:CPU接管到中断旗子暗记后,会查找中断向量表,实行中断处理程序即该部分的逻辑,整体流程如下

1.检讨读行列步队是否满了,如果没有满,则设置设备掌握器读指令,掌握设备读入下一批数据

2.如果行列步队满了,则通过操作系统将运用程序从壅塞行列步队移出,加入到就绪行列步队,操作系统调度运用程序连续读入数据。

第四步:设备实行读指令和发出中断旗子暗记

设备通过掌握寄存器和状态寄存器来接管命令,掌握寄存器用于接管来自设备驱动程序设置的指令,例如中断,启动设备,关闭设备,读设备数据等。

设备在接管到读命令后,会开启设备,实行读操作,读入完成后,将读入的数据加入到读行列步队中,向cpu发出中断旗子暗记,cpu接管到中断旗子暗记后,会根据中断向量表定位到设备驱动程序,实行设备驱动程序下半部分逻辑。

标签:

相关文章

干货!巧用存销比库存积压无所遁形!

存销比=期末库存金额(数量)/周期内商品发卖金额(数量)存销比,顾名思义是库存与发卖的比值,利用维度可从企业经营角度切入:企业存销...

互联通信 2025-02-12 阅读1 评论0