您的位置:首页 > 运维架构 > Linux

linux内核分析第八次实验

2016-04-17 10:26 218 查看

20135118 罗鹏越

本周学习的是linux内核中的进程调度,之前我们在操作系统中有讲解进程调度的分类,以及一些调度算法。而linux中的进程调度有所不同,首先老师讲解了进程调度和进程调度的时机,所有的用户态进程都只能被调度,而内核线程可以主动调度,而进程调度的实现都是通过schedule函数,然后讲解了进程上下文所包含的信息,然后讲解了切换寄存器状态所使用的switch to函数,每一个部分都单独分析了。然后讲解了LINUX架构和执行过程。虽然在操作系统中讲解过了进程调度,但是这个讲解得更加深入,是从内核的角度讲解了调度的原理,和执行过程。

[b]开始实验:[/b]







按c继续,可以发现core.c里面调用了schedule()。



单步执行发现__schedule()


继续单步执行,直到发现context_switch:



之后继续执行,可以进入context_switch()函数并发现了switch_to()和__switch_to()


linux系统的一般执行过程

正在运行

发生中断,可能陷入内核,CPU自动保存加载

SAVE_ALL保存现场

调用schedule,switch_to进程上下文切换

标号1之后运行Y(之前有进行准备动作)

restore_all恢复现场

继续运行用户态进程Y
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: