可延迟函数本质上是由中断的出现激活的,而延迟函数执行时不可能产生异常
中断可以继续在CPU上得到服务
在每个CPU上可延迟函数的执行都将串行化
在多处理器系统上,要用自旋锁确保任何时候只有一个内核控制路径访问数据结构
操作涉及两个不同的索引节点时,必须采用两个信号量
第六章、定时测量
时间戳time stamp:文件的最后访问时间
定时测量是基于固定频率振荡器和计数器的几个硬件电路完成的
在80x86中体系结构中,内核必须显式地与几种时钟和定时器电路打交道
时钟电路同时用于跟踪当前时间和产生精确的时间度量
定时器电路由内核编程,所以以固定、预先定义的频率发出中断
所有PC都有实时时钟(RTL,real time clock),独立于CPU和所有其他芯片
时间戳计数器TSL,linux在初始化系统时必须确定时钟信号的频率。事实上,因为编译内核时并不声明这个频率,所以同一内核映像可以运行在产生任何时钟频率的CPU上
可编程间隔定时器programmable internal timer PIT PIT永远以内核确定的固定频率不停地发出中断
短的节拍产生较高分辨度的定时器,需要CPU在内核态花费较多的时间,当这种定时器执行同步I/O多路复用时,有助于多媒体的平滑播放和较快的响应时间
时钟中断的频率取决于硬件体系结构
高精度事件定时器(HPET),可以通过映射到内存空间的寄存器来对HPET芯片编程
任何计数器最多可以与32个定时器相关联,每个定时器由一个比较器和一个匹配寄存器组成。比较器是一组用于检测寄存器中的值与匹配寄存器中的值是否相等的电路。若找到匹配值就产生硬件中断
Linux必须执行与定时相关的操作,例如,内核周期性地:
1. 更新自系统以来所经过的时间
2. 更新时间和日期
3. 确定当前设备在每个CPU上运行的时间,若超出分配时间,则抢占它
4. 更新资源使用统计数
5. 检查每个软定时器的时间间隔是否已到
Linux的计时体系结构timekeepingarchitecture 是一组与时间流相关的内核数据结构和函数
在多处理器系统上,所有普通活动(如软定时器的处理)都是由全局定时器的中断触发的,而具体活动是由本地APIC定时器产生的中断触发的
内核使用两个基本的计时函数:一个保持当前最新时间,另一个计算在当前秒内走过的纳秒数
伙伴系统算法采用页框作为基本内存区,这适合于对大块内存的请求
内存区的大小取决于2的幂,而不取决于存放的数据大小
第九章、进程地址空间
内核是操作系统中优先级最高的成分
内核总是尽量推迟给用户态进程分配动态程序
内核频繁执行的一个操作就是查找包含指定线性地址空间的线性区
Linux2.6把内存描述符存放在叫做红黑树(read-black-tree)的数据结构中
为了存放进程的线性区,linux既使用了链表,又使用了红黑树,一般的,红黑树用来确定含有指定地址的线性区,而链表通常在扫描整个线性区集合时使用
线性区的大小是4KB的倍数(必须包含完整的页),而栈的大小却是任意的
每个unix进程都拥有一个特殊的线性区,这就是所谓的堆heap,堆用于满足进程的动态内存请求
第十章、系统调用
所有的系统调用都返回一个整数值。在内核中,正数或0表示系统调用成功结束,而负数表示一个出错条件
作用于用户态地址空间的内核函数使用修正代码技术
第十一章、信号
内核分信号传递的两个不同阶段:
信号产生:
内核更新目标进程的数据结构以表示一个新信号已被发送
信号传递:
内核强迫目标进程通过以下方式对信号做出反应:或改变目标的执行状态,或开始执行一个特定的信号处理程序,或两个都是
第十二章、虚拟文件系统
虚拟文件系统(virtual filesystem)也可以称为虚拟文件系统转换virtual filesystem switch,UFS 是一个内核软件层,用来处理与unix文件系统相关的所有系统调用。其健壮性表现在能为各种文件系统提供一个通用的接口
UFS支持的文件系统可以划分为三种主要类型:
磁盘文件系统:
Linux 第二扩张文件系统ext2 第三文件扩展系统ext3 (third extended filesystem)及resier文件系统(reiser FS)
Unix sysv文件系统(system V,Coherent,Xenix)、UFS(BSD,Solaris,NEXTSTEP)
MINIX文件系统及VERTIASVXFS(SCD UnixWare)
微软公司文件系统:如MS-DOS,UFAT(WIN95及之后版本)、NTFS(WIN NT 及之后版本)
ISO7660 ROM文件系统(以前的High Sicrra文件系统)、HFS(苹果的Macintosh)\AFFS(Aniga的快速文件系统)一级ADFS(Acorn的磁盘文件和归档系统)
起源于非linux的其他日志文件系统,如IBM的JFS和SGI的XFS
网络文件系统:NFS,Code,AFS(Andrew文件系统),CIFS(用于windows的通用网络文件系统)、NCP(Novell的Netwarecore protocol)
特殊文件系统:/proc文件系统是其典型