浅析Linux从API调用到底层驱动的过程

转自:https://blog.csdn.net/u014294166/article/details/52155913

 

一、结构流程图

本篇只是嵌入式Linux的开篇,仅仅通过如下结构来简单说说调用流程。 
这里写图片描述

分析:应用层调用open()函数打开鼠标文件时的调用过程。 
当用户通过API中的open()函数试图去打开一个鼠标文件时,open()函数会有一个返回值,这个返回值即为文件描述符,文件描述符被定义为file结构体,file结构体关联到硬件驱动,然后硬件驱动去关联到相应的硬件设备。 
再具体一点说,API的open()函数会通过系统调用,而系统调用进入到系统内核即VFS。然后根据文件描述符File来对应硬件驱动。文件描述符实际上是一个结构体,里面是一些函数指针,会提前注册到内核,linux驱动和windows驱动的模型不同,根据不同的模型进行不同的函数封装,当需要调用哪个就是通过回调进行调用驱动。 
其中File结构体中有一个inode成员,inode是磁盘索引,可以理解为标记了文件在磁盘的位置。

============无聊分割线============== 
突然发现自己一不小心迈入了所谓的“嵌入式”开发,曾经准备走应用层的开发,准备玩转网络协议的,可是谁都计划不了真正的未来O(∩_∩)O。。。。好吧,既然到了底层,何不借此机会好好的去深究一下编程的本质呢?!现在有时有种“错觉”,觉得所做的应用层开发实际上只是在模仿底层行为给了个UI而已。弄懂底层的实现原理或许可以把问题看得更透彻,更利于去分析问题,升华问题。

 

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值