zoukankan      html  css  js  c++  java
  • Linux操作系统分析__破解操作系统的奥秘

                                        学号:SA12226343  姓名:sunhongbo

    一、操作系统工作的基础

    存储程序计算机和堆栈(函数调用堆栈)机制以及中断机制是操作系统工作的基础。

      现代计算机仍采用存储程序计算机的结构体系和工作原理。程序输入到计算机,存储在内存储器,运行时,由控制器中的指令寄存器指针(x86的EIP)按地址逐条从存储器中取指令,分析指令,执行,遇到转移指令,在跳转,继续按地址顺序访问指令。

      堆栈是函数调用的基础。在一个函数切换到另一个函数去执行指令之前,要保存当前函数一些信息,以便能够在调用函数执行后能使得当前函数继续执行。这过程要借助堆栈来实现。(逻辑上讲,进程的堆栈是由多个堆栈帧构成,一个函数调用对应一个堆栈帧)当发生函数调用,当前函数的堆栈帧会被压入堆栈(压入函调用可能用到的参数,改变eip指向被调用函数。被调用函数将调用函数ebp压栈,建立自己的堆栈帧),返回时,相应的堆栈帧从栈中弹出(恢复原来堆栈帧,即弹出调用函数ebp)。

      中断机制使得多任务操作系统成为可能,进程的切换,系统调用,异常等都依赖于中断。

    二、操作系统内核时如何工作的

      操作系统的几个工作:内核线程,中断处理过程的集合。

      当进程正在执行过程中发生中断时,会陷入操作系统内核态,在进入操作系统内核前,会保存将当前进程用户态堆栈的esp、eip指针保存在当前进程内核栈,然后执行中断处理程序,它首先要SAVE_ALL,将一些必要的寄存器值压入内核堆栈,接下来处理中断,在中断处理程序末尾,如果有需要,会进行进程的调度,调用_switch_to函数,首先切换到新调度的进程的内核栈,然后内核调用RESTORE_ALL恢复即将运行进程的现场,接下来执行iret将新进程eflags,cs:eip等指向新进程,将esp、eip恢复到新进程用户栈。系统从内核态返回用户态。操作系统遇见中断就如此循环执行这样一个过程。

     

    附录:实验五研究笔记_操作系统是如何让工作的

  • 相关阅读:
    常用AIX论坛地址介绍
    向日葵任务甘特图 http://www.51diaodu.cn/
    centos 中tomcat加入自启动​【转】
    徐州出差几天
    Unit OneC
    周末来了~
    北京展览馆参加第6届石油石化装备展览会
    王心凌 我会好好的 cyndi with u
    VS中Debug与Release、_WIN32与_WIN64的区别
    c语言中<stdbool.h>的使用
  • 原文地址:https://www.cnblogs.com/SA226343/p/3163860.html
Copyright © 2011-2022 走看看