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

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内核分析作业二—操作系统是如何工作的的更多相关文章

  1. Linux内核分析 笔记二 操作系统是如何工作的 ——by王玥

    一.知识要点 1.计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算 ...

  2. linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核代码

    计算机如何工作 三个法宝:存储程序计算机.函数调用堆栈.中断机制. 堆栈 函数调用框架 传递参数 保存返回地址 提供局部变量空间 堆栈相关的寄存器 Esp 堆栈指针  (stack pointer) ...

  3. Linux内核分析第二周--操作系统是如何工作的

    Linux内核分析第二周--操作系统是如何工作的 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  4. Linux内核分析作业二

    贾瑗 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  一.操作系统是如 ...

  5. 20135327郭皓——Linux内核分析第二周 操作系统是如何工作的

    操作系统是如何工作的 上章重点回顾: 计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的 ...

  6. linux内核分析 第二周 操作系统是如何工作的

    银雪纯 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机是如何工作的 ...

  7. Linux内核分析(二)----内核模块简介|简单内核模块实现

    原文:Linux内核分析(二)----内核模块简介|简单内核模块实现 Linux内核分析(二) 昨天我们开始了内核的分析,网上有很多人是用用源码直接分析,这样造成的问题是,大家觉得很枯燥很难理解,从某 ...

  8. 《Linux内核分析》 之 计算机是如何工作的

    [李行之原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] <Linux内 ...

  9. Linux内核分析作业第四周

    系统调用的三个层次 一.用户态.内核态和中断 用户通过库函数与系统调用联系起来. 1.内核态 在高的执行级别下,代码可以执行特权指令,访问任意的物理地址,这时的CPU就对应内核态 2.用户态: 在低级 ...

随机推荐

  1. C#之使用随机数

    1.C#自带随机数函数 using System; System.Random ran = new System.Random();int n = ran.Next(100, 1000);//产生10 ...

  2. Sublime Text—自带快捷键介绍

    前言: Sublime Text是个小巧便捷的编辑器,除了众多好用的插件外,还有它自带的快捷键,打代码事半功倍,不会用的赶紧看看吧! 其实菜单上都有,看不懂可以汉化,Key Bindings-Defa ...

  3. c#中文件上传(1)

    * * ;//3M picPath = Server.MapPath("........."); HttpFileCollection postfile = Context.Req ...

  4. return,exit,die

    return:代表退出某个函数,但是函数体外的语句仍然需要执行. exit:退出程序,但是不从内存中卸载,exit其实也是可以输出语句的,加一个括号即可. die:退出程序,并且从内存中卸载.

  5. 清除层div浮动

    clearboth { clear: both; display: block; height: 0; font-size: 0; overflow: hidden; } <div class= ...

  6. Android ViewFlipper用法浅析

    在Android应用开发中,我们经常会需要实现左右切换视图的功能,这通常需要在LinearLayout.RelativeLayout等布局中添加ImageView来实现.如果每次只需展示一张图片,并可 ...

  7. CSS之简单树形菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. mvc路由规则相关

    1,可以创建多条路由规则,每条路由规则的name属性不能相同 2,路由规则是有顺序的,如果被前面的规则匹配了,那么后面的规则就没有机会了 下面是一条路由规则的代码 routes.MapRoute( n ...

  9. JavaEE是什么?

    曾经有那么两次被问到JavaEE是什么东西.做了这么久的程序员了,这个概念还说不清楚,真的感觉有点惭愧呀. 下面摘抄网络上的一些概念,以悼念傻逼的自己. Java EE,Java平台企业版(Java ...

  10. Row_Number实现分页(适用SQL)

    1:首先是 select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1 生成带序号的集合 2:再查询该集合的 第 1 ...