Linux中关于中断和fork的学习笔记.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux中关于中断和fork的学习笔记

Linux中关于中断和fork的学习笔记 ByEchoa 这几天主要学习了中断和fork函数的知识,以下是总结: 一、中断与时钟: 由于有了字符设备驱动的知识,这部分学习相对比较轻松,其实是在完善设备 驱动程序,增加了中断部分的内容。 中断的引入,主要是为缓解cpu与硬件设备速度的差异,提高cpu效率,另外可 以故障处理,不过随着中断技术的发展,它实现的功能已越来越多。根据中断的来 源可分为内部中断和外部中断;根据是否可屏蔽分为可屏蔽中断和不可屏蔽中断; 根据中断入口跳转方法可分为向量中断和非向量中断(多个中断共享一个入口地 址)。 为了适应高吞吐和中断程序的短小精悍,Linux的中断引入了顶半部和底半部分 “ ” 离的机制,顶半部进行 登记中断 的工作,底半部处理不紧急的耗时中断处理工作, 但若中断处理工作比较少时,可以在顶半部完成全部工作。执行cat /proc/interrupts 可查看中断的相关信息。实现顶半部的工作的是中断处理程序,实现底半部的机制 有taklet,工作队列和软中断,其中tasklet是基于软中断实现的,即用软件方式模拟 硬件中断的概念。软中断和tasklet运行于中断上下文,而工作队列则运行于进程上 下文。因此,软中断和tasklet处理函数中不能睡眠,而工作队列处理函数中允许睡 cpu 眠。硬中断是外设对 的中断,软中断是硬中段服务程序对内核的中断,信号是由 内核(或其他进程)对某个进程的中断。 以下是几个重要的函数和宏: (1)申请IRQ,定义在源码的include/linux/interrupt.h 中。 intrequest_irq(unsiged int irq,// 要申请的硬件中断号 void (*handler) (int irq,void *dev_id,structpt_regs *regs)),//中断处理函数 unsigned longirqflags,//中断属性,如快速中断,共享中断等 const char *devname,//设备名 void *dev_id);// 设备标识,中断共享时会用到,一般为设备结构体或NULL 返回0表示成功,-INVAL 表中断号无效或处理函数指针为NULL,-EBUSY表中 断已被占用且不能共享。 (2)释放Irq,定义在linux/kernel/irq/manage.c 中。 void free_irq(unsignedint irq,void *dev_id); 释放 request_irq分配的中断,参数定义与request_irq相同。当任何驱动程序都不 使用时删除一个中断处理例程,在共享irq时要确保在调用此函数前中断已失效。函 数完成不返回任何值,这个函数的调用必须在中断上下文中。 (3)在kernel/irq/manage.c中定义了以下三个函数用于屏蔽一个中断源: void disable_irq(int irq); void disble_irq_nosync(intirq); void enble_irq(int irq); 第一个函数禁止给定的中断,它会等待目前的中断处理完成,如果调用它的线 程持有任何中断处理程序所需的资源 (如自旋锁),系统可能死锁,第二个函数禁止 给定中断后立即返回。 (4)屏蔽本cpu内的所有中断 void local_irq_save (unsignedflags);//保存中断状态后,禁止中断 void local_irq_disable(void);//关闭中断不保存状态 local cpu 以 开头说明作用范围在本 内。 (5)在include/linux/interrupt.h 中定义了 structtasklet_struct { structtasklet_struct *next; unsigned long state; atomic_tcount;//原子计数 void (*fu

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档