首页 > 系统服务 > 详细

Linux内核分析作业二—操作系统是如何工作的

时间:2016-03-02 20:03:23      阅读:313      评论:0      收藏:0      [点我收藏+]

一、实验:简单的时间片轮转多道程序内核代码运行与分析

技术分享

my_start_kernel之前都是硬件初始化,它是操作系统的执行入口,每循环100000次就进行一次打印。

技术分享

执行更加简单,每次时钟中断时都会调用函数输出my_time_handler。其中怎样获取时钟中断和时钟中断处理入口由Linux内核代码处理好了。

二、操作系统是如何工作的

  1.中断机制(由CPU和内共同实现了保留和恢复现场)

  2.进程上下文的切换:a.还从未执行过的进程

                                         b.正在执行的进程

三、进程的启动和切换机制

  在interrupt函数中使用了my_schedule函数,如果下一个进程的状态是0的话执行以下函数:

pushl %%ebp\n\t                             保存当前进程的ebp

movl %%esp,%0\n\t                        当前进程的esp保存

movl %2,%%esp,%0\n\t                  把下一个进程的sp放到esp里面

movl $1f,%1\n\t                               保存eip($1f指接下来标号1:的位置)

pushl %3\n\t                                    下个进程的eip进栈

ret\n\t                                               eip出栈

1:\t

popl %%ebp\n\t

切换到新进程的方法:

首先把进程置为正在运行状态,然后执行方法与之前略有不同。

Linux内核分析作业二—操作系统是如何工作的

原文:http://www.cnblogs.com/qinzhoaqi/p/5235990.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!