中断时计算机运行的一个非常重要的功能.之所以重要,是因为由于种种原因,计算机不能将一个程序从头执行到尾不间断,而是可能会出现很多像等待输入设备输出设备的过程,如果没有中断系统,CPU只能等待,造成资源浪费.中断就是当出现需要时,CPU会暂时停止当前程序的执行,转而执行新的程序.多个程序交替执行,能够大大提高运行的效率. 中断是如何实现的呢?通过分析<Linux内核分析>第二周课程提供的一个小小的内核模拟程序mykernel,我们能够很容易地理解中断实现的过程. mykernel程序有三个源文件…
PS.贺邦   原创作品转载请注明出处  <Linux内核分析>MOOC课程    http://mooc.study.163.com/course/USTC-1000029000 1.mykernel实验指导(操作系统是如何工作的) 使用实验楼虚拟机打开shell输入下列代码 1 cd LinuxKernel/linux-3.9.4 2 qemu -kernel arch/x86/boot/bzImage 可以看到初始的内核运行情况如下: 内核不停的执行my_start_kernel(),每…
---恢复内容开始--- 20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验要求: mykernel实验指导(操作系统是如何工作的) 运行并分析一个精简的操作系统内核,理解操作系统是如何工作的 使用实验楼的虚拟机打开shell cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage 然后cd…
一个简单的时间片轮转多道程序内核代码及分析 所用代码为课程配套git库中下载得到的. 一.进程的启动 /*出自mymain.c*/ /* start process 0 by task[0] */ pid = 0; my_current_task = &task[pid]; asm volatile( "movl %1,%%esp\n\t" /* 将进程的sp赋给esp寄存器 */ "pushl %1\n\t" /* ebp入栈:因为在这里栈为空,esp=e…
Linux内核分析第二周学习博客 本周,通过实现一个简单的操作系统内核,我大致了解了操作系统运行的过程. 实验主要步骤如下: 代码分析: void my_process(void) { int i = 0; while(1) { i++; if(i%10000000 == 0) { printk(KERN_NOTICE "this is process %d -\n",my_current_task->pid); if(my_need_sched == 1) { my_need_…
陈巧然 原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.使用实验楼的虚拟机, 观察只有一个死循环的mykernel与时钟中断的关系 步骤:cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage 执行效果如下图 Paste_Image.png 现在查看mymain.c: Paste_Image.png 再查看myin…
计算机如何工作 三个法宝:存储程序计算机.函数调用堆栈.中断机制. 堆栈 函数调用框架 传递参数 保存返回地址 提供局部变量空间 堆栈相关的寄存器 Esp 堆栈指针  (stack pointer) Ebp 基址指针 (base pointer) 堆栈操作 Push:pop Ebp用作记录当前函数调用基址- 其他关键寄存器   中断 Call指令:1.将eip中下一条指令的地址A保存在栈顶:2.设置eip指向被调用程序代码开始处 1.Call xxx 2.进入xxx pushl %ebp mov…
第一讲 函数调用堆栈 计算机是如何工作的? (总结)——三个法宝 1,存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 2,函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能: enter pushl %ebp movl %esp,%ebp leave movl %ebp,%esp popl %ebp 函数参数传递机制和局部变量存储 3,中断,多道程序操作系统的基点,没有中断机制程序只能从…
第二周 操作系统是如何工作的 第一节 函数调用堆栈 存储程序计算机:是所有计算机基础的框架 堆栈:计算机中基础的部分,在计算机只有机器语言.汇编语言时,就有了堆栈.堆栈机制是高级语言可以运行的基础. 计算机“三宝”:存储程序计算机.函数调用堆栈和中断机制. 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间 函数调用框架(eg:enter.leave ) 传递参数(32位,通过堆栈来传递参数) 保存返回地址(用eax) 提供局部变量空间 等等 ♦ C语言编译器对堆栈的使用有一套的规则,不同…
Linux内核分析——完成一个简单的时间片轮转多道程序内核代码 张潇月+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验 打开实验楼,在老师早就建立好的环境里运行并分析一个简单的操作系统内核. 首先是进入老师搭建的平台 然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain.c和myinterrupt.c 以上是本次实验过程截图. 二.分析实验代码 Mymain.c /* * l…