泰剧孽情魅戒中字15:linux的高度和时钟中断的代码分析->课程设计

来源:百度文库 编辑:高考问答 时间:2024/04/30 00:45:26
LINUX 的调度和时钟中断处理代码的分析
1 设计目的
通过对Linux 的调度和时钟中断代码的分析,了解一个LINUX 操作系统的进程调度以及时钟中断的处理方式,锻炼学生分析大型软件代码的能力,通过与同组同学的合作,锻炼学生的合作能力。
2 设计内容
根据本设计书所提供的基础知识,分析相关代码,得到相关的框图,写出设计报告。
代码的位置
kernel/sched.c
include/asm-i386/spinlock.h
3 设计要求
认真阅读代码,与同组同学合作,通过充分的讨论得到相关的结论。
4 设计装置

5 设计步骤
1) 了解基础知识。
2) 与同组同学一起讨论出任务的分配方式。
3) 对自己的任务部分的代码充分阅读,得到相应的框图。
4) 与同组同学讨论得到整体的框图。
5) 撰写报告。
6 数据及处理
分析系统源代码,得到相关框图
7 报告及要求
1) 设计题目
2) 同组同学任务的分配方式
3) 代码分析结果
4) 体会
8. 相关基础知识
1) 调度
Linux 的调度是一种快餐式的调度,即只是试图处理一些尽量简单的合理的工作,然后就退出,使得进程本身可以尽可能地多获得CPU。Linux 采用的调度方法有三种SCHED_RR(基于优先级的轮转实时调度方法)、SCHED_FIFO(先进先出的实时调度方法)、SCHED_OTHER(基于优先级的轮转实时调度方法,这是普通进程的调度策略)。每个进程都可以规定自己的调度策略,这可以在这个进程的task_struct 的policy 属性中进行设置。
在进行调度的时候,调度程序会计算处于TASK_RUNNING 状态的所有进程的godness值,并选择拥有最好的goodness 值的进程到CPU 来运行。当进行进程调度的时候执行schedule 函数。在这个函数中执行goodness 函数,进行goodness 数值的计算。在schedule 函数的末尾,如果当前调度的进程不是以前运行的那个进程,那么就执行swich_to 函数来实现进程的上下文切换。
2)中断处理
中断分为系统调用中断和硬件中断。在这里要讨论的是硬件中断。硬件中断是由一个请求IRQ, 即从硬件设备发往CPU 的信号而开始的。用sti 开中断,用cli 屏蔽中断。IRQ 是从硬件设备发往CPU 的中断信号。CPU 收到后,转到此IRQ 所对应的某个中断服务例行程序ISR 或称之为中断处理程序。在中断处理程序执行完成之后,返回中断前所执行的代码。
IRQ 是有编号的,每一个硬件设备在系统中都对应一个IRQ 号码。中断处理程序可以分为上半部分和下半部分。上半部分是中断发生时必须立即执行的部分,下半部分是无需立即执行的部分。Linux 这样做的目的是要把中断的总延迟时间最小化。
时钟中断是一个特殊的硬件中断,用IRQ0 来表示。在触发IRQ0 的时候,timer_interrupt从CPU 时间戳计数器读取一些属性值。如果CPU 中有值,就调用do_timer_interrupt。除了其他一些工作之外,调用do_timer。定时器的上半部分是do_timer, 定时器的下半部分是timer_bh。
(3)_简单框图