《深入理解LINUX内核》笔记(四)

每个能够发出中断请求的硬件设备控制器都有一条名为IRQiinterpretrequest)的输出线


80x86微处理器大约发布了约20种不同的异常,内核必须位每种异常提供一种专门的异常处理程序


对某些异常,CPU控制单元会在执行异常处理程序前产生一个硬件出错码(hardwareerror code),并且压入内核态堆栈


中断描述符表(itterruptdescriptortable,IDT)是一个系统表,它与每一个中断或者异常向量相联系,每一个向量在表中都有相应的中断或异常处理程序的入口地址


linux利用中断门处理中断,利用陷阱门处理异常


内核启用中断以前,必须把IDT表的初始地址装到itdr寄存器,并初始化表中的每一项


异常处理程序和宗有一个标准的结构,由3部分:

1.在内核态堆栈中保存大多数寄存器的内容(这部分用汇编语言实现)

2.用高级的C函数处理异常

3.通过ret_from_exception()函数从异常处理程序退出


中断类型LI/O中断、时钟中断、处理器间中断


自旋锁保护不同CPU的并发访问


第五章内核同步


抢占内核的主要优点是:一个在内核态运行的进程可能在执行一个函数期间被另一个进程取代


只有当内核正在处理异常处理程序(尤其系统调用),而且内核抢占没有被显式的禁用时,才可能抢占内核。此外,本地CPU必须打开本地中断


只有在开中断的情况下,才可能发送内核控制路径的嵌套

通过在访问共享数据结构时金庸内核抢占功能实现临界区


中断处理程序、软中断和tasklet既不可以被抢占也不能被阻塞,所以不能长时间处于挂起状态


软中断和tasklet不能在以份额CPU上交错执行


同一个tasklet不能同时在几个CPU红色那个执行


内核使用的各种同步技术 说明

CPU变量(pre-cpu variable) CPU之间复制数据结构

原子操作 对一个计数器原子的“读-修改-写”的指令

内存屏障 避免指令重新排序

自旋锁 加锁时

信号量 加锁时阻塞等待(睡眠)

顺序锁 基于访问计数器的锁

本地中断的禁止 禁止单个CPU上的中断处理

本地软中断的禁止 禁止单个CPU上的可延迟函数处理

-拷贝-更新(RCU 通过指针而不是锁来访问数据结构


,每CPU变量主要时数据结构的数组,每个CPU对应数组的一个元素。

内核控制路径应该在禁用抢占的情况下访问CPU变量


汇编语言指令访问存储单元两次,第一次读原值,第二次写新值

在串处理系统中,永远都不会发生内存总线窃用的情况


指令不一定按源代码顺序执行,编译器可能会以使寄存器最优的方式重新安排汇编指令

所有的同步原语起优化和内存屏障的作用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深入理解Linux内核带书签的PDF是一本非常有价值的学习资源。Linux内核是操作系统的核心,负责管理硬件资源和提供用户与计算机硬件交互的接口。深入理解Linux内核可以帮助我们更好地理解操作系统的工作原理,并能够进行系统调优和故障排除。 这本书通过详细的介绍和分析,深入探讨了Linux内核的各个方面,包括进程管理、内存管理、文件系统、设备驱动、网络协议栈等等。通过学习这本书,我们可以了解内核的内部运行机制、数据结构和算法,并且了解它是如何处理各种操作系统任务的。 另外,这本书提供了书签功能,这对于学习者来说非常方便。可以使用书签功能来标记我们感兴趣或重要的内容,以便以后翻阅和复习。这样有助于我们更好地掌握书中的知识,加深理解,并能够更快地找到我们需要的信息。 带有书签的PDF版本的好处是可以轻松地在电子设备上阅读,比如电脑、平板电脑或手机。它具有可搜索的特性,这使得我们可以快速地查找特定的主题或关键词。此外,它还具有可扩展性,可以添加自己的笔记和注释,以便更好地组织知识。 总之,深入理解Linux内核带书签的PDF是一本非常有益的学习资源。它可以帮助我们深入学习和理解Linux内核,提升我们的技术水平,并且可以方便地进行知识的复习和查找。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值