Linux 架构书籍:颠覆编程视野(linux架构书籍)
#### Linux 架构书籍:颠覆编程视野
Linux 操作系统提供了高级、安全性高、灵活度高的编程架构,能够适用于许多不同类型的应用系统。为了更好地深入理解 Linux 架构,许多 C\C++ 开发者汲取 Linux 操作系统的相关知识及见解,走上一条独特的学习道路。
在此,我们强烈推荐 *Linux Kernel Development* 这本书,它凝聚了 25 年 Linux 内核开发经验,是目前国内外实力派 Linux 内核开发者必备的指南。本书从 Linux 内核源码分析出发,深入讨论 Linux 操作系统架构下的多个重要组件,包括内存管理、设备驱动开发、中断处理、中断子系统以及进程、线程、信号等内容,其中包括了各种实用的源码实例,实现了从底层到表面,从硬件到软件的完整解析,帮助你更好的理解 Linux 内核的设计思想及其构建步骤,从而颠覆编程的视野,重新看待软件编程世界。
除此书,还有一本《Linux Device Drivers》,是 Linux 外围设备驱动开发必备参考,该书介绍了 Linux 设备驱动开发的核心技术和流程,例如:申请设备号、定义读写文件操作、模块加载与卸载、中断处理等,书中给出的实例代码很有帮助,让你轻松进行快速的设备驱动开发,下面以一个 UART 中断处理的实例来说明:
“`c
#include
#include
#include
/* 确认中断号 */
static int irqNumber;
/* 中断句柄函数的参数 */
static void *dev_id;
/* 中断处理函数 */
static irq_return_t irq_handler(int irq, void *dev_id){
/* 静态数据 */
static int count = 0;
/* 读取端口 */
u8 data = inb(0x378);
count += data;
printk(KERN_INFO “Count %d, byte %x \n”, count, data);
/*
* 接收中断
*/
return IRQ_HANDLED;
}
static int __init My_init(void){
/* 申请中断号 */
int ret;
ret = request_irq(irqNumber, (irq_handler_t) irq_handler, 0, “My_handler”, &dev_id);
return 0;
}
static void __exit My_exit(void){
synchronize_irq(irqNumber);
free_irq(irqNumber, &dev_id);
printk(KERN_INFO “Freeing up the IRQ line”);
}
以上两本书使你更轻松、更系统地学习 Linux,利用 C/C++ 编程架构中的技术,有效的建立工程的效率,令你颠覆编程的视野,从而掌握更多编程技术,开发出更加高效的软件。