Linux内核设计与实现
文章平均质量分 92
Linux内核设计与实现
wang 恒
吾日三省吾身,遵恒律谦温乎!
该补的我都会补回来,至死方休!
恐惧来源于无知
展开
-
【读书笔记】Linux内核设计与实现--设备与模块
文章目录1.设备类型2.模块2.1 Hello, World2.2 构建模块2.3 安装模块--make modules_install(需要root权限)2.4 产生模块依赖性--depmod2.5 载入模块--insmod/rmmod/modprobe2.6 管理配置选项--config选项2.7 模块参数--module_param()2.8 导出符号表--EXPORT_SYMBOL()和EXPORT_SYMBOL_GPL()3.设备模型3.1 kobject3.2 ktype3.3 kset3.4原创 2020-05-20 16:56:29 · 509 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现--页高速缓存和页回写
文章目录1.缓存手段1.1 写缓存1.2 缓存回收2.Linux页高速缓存2.1 address_space对象2.2 address_space操作2.3 基树2.4 以前的页散列表3.缓冲区高速缓存4.fiusher线程4.1 膝上型计算机模式4.2 历史上的bdflush、kupdated和pdflush4.3 避免拥塞的方法:使用多线程1.缓存手段1.1 写缓存1.2 缓存回收2.Linux页高速缓存2.1 address_space对象2.2 address_space操作2.3 基原创 2020-05-15 14:24:53 · 406 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现--进程地址空间
文章目录1.地址空间2.内存描述符--mm_struct2.1 分配内存描述符--copy_mm()2.2 撤销内存描述符--exit_mm->mmput->mmdrop->free_mm->kmem_cache_free2.3 mm_struct 与内核线程3.虚拟内存区域--vm_area_struct3.1 VMA 标志3.2 VMA 操作--vm_ops -> vm_operations_struct3.3 内存区域的树型结构和内存区域的链表结构--mm_struct之原创 2020-05-10 10:59:07 · 455 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现--虚拟文件系统
文章目录1. 通用文件系统接口2.文件系统抽象层3.Unix文件系统4.VFS对象及其数据结构5.超级块对象6.超级块操作7.索引节点对象8.索引节点操作9.目录项对象9.1 目录项状态9.2 目录项缓存10.目录项操作11.文件对象12.文件操作13.和文件系统相关的数据结构14.和进程相关的数据结构1. 通用文件系统接口2.文件系统抽象层3.Unix文件系统4.VFS对象及其数据结构...原创 2020-05-08 09:42:46 · 545 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现-定时器和时间管理
文章目录1.内核中的时间概念2.节拍率:HZ2.1 理想的HZ值--100HZ2.2 高HZ的优势2.3 高HZ的劣势3.jiffies3.1 jiffies的内部表示3.2 jiffies的回绕3.3 用户空间和HZ4.硬时钟和定时器4.1 实时时钟4.2 系统定时器5.时钟中断处理程序6.实际时间7.定时器7.1 使用定时器7.2 定时器竞争条件7.3 实现定时器8.延迟执行8.1 &...原创 2020-04-30 15:01:38 · 611 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现--内核同步方法
文章目录1.原子操作--其他同步方法的基石1.1 原子整数操作--atomic_t1.2 64位原子操作--同32位(略)1.3 原子位操作2.自旋锁--spin lock2.1 自旋锁方法2.2 其他针对自旋锁的操作2.3 自旋锁和下半部3.读-写自旋锁(共享/排斥锁 or 并发/排斥锁)4.信号量4.1 计数信号量和二值信号量4.2 创建和初始化信号量4.3 使用信号量5.读-写信号量6.互斥...原创 2020-04-29 15:00:01 · 715 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现--内核同步介绍
文章目录1.临界区和竞争条件1.1 为什么我们需要保护1.2 单个变量2.枷锁2.1 造成并发执行的原因2.2 了解要保护些什么3.死锁4.争用和扩展性1.临界区和竞争条件1.1 为什么我们需要保护1.2 单个变量2.枷锁2.1 造成并发执行的原因2.2 了解要保护些什么3.死锁4.争用和扩展性...原创 2020-04-27 10:19:00 · 260 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现--下半部和推后执行的工作
文章目录1.下半部1.1 为什么要用下半部1.2 下半部的环境2.软中断2.1 软中断的实现2.2 使用软中断3.tasklet3.1 tasklet的实现--本身也是软中断3.2 使用tasklet3.3 老的BH机制4.工作队列4.1 工作队列的实现4.2 使用工作队列4.3 老的任务队列(现在是工作队列)机制5.下半部机制的选择6.在下半部之间加锁7.禁止下半部1.下半部下半部的任务就是...原创 2020-04-15 18:01:55 · 324 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现-进程调度
文章目录1.多任务--抢占、时间片和让步2.Linux的进程调度--O(1)调度程序3.策略--决定调度程序在何时让什么进程运行3.1 I/O消耗型和处理器消耗型的进程3.2 进程优先级3.3 时间片3.4 调度策略的活动--建议阅读原书此小节,很形象的说明了“策略”4.Linux调度算法4.1 调度器类4.2 Unix系统中的进程调度4.3 公平调度5.Linux调度的实现5.1 时间记账5.2...原创 2020-04-15 14:53:43 · 468 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现--内核数据结构
文章目录1.链表1.1 单向链表和双向链表1.2 环形链表1.3 沿链表移动--线性移动1.4 Linux内核中的实现1.5 操作链表1.6 遍历链表2.队列2.1 kfifo2.2 创建队列2.3 推入队列数据2.4 摘取队列数据2.5 获取队列长度2.6 重置和撤销队列2.7 队列使用举例3.映射3.1 初始化一个idr3.2 分配一个新的UID3.3 查找UID3.4 删除UID3.5 撤销...原创 2020-04-14 15:50:31 · 1005 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现--中断和中断处理
文章目录1.中断2.中断处理程序3.上半部与下半部的对比4.注册中断处理程序--request_irq5.编写中断处理程序5.1 共享的中断处理程序5.2 中断处理程序实例6.中断上下文7.中断处理机制的实现8./proc/interrupts9.中断控制9.1 禁止和激活中断9.2 禁止指定中断线9.3 中断系统的状态众所周知,处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内...原创 2020-04-14 09:37:14 · 718 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现--系统调用
文章目录1.与内核通信2.API、POSIX和C库3.系统调用3.1 系统调用号--对应系统调用函数3.2 系统调用的性能4.系统调用处理程序4.1 指定恰当的系统调用4.2 参数传递5.系统调用的实现5.1 实现系统调用5.2 参数验证6.系统调用上下文6.1 绑定一个系统调用的最后步骤6.2 从用户空间访问系统调用--C库/Linux宏6.3 为什么不通过系统调用的方式实现系统调用的接口实现...原创 2020-04-11 15:57:04 · 363 阅读 · 0 评论 -
【读书笔记】Linux内核设计与实现-进程管理
文章目录1.进程2.进程描述符以及任务结构2.1 分配进程描述符2.2 进程描述符的存放--PID2.3 进程状态2.4 设置当前进程状态--set_task_state2.5 进程上下文2.6 进程家族树--所有的进程都是PID为1的init进程的后代3.进程创建--fork和exec族函数3.1 写时拷贝--Linux拥有进程快速执行能力原因之一3.2 fork()3.3 vfork()4.线...原创 2020-04-10 17:14:27 · 494 阅读 · 0 评论