【精通Linux设备驱动程序开发】第二章 内核

学习<精通Linux设备驱动程序开发>笔记。
第二章 内核

1.启动过程:

  1. BIOS从启动设备中导入主引导记(MBR)
  2. MBR中代码查看分区表从活动分区读取GRUB、lilo或SYSLINUX等引导装入程序(bootloader)
  3. Bootloader会加载压缩后的内核映像并将控制权传递给它。
  4. 内核取得控制权后,将自身解压缩并投入运转。

2.内存

低端内存:896MB以内的常规可被寻址的内存,kmalloc()函数就是从该区域分配内存
高端内存:高于896MB的内存区域。

3.jiffy

系统定时器2个连续的节拍之间的间隔。

4.校准延迟代码解读:

在这里插入图片描述

5.net

Linux套接字(socket)是用户空间应用程序访问各种网络协议的统一接口。

6、内核模式和用户模式

内核本身处于内核模式,所有的用户进程都运行在用户模式之中。内核模式中的代码可以无限制地访问所有处理器指令集以及全部内存和I/O空间。

7.内核定时器

Jiffies被定义为volatile类型,告诉编译器不要优化该变量的存取代码,确保每个节拍发生的定时器中断处理程序都能更新jiffies值。
内核中,以jiffies为单位进行的延迟通常被认为是长延时。实现长延时更好的办法是睡眠等待而不是忙等待。
wait_event_timeout()在一个特定的条件满足或者超时发生后,希望代码继续运行。
msleep()表示睡眠指定的时间,单位是毫秒.
长延时只能适用于进程上下文,睡眠等待不能用于中断上下文。中断上下文不允许执行schedule()或睡眠。中断中进行短时间的忙等待是可行的。

发布了35 篇原创文章 · 获赞 13 · 访问量 6328

猜你喜欢

转载自blog.csdn.net/qq_35306281/article/details/102558806