当前位置:嗨网首页>书籍在线阅读

18-总结

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

10.7 总结

Linux的中断处理分为两个半部,顶半部处理紧急的硬件操作,底半部处理不紧急的耗时操作。tasklet和工作队列都是调度中断底半部的良好机制,tasklet基于软中断实现。内核定时器也依靠软中断实现。

内核中的延时可以采用忙等待或睡眠等待,为了充分利用CPU资源,使系统有更好的吞吐性能,在对延迟时间的要求并不是很精确的情况下,睡眠等待通常是值得推荐的。而ndelay()、udelay()忙等待机制在驱动中通常是为了配合硬件上短时延迟要求。

由于Linux系统中提供了复杂的内存管理功能,所以内存的概念在Linux系统中变得相对复杂,出现了常规内存、高端内存、虚拟地址、逻辑地址、总线地址、物理地址、I/O内存、设备内存、预留内存等概念。本章将系统地讲解内存和I/O的访问编程,带您走出内存和I/O的概念迷宫。

11.1节讲解内存和I/O的硬件机制,主要涉及内存空间、I/O空间和

MMU。

11.2节讲解Linux的内存管理、内存区域的分布、常规内存与高端内存的区别。

11.3节讲解Linux内存存取的方法,主要涉及内存动态申请以及通过虚拟地址存取物理地址的方法。

11.4节讲解设备I/O内存和I/O端口的访问流程,这一节对于编写设备驱动意义非常重大,设备驱动使用此节的方法访问物理设备。

11.5节讲解设备驱动中的DMA与CACHE一致性问题以及DMA编程方法。