![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux kernel development
恰恰香瓜子~
我很懒,没有简介
展开
-
第九章 内核同步方法
原子操作 原子操作可以保证指令以原子的方式执行--执行过程不被打断 针对整数的原子操作只能对atomic_t类型的数据进行处理。引入特殊数据类型的原因: 让原子函数只接受atomic_t类型的参数,确保原子操作只与这种特殊类型数据一起使用 保证该类型不会被传递给其他任何非原子函数 确保编译器不对相应的值进行访问优化 不同体系结构上实现原子操作时,使用atomic_t可以屏蔽其间的差异 使用atomic_t的代码只能将该类型的数据当做24位来用。SPARC体系原创 2021-06-21 11:20:42 · 82 阅读 · 0 评论 -
第八章 内核同步介绍
临界区就是访问和操作共享数据的代码段 竞争条件就是多个执行线程同时处于临界区中 避免并发和防止竞争条件被称为同步原创 2021-06-21 10:01:13 · 72 阅读 · 0 评论 -
第七章 下半部和推后执行的工作
在2.6版本中有三种不同形式的下半部机制: 软中断:32个静态定义的下半部接口,可以在所有处理器上同时执行。 tasklet:基于软中断,动态创建的下半部机制。不同类型的tasklet可以在不同处理器同时执行,但类型相同的不能。 工作队列:对推后执行的工作排队,稍后在进程上下文执行。 BH和任务队列已被弃用 软中断: 软中断不会抢占另一个软中断,不过其他软中断可以在其他处理器上同时执行 只有中断处理程序可以抢占软中断。 在下列地方,待处理的软中断会被检查和执行: 从一个硬件原创 2021-06-21 09:53:39 · 99 阅读 · 0 评论 -
第六章 中断和中断处理程序
硬件主动向内核发送信号,异步 异常: 常被称为同步中断。 在处理器执行到由于编程失误而导致的错误指令(例如被0除),或者在执行期间出现特殊情况(例如缺页),必须考内核来处理时,处理器会产生一个异常。 许多处理器对异常和中断的处理类似 软中断实现系统调用就是陷入内核引起一种特殊的异常--系统调用处理程序异常。 中断上半部:是中断处理程序。收到中断立即执行,只做有严格时限的工作,这些工作是在所有中断被禁止的情况下完成的。 中断下半部:允许稍后完成的工作会推迟到下半部 快速中断处理程序:原创 2021-06-21 09:25:57 · 1018 阅读 · 0 评论 -
第五章 系统调用
系统调用的作用: 为用户空间提供一种硬件的抽象接口 保证了系统的稳定和安全 每个进程都运行在虚拟系统中,在用户控件和系统的其余部分提供这样一层公共接口 asmlinkage:用于通知编译器仅从栈中提取该函数的参数。所有的系统调用都需要这个限定词。asmlinkage long sys_getpid(void). 内核中所有系统调用都应该遵守的命名规则:sys_*() 应用程序通过软中断通知内核执行系统调用...原创 2021-06-21 09:25:14 · 67 阅读 · 0 评论 -
第四章 进程调度
进程调度程序是内核的组成部分,可以看做在可运行态进程之间分配有限的处理器时间资源的内核子系统 linux内核提供了两组独立的优先级范围。第一种是nice值,-20到+19,默认值是0,nice值越大优先级越低。第二种是实时优先级,其值是可配置的,默认范围是0-99.任何实时进程的优先级都高于普通的进程。 可执行队列是给定处理器上的可执行进程的链表,每个处理器一个。 cpu_rq(processor)宏用于返回给定处理器可执行队列的指针,this_rq()宏用来返回当前处理器的可执行队,task_rq(原创 2021-06-21 09:22:59 · 175 阅读 · 0 评论 -
第三章 进程管理
内核把进程存放在叫做任务队列的双向循环链表中。链表中的每一项都是类型为task_struct称为进程描述符的结构 通过current宏查找到当前正在运行进程的进程描述符 每个进程必然处于五种状态中的一种: TASK_RUNNING(运行)。正在执行或者在运行队列中等在执行 TASK_INTERRUPTIBLE(可中断)。进程正在睡眠,等待某些条件达成,可变为运行状态 TASK_UNINTERRUPTIBLE(不可中断)。不会因为接收到信号而被唤醒进入运行状态,其他与可中断状态一样。 ...原创 2021-06-21 09:12:39 · 61 阅读 · 0 评论 -
第二章 从内核出发
内核把进程存放在叫做任务队列的双向循环链表中。链表中的每一项都是类型为task_struct称为进程描述符的结构 通过current宏查找到当前正在运行进程的进程描述符 每个进程必然处于五种状态中的一种: TASK_RUNNING(运行)。正在执行或者在运行队列中等在执行 TASK_INTERRUPTIBLE(可中断)。进程正在睡眠,等待某些条件达成,可变为运行状态 TASK_UNINTERRUPTIBLE(不可中断)。不会因为接收到信号而被唤醒进入运行状态,其他与可中断状态一样。 ...原创 2021-06-21 09:11:30 · 189 阅读 · 0 评论 -
第一章 linux内核简介
处理器在任何时间点上的活动范围概括为下列三者之一: 运行于内核空间,处于进程上下文,代表某个特定的进程执行 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断 运行于用户空间,执行用户进程 ...原创 2021-06-19 17:52:09 · 86 阅读 · 0 评论