小白学Linux
文章平均质量分 83
笨鸟先走
这个作者很懒,什么都没留下…
展开
-
linux kernel同步技术
内核在随时响应各种中断、异常、内核抢占、进程睡眠等事件,所以内核并不是严格的按照顺序执行的,而是采用交错的方式。交错执行意味着对资源有竞争,譬如进程A正在使用资源1的时候,因为发生某些事件导致程序切换到进程B执行,进行B也需要使用资源1,这时候进程A、B就同时竞争资源1。若没有同步机制,进程B等待进程A对资源1的释放,那么进程B将会改写资源1的数据,再切回进程A时,资源1就不是进程A想要的值了。原创 2022-09-22 23:02:22 · 303 阅读 · 1 评论 -
linux kernel的中断编程
上一篇文章介绍了linux kernel中的中断系统,这边文章简单介绍在内核中如何使用中断编程。首先编写中断程序需要注意的事项中断处理函数中不能睡眠,也不能调用执行了睡眠动作的函数当中断处理函数有部分代码进入临界区时,使用自旋锁,而不是使用互斥锁,因为获取互斥锁获取不到的时候,会进入睡眠状态。中断处理函数不能与用户空间交换数据必须尽快执行中断处理程序。为了确保这一点,最好将实现分为两部分,上半部分和下半部分。处理程序的上半部分将尽快完成工作,稍后再完成下半部分工作,这可以通过 softirq 或原创 2021-11-01 11:02:19 · 164 阅读 · 0 评论 -
linux kernel中的中断系统
在linux中,中断信号会将CPU转移到其它任务上。其它任务一般被称为中断处理程序或者中断服务程序。中断来的时候会发生什么中断往往由硬件设备的电子信号产生,并被引导到中断控制器上。将中断来的时候,内核将完成下列事情:接收到中断后,中断控制器向处理器发送信号。处理器检测到该信号并中断其当前的任务以处理中断。然后处理器可以通知操作系统发生了中断,操作系统可以适当地处理中断。不同的设备使用与每个中断相关联的唯一值与不同的中断相关联。这样操作系统能够区分中断并知道是哪个硬件设备引起了这样的中断。同时原创 2021-10-28 17:28:40 · 357 阅读 · 0 评论 -
linux kernel中的sysfs
介绍操作系统将虚拟内存分为内核空间和用户空间。内核空间严格保留用于运行内核、内核扩展和大多数设备驱动程序。相比之下,用户空间是所有用户模式应用程序工作的内存区域,必要时可以换出该内存。用户空间和内核空间之间的通信有多种方式,sysfs就是其中的一种。Linux中的sysfssysfs 和proc一样是虚拟文件系统。Sysfs 中的文件包含有关设备和驱动程序的信息。Sysfs 中的某些文件甚至是可写的,用于配置和控制连接到系统的设备。Sysfs 始终挂载在 /sys 上。Sysfs 中的目录包含设备的原创 2021-10-21 14:00:27 · 714 阅读 · 0 评论 -
小白学linux——主从设备号
介绍如果我们为面向字节的操作编写驱动程序,那么我们将它们称为字符驱动程序。由于大多数设备都是面向字节的,因此大多数设备驱动程序都是字符设备驱动程序。例如,串行驱动程序、音频驱动程序、视频驱动程序、相机驱动程序和基本I/O驱动程序。事实上,所有既不是存储设备驱动程序也不是网络设备驱动程序的设备驱动程序都是某种类型的字符驱动程序。应用程序如何与硬件设备通信?applications -> device file or device Node -> Majaor and Minor Number原创 2021-07-22 17:25:17 · 1197 阅读 · 0 评论 -
小白学linux——工作队列(workqueue)
工作队列工作队列在linux2.6版本中被引入,类似于linux2.4中的“task queue”(任务队列)。工作队列机制允许内核函数延迟执行,也就是你将一个即将要执行的函数放进工作队列中,工作队列机制中的工作线程会在一定时间之后执行该函数。虽然有点像可延迟函数,但是他们还是有一些区别。最主要的区别在于可延迟函数在中断上下文中运行,而工作队列中的函数在进程上下文中执行。在进程上下文中运行是可以执行阻塞函数(例如,需要访问磁盘上数据块的函数)。可延迟函数和工作队列中的函数都不能访问进程的用户模式地址空间原创 2021-07-19 10:11:58 · 1638 阅读 · 0 评论 -
小白学Linux——等待队列(waitqueue)
#等待队列介绍当你编写Linux驱动程序、模块或内核程序时,某些进程会为了某些事件等待或休眠。在Linux中有多种处理睡眠和唤醒的方法,每种方法都适合不同的需求。等待队列(Waitqueue)也是处理这种情况的方法之一。每当进程必须等待事件(例如数据到达或进程终止)时,它就应该进入睡眠状态。休眠会导致当前进程暂停执行,从而释放处理器给其它进程使用。一段时间后,进程等待的资源就绪之后,该进程会被唤醒。等待队列是内核提供的一种实现等待的机制。顾名思义,等待队列是等待事件的进程列表。换句话说,等待队列用于在原创 2021-07-21 17:38:24 · 1605 阅读 · 0 评论