【实验五】Linux操作系统是如何工作的?


  • 【实验五】Linux操作系统是如何工作的?破解操作系统的奥秘
    • 操作系统工作的基础:存储程序计算机、堆栈(函数调用堆栈)机制和中断机制
    • 在操作系统工作的基础之上,请您简述操作系统(内核)是如何工作,宏观概述结合关键点的微观(CS:EIP、EBP/ESP等的变化)分析
    • 完成500字左右的一段总结文字(务必是自己写的),附上学习研究笔记,另外请大家养成尊重知识产权的习惯引用或参考别人的资料注明出处URL
    • 实验报告以博客URL方式提交,提交地址 实验五提交入口
    • 请于本周四实验课前提交,最迟提交日期6月30日24:00
  • 附加实验:写一个自己的OS Kernel(进程管理和进程调度)
    • 实验环境见:https://github.com/mengning/mykernel

  • 堆栈(函数调用堆栈)机制
    • 以调用函数f(x, y, z);为例
      • 首先:z入栈、y入栈、x入栈
    • 其次:next address 入栈
    • 新过程中:ebp入栈;所以新过程中:0x8%ebp为第一个参数,0xc%ebp为第二个参数,0x10%ebp为参数z
    • 最后:leave与ret;

      ret相当于 pop eip,此时恢复状态

  • 中断机制
    • 通俗来说,中断就是“打断”,放下自己正在干的活,转向到别的事情去做。
    • 而“打断机制”就是那些打断我、告诉我要干别的事情的策略
    • 在linux中,CPU执行完一条指令后,下一条指令的逻辑地址存放在cs和eip这对寄存器中。在执行新指令前,控制单元会检查在执行前一条指令的过程中是否有中断或异常发生。如果有,控制单元就会抛下指令,进入下面的流程:
  • 操作系统(内核)的工作原理
    • 广义地来说kernel就是一个软件,它在硬件和运行在计算机上的应用程序之间提供了一个层。严格点从计算机科学的角度来说,Linux中的Kernel指的是Linus Torvalds在90年代初期写的那点代码
    • 内核的功能:进程调度、文件系统、存储管理、模块管理、性能调优
    • 其工作也是离不开CS:EIP、EBP/ESP这些寄存器,内核干什么活,都是反反复复修改、恢复这些值。
  • 个人总结
    • LInux操作系统分析这门课,让我更深入的理解操作系统的更底层的东西。以往本科时学过的操作系统,都是泛泛的学习操作系统以及其内核的所提供的各种功能,例如各种管理。那时操作系统在我眼里是一个“大管理学家”,如果深入理解了操作系统,我们就成为了半个管理学家。
    • 从实验一到实验五,一直是这个问题围绕着我们:”如何工作的?“。
      • 从硬件的宏观角度讲:
      • 从软件角度讲:
      • 整体角度讲”如何工作的?“
      • 用户层init依据inittab文件来设定运行等级
  •  

    • 附加实验
      • (待完成)

     

    参考链接:

    • http://zh.wikipedia.org/wiki/%E5%AD%98%E5%82%A8%E7%A8%8B%E5%BA%8F%E8%AE%A1%E7%AE%97%E6%9C%BA
    • http://www.kerneltravel.net/journal/viii/01.htm
    • http://soft.zdnet.com.cn/software_zone/2009/0327/1359774.shtml
    • http://www.weiguolv.com/info/2005-1/200511642611.htm
    • http://www.xuexila.com/diannao/rumen/3543.html
    • http://soft.chinabyte.com/os/325/12254325.shtml

    本文链接:

    • http://www.cnblogs.com/kaimin/p/how-does-linux-operating-system-work.html

    相关内容