linux驱动学习笔记(1)

1、设备驱动分类

一般来说设备驱动分三类:字符设备驱动、块设备驱动、网络设备驱动。

1.1 字符设备驱动

字符设备驱动:软件操作设备时是以字节为单位进行的。典型的如LCD、串口、LED、蜂鸣器、触摸屏....

字符设备驱动是比较重要的,为什么,因为大多数的设备都是属于字符设备。同时字符设备驱动修改也比较方便,我们可以直接找到对应的点去修改,而不在乎其余位置。linux驱动工程师大多数工作都是一次展开的

1.2 块设备驱动

块设备驱动被软件操作时,是以块(多个字节构成的一个单位)为单位的。设备的块大小是设备本身设计时定义好的,软件是不能去更改的,不同设备的块大小可以是不一样的。常见的块设备都是存储类设备,如:硬盘、NandFlash、iNand、SD...操作块设备时,我们必须以块单位进行操作,将一块的数据读取到内存中去,然后在内存中找到对应的那个字节数修改之后再以一块的数据写入到我们的块设备中去。

因为块设备驱动修改起来比较麻烦,比如一个块里有64个字节,其中第37个字节我们需要把里面的数字a改为b,那么我们就需要把这个块里面的所有字节读出来,然后把37的a改为b,最后就把改好了的这个64个字节写回去。所以就比较麻烦。

1.3 网络设备驱动

网络设备、是专为网卡设计的驱动模型,linux中网络设备驱动主要目的是为了支持API中socket相关的那些函数工作。这个用的比较少。

2.linux内核组成

linux内核主要是由进程调度内存管理虚拟文件系统网络接口进程通信这五个子系统组成的。

2.1 进程调度

多任务系统可以分为非抢占式、和抢占式两种。linux提供抢占式多任务模式,进程在被抢占之前能够被运行的时间叫做进程的时间片。

2.1.1 linux调度的实现

时间记账

进程选择

调度器入口  入口就是schedule

睡眠和唤醒

2.1.2 进程概念  线程关系

进程是正在执行的程序代码的实时结果,是处于执行期的程序以及相关资源的总称。

线程是在进程中活动的对象,内核调度的对象是线程,而不是进程。

2.1.3 进程上下文

 一般程序在用户空间执行时,当一个程序执行了一个系统调用或者触发了某个异常,它就陷入了内核空间。此时,我们称“代表进程执行”并处理进程上下文中。除非在此间隙有更高优先级的进程需要

2.2 系统调用

系统调用是用户空间访问内核的唯一手段,除了陷入和异常外,他们是内核唯一的合法入口

3、中断处理

中断处理程序是被内核调用来响应中断的,它运行在中断上下文,中断处理程序是上半部。当接收到一个中断时,他就立即开始执行,但只做严格时限的工作。例如,对接收的中断进行应答或答复硬件,这些工作都是在所有中断都被禁止的情况下完成的,能够被允许稍后完成的工作会推迟到下半部

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值