Linux2.6 内核中 ” 下半部分 ” 分析 Group:N3608. 目录 简介 历史 & 发展 实现机制 软中断 Tasklet 工作队列 (new) 总结.

Slides:



Advertisements
Presentasi serupa
Ayo, belajar bahasa Indonesia!! 来,我们一起学印尼语
Advertisements

汉语 II 第 53 课. 注释 看样子他们是从农村来的。 Menyatakan perkiraan pembicara dan penilaian terhadap suatu kondisi. Penggunaannya hampir sama dengan 看 上去,看起来,看来。 已经八点了,看样子他今天不来了。
警惕:这样炒菜竟会致癌 :30 来源: 爱美网 文化传播网 背景音乐 纯音乐 一帘幽梦.
第2章 陣列與結構(Arrays and Structures)
REVIEW (BAB 81-90) Pertemuan 21 Matakuliah: E0546/Bahasa China 4 Tahun: 2007.
1 Pertemuan 17 语法 Matakuliah: E0566 Bahasa China 6 Tahun: 2005 Versi: Revisi.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
Matakuliah: E0536/ Bahasa China III Tahun: 2008 第 63 课 回头再说.
电子商务综合实训. 电子商务综合实训第五组作业展示 成员名单 : 张 辉 曹 阳 王 兴 王鹏飞 苏振庆 杨志昆 杨 磊 张文文 詹聪敏 杜慧蓉 返回前进首页.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
汉语II 第 55 课.
Pertemuan 6 Matakuliah: Surat menyurat bisnis Tahun: 2008.
第九章 植物体细胞无性系变异 及种质资源保存. 一、概念 LarkinScowcroft ( 1981 )提出把由任何形式的 细胞培养所产生的植株统称为体细胞无性系 ( somaclones )。LarkinScowcroft ( 1981 )提出把由任何形式的 细胞培养所产生的植株统称为体细胞无性系.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan 23 第二十三课 我门七点一刻出发 Matakuliah: E0516 Bahasa China 1 Tahun: 2005 Versi: Revisi.
什么最重要 Pertemuan Matakuliah: E0546/Bahasa China 4 Tahun: 2007.
关于植物向重性生长的研究进展 学生:焦玉红 学号: M 导师:陈 刚. 目录 一、摘要、关键词 二、引言 三、植物重力敏感细胞的系统演化 四、植物向重性的定义和分类 五、植物向重性机理的研究 六、细胞骨架和植物的向重性 七、微重力对植物向重性的影响 八、展望.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
Zhongguo de jihua shengyu Pertemuan 06 Matakuliah: E0642 – Membaca Koran China Tahun: 2008.
茶与饮茶 Pertemuan 13 Matakuliah: E0872/Budaya China Tahun: 2007.
1 Pertemuan 13 在那遥远的地方 Matakuliah: E0566 Bahasa China 6 Tahun: 2005 Versi: Revisi.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
Bagian-bagian dari Kalimat (2) Pertemuan 11
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
再试一次 Pertemuan 5-6 Matakuliah: E0546/Bahasa China 4 Tahun: 2007.
Persamaan arti dari suatu Kosakata Pertemuan 6
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
第十章 曲线回归. 本章介绍可以直线化的曲线回归的类型,以 生长型曲线为例说明曲线的直线化配合, 曲线回归方程的拟合度.
表面活性剂及其在滴 定中的应用 化学生物 陈海燕. 表面活性剂 1. 定义 2. 结构 3. 分类 4. 胶束.
1 Pertemuan 37 第十四课 我都做完了 Matakuliah: E0516 Bahasa China 1 Tahun: 2005 Versi: Revisi.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
扩写 Pertemuan 4-5. 什么是扩写? 扩写是一种写作训练方式,是把一篇短 文、一份材料或一段概括地话加以补充、扩 展。 扩写是在不改变中心思想和基本情节的 前提下,对原文进行扩充和深化,是内容更 加丰富、充实、思想更加鲜明、深刻,语言 更加生动、形象,因而也就能更充分的表达 主体思想,更富有说服力和感染力。
第十二章 证书服务和公钥基 础设施( PKI ) 信息安全的四大要素 机密性 — 保证电子商务、电子政务、办公自 动化、个人隐私中涉及的大量保密信息在网络 上传输的过程中不被窃取。 完整性 — 保证电子商务、电子政务中涉及的 交易信息不被中途篡改或通过重复发送进行虚 假交易。
第六节. 棉花杂种优势利用. 问题 : 1. 棉花有无杂种优势 ? 有无利用价 值 ? 2. 制种技术是否简便 ? 3. 优势表现的遗传、生理基础是什 么 ? 4. 杂种优势表现程度能否预测 ?
Pertemuan 8 Matakuliah: Surat menyurat bisnis Tahun: 2008.
人虎情 Pertemuan Matakuliah: E0546/Bahasa China 4 Tahun: 2007.
成長力分析 成長力定義與計算方式 幾何平均數與算數平均數 影響成長力的因素 估計預期成長率 財務報表分析 Chapter 12 成長力分析.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
Cara pembentukan hanzi Pertemuan 9 Matakuliah: E0572/Bahasa China Modern I Tahun: 2008.
Hubungan hanzi dengan kebudayaan China Pertemuan 13 Matakuliah: E0572/Bahasa China Modern I Tahun: 2008.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
Matakuliah: E0536/ Bahasa China III Tahun: 2008 第 69 课 提高自己.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
汉语 2 复习第19-36课.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan 15 公文包丢失之后 Matakuliah: E0556 Bahasa China 6 Tahun: 2005 Versi: Revisi.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan > Matakuliah: >/ > Tahun: > Versi: >.
1 Pertemuan > > Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan 11 电影《疯狂的石头 》 CRAZY STONE Matakuliah: E1162/Film China Tahun: 2008 Versi: 1/0.
Perubahan Arti Kosakata China Pertemuan 4
Bermad 100 系列 为农业灌溉量身定制的水压控制阀 上海润绿. 主要优势 过流量大、压力损失最小 在低压时能保持良好的性能 在极端的压差下也能正常工作 有不同的尺寸、形状和阀门类型可供选择.
海天注塑机客户培训 提 纲 海天注塑机型号简介 海天注塑机机械部分 海天注塑机电气部分 海天注塑机液压部分 海天注塑机伺服节能系列.
学习目的:建立对生命的系统认识和理解 加深对生命的热爱和领悟 了解生命科学的发展及其与人类的关系 通识基础教育课 Welcome to the Study of Life Sciences.
Interpreting Pertemuan XII
Interpreting Pertemuan XIV
友情提示: 请把手机关闭或调到振动状态. 电子商务概论 E - Commerce 经管学院 翁朝霞.
关于出行方式 汉语写作. 生词 现象 这种现象将会怎么样改变社会和商业? 这个不是一个新的现象,并不是所有的人都喜欢这样的现象 数字 真爱个人时,年龄,距离,高度都只是些数字而已。 真正的财富是一种思维方式,而不是一个月收入数字。 拥挤 请排队上车,不要拥挤。 在干线公路上, 交通往往十分拥挤。
Transcript presentasi:

Linux2.6 内核中 ” 下半部分 ” 分析 Group:N3608

目录 简介 历史 & 发展 实现机制 软中断 Tasklet 工作队列 (new) 总结

目录 简介 历史 & 发展 实现机制 软中断 Tasklet 工作队列 (new) 总结

中断服务一般都是在将中断请求关闭的条 件下执行,以避免嵌套而使控制复杂化。 可是如果关中断的时间太长就可能因为 CPU 不能及时响应其他的中断请求而使中 断丢失;如果在将中断服务程序挂入中断 请求队列时开中断,又会使中断过程不安 全。 如何解决这种矛盾?

将中断服务的过程分成两个部分,开头的 部分在关中断的条件下执行,是原子性的 关键操作;后半部分在开中断的条件下执 行,允许延迟,并可以把多个中断服务中 此部分合并在一起处理 —— 下半部分。

如何选取? 如果一个任务对时间非常敏感,在中断处 理程序中执行。 如果一个任务和硬件相关,在中断处理程 序中执行。 如果一个任务要保证不被其他中断打断, 在中断处理程序中执行。 其他所有任务,考虑放置在下半部分执行。

目录 简介 历史 & 发展 实现机制 软中断 Tasklet 工作队列 (new) 总结

bottom half(BH) BH 接口非常简单,它提供一个静态创建、 由 32 个 bottom half 组成的链表。上半部分 通过一个 32 位整数中的一位来识出哪个 bottom half 可以执行。每个 BH 都在全局范 围内进行同步。即使分属于不同的处理器, 也不允许两个 bottom half 同时执行。 使用不灵活,大大降低多处理器的性能。

任务队列 内核定义了一组队列,其中每个队列都包含 一个由等待调用的函数组成链表。根据其 所处队列的位置,这些函数会在某个时刻 被执行。 不能胜任要求高的子系统。

Softirq & tasklet 从 2.3 开始引入。可完全代替 BH 接口。软中 断是一组静态定义的下半部分接口,有 32 个,可以在所有处理器上同时执行 — 即使 两个类型相同也可以。 Tasklet 是一种基于 软中断实现的灵活性强、动态创建的下半 部分实现机制。两个不同类型的 tasklet 可以 在不同的处理器上同时执行,但类型相同 的 tasklet 不能同时执行。

work quque 从 2.5 开始, BH 接口最终被弃置,任务队列被 工作队列( work queue )接口取代。工作 队列可以把工作推后,交由一个内核线程 去执行 — 这个下半部分总会在进程上下文 执行。工作队列允许重新调度甚至睡眠。

2.6 版本中,内核提供了三种不同形式的下 半部分实现机制:软中断、 tasklet 和工作队 列。

目录 简介 历史 & 发展 实现机制 软中断 Tasklet 工作队列 (new) 总结

实现 软中断由 softirq_action 结构表示,定义在 中。

Kernel/softirq.c 中定义了一个包含有 32 个 softirq_action 数组。每个被注册的软中断都 占据该数组中的一项,最多可有 32 个软中 断, 内核中可使用其中的 8 个。

软中断处理函数 void softirq_handler(struct softirq_action *) 当内核运行一个软中断处理程序的时候, 它就会执行这个 action 函数,其唯一的参数 为指向应 softirq_action 结构体的指针。

执行软中断 触发软中断 一个注册的软中断必须在标记后才会被执行, 通常,中断服务程序在返回前标记它的软 中断。在下列地方,待处理的软中断会被 检查和执行 从一个硬件中断代码处返回时。 在 ksoftirqd 内核线程中。 在显式检查和执行待处理的软中断代码中。

do_softirq()

核心部分

执行步骤 用局部变量 pending 保存 local_softirq_pending() 宏的返回值。 将实际的软中断位图清零。 将指针 h 指向 softirq_vec 的第一项。 如果 pending 的第一位被置为1, h- >action(h) 被调用。 指针加 1 ,现在它指向 softirq_vec 数组的第 二项 (续)

位掩码 pending 右移一位。然后让其他各位 依次向右移动一个位置。于是,原来的第 二位就在第一位的位置上。 重复执行上面的步骤,直到 pending 变为0。

目录 简介 历史 & 发展 实现机制 软中断 Tasklet 工作队列 (new) 总结

Tasklet 结构体 Tasklet 由 tasklet_struct 结构表示。每个结 构体代表一个 tasklet. Tasklet 的处理程序

调度 tasklet 已调度的 tasklet 存放在两个数据结构: tasklet_vec 和 tasklet_hi_vec 中。这两个都 是由 tasklet_struct 结构体构成的链表。 Tasklet 由 tasklet_schedule() 和 tasklet_hi_schedule() 调度,它们接受一个 指向 tasklet_struct 的指针作为参数。

执行 do_irq 执行相应的软中断处理程序,而 tasklet_action() 和 tasklet_hi_action() 就是 tasklet 处理的核心。

目录 简介 历史 & 发展 实现机制 软中断 Tasklet 工作队列 (new) 总结

实现 工作队列子系统是一个用于创建内核线程 的接口,通过它创建的进程负责执行由内 核其他部分排到队列里的任务。它创建的 这些线程被称为工作者线程。工作队列子 系统提供一个工作者线程来处理后半部分 的工作。因此,工作队列最基本的表现形 式就转变成了一个把需要推后执行的任务 次给特定的通用线程这样的一种接口。

线程的数据结构

结构中有一个 cpu_workqueue_struct 结构 组成的数组,每一项对应一个处理器。由 于每个处理器对应一个工作者线程,所以 对单台计算机来说,每个工作者线程对应 一个这样的 cpu_workqueue_struct 结构体。

所有的工作者线程都是用普通的内核线程 实现的,它们都要执行 worker_tread(). 在它 初始化完以后,这个函数执行一个列循环 并开始休眠。当有操作被插入到队列里的 时候,线程就会被唤醒,以便执行这些操 作。当没有剩余的操作时,它又会继续休 眠。

work_struct()

这些结构体被连接成链表,在每个处理器 上每种类型队列都对应这样一个链表。当 一个工作者线程被唤醒时,它会执行它的 链表上的所有工作。工作被执行完毕,它 就将相应的 work_struct 对象从链表上移去。 当链表上有再有对象的时候,它就会继续 休眠。

Work_thread()

核心 for 循环完成的工作 线程将自己设置为休眠状态并把自己加入到 等待队列上。 如果工作链表是空的,线程调用 schedule() 函 数进入睡眠状态 如果链表有对象,将自己设置成 TASK_RUNNING ,脱离等待队列。 如果链表非空,调用 run_workquque() 函数 执行后半部分的工作。

目录 简介 历史 & 发展 实现机制 软中断 Tasklet 工作队列 (new) 总结

小问题,大精力! 存在不是最好的!

谢谢!