完成一个简单的时间片轮转多道程序内核代码

陈良 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://www.xuetangx.com/courses/course-v1:ustcX+USTC001+_/about 

1.  打开mymain.c文件:


每循环10万次后打印一行提示。

2. 打开myinterrupt.c文件:


周期性my_timer中断并输出一行提示。

3. 执行qemu:


4. 分析精简的操作系统程序:

myinterrupt.c中的my timer调度


timer没计数1000次就将调度信息my_need_sched设置为1,需要调度。

之后分析mymain.c:


每循环1千万次后检查一次my_need_sched是否被timer设置为了1,如果设置为1,执行调度程序

×以下是进程切换


图中描绘了切换进程的过程

(1)首先将ebp寄存器压栈

(2)接着将esp寄存器存入prev的esp内

(3)再把next的esp提取到esp寄存器内

(4)把1:位置保存到eip寄存器中

(5)把next的eip压栈

5. 总结

操作系统的运行过程就是不断地进行进程切换的过程,切换过程主要就是发生中断,保存现场再恢复现场的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值