学号:SA12226343  姓名:sunhongbo

一、操作系统工作的基础

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

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

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

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

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

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

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

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

Linux操作系统分析__破解操作系统的奥秘的更多相关文章

  1. 【Linux操作系统分析】设备驱动处理流程

    1 驱动程序,操作系统,文件系统和应用程序之间的关系 字符设备和块设备映射到操作系统中的文件系统,由文件系统向上提供给应用程序统一的接口用以访问设备. Linux把设备视为文件,称为设备文件,通过对设 ...

  2. Linux操作系统是如何工作的?破解操作系统的奥秘

    学号:SA12**6112 研究笔记: 1:计算机是怎么样工作的 2:用户态到内核态切换之奥秘解析 3:进程切换之奥秘解析 本博文主要是根据前3篇笔记来总结Linux内核的工作机制. 一:操作系统工作 ...

  3. Linux操作系统分析 | 深入理解系统调用

    实验要求 1.找一个系统调用,系统调用号为学号最后2位相同的系统调用 2.通过汇编指令触发该系统调用 3.通过gdb跟踪该系统调用的内核处理过程 4.重点阅读分析系统调用入口的保存现场.恢复现场和系统 ...

  4. Linux操作系统和Windows操作系统的区别

    1.免费与收费 在中国,windows和linux都是免费的,至少对个人用户是如此,如果那天国内windows真的严打盗版了,那linux的春天就到了!但现在linux依然是任重道远,前路漫漫. 2. ...

  5. Linux操作系统分析 ------------------中国科技大学

    http://teamtrac.ustcsz.edu.cn/wiki/Linux2014

  6. Linux操作系统进程模型分析进程

    Linux操作系统简介 Linux拥有现代操作系统的功能,如真正的抢先式多任务处理,支持多用户内存,保护虚拟内存,支持SMP.UP,符合POSIX 标准联网.图形用户接口和桌面环境具有快速性.稳定性等 ...

  7. 【Linux基础】Unix与Linux操作系统介绍

    一.Unix和Linux操作系统概述 1.Unix是什么 UNIX是一个计算机操作系统,一个用来协调.管理和控制计算机硬件和软件资源的控制程序. 2.Unix特点 (1)多用户:在同一时刻可以有多个用 ...

  8. linux学习笔记:第二单元 UNIX和Linux操作系统概述

    第二单元 UNIX和Linux操作系统概述 UNIX是什么 UNIX操作系统的特点 UNIX 与Linux的关系 GNU项目与自由软件 GUN计划 自由软件意味着什么 Linux简介 Linux是什么 ...

  9. Linux操作系统内核编译之NTFS文件系统模块支持案例

    Linux操作系统内核编译之NTFS文件系统模块支持案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内核编译概述 单内核体系设计.但充分借鉴了微内核设计体系的优点,为内核引 ...

随机推荐

  1. 趣味PAT--循环-19. 币值转换(20)

    One visible minute on the stage is attributed to ten years of invisible practice off the stage. &quo ...

  2. html5 js跨域

    介绍 当我们使用XMLHttpRequest发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Acce ...

  3. html5 利用canvas实现简单的人物走动

    最近在学习html5,其中涉及到很关键的元素canvas-画布,在网上下载了一些游戏源代码,虽然能看懂,但是想单独地针对某个功能提取出来还是有难处的,于是乎自己又上网查找了一些例子,才将超级玛丽简单的 ...

  4. 遍历元素绑定事件时作用域是怎么回事啊,为什么要用this关键字,而直接使用元素本身就不行?

    如下代码,将this改为rows[i]为啥不起作用了 var rows = document.getElementsByTagName("tr"); for(var i=0;i&l ...

  5. [51单片机]18B20驱动函数

    /**********DS18B20.h**********/ #include "REG52.H" #include "INTRINS.H" sbit DQ ...

  6. Android利用百度地图定位

    百度地图照着百度的教程做的总是出现报错 请帮我看看错误在那 2013-12-13 15:16168海军 | 分类:百度地图 | 浏览1252次 java.lang.RuntimeException: ...

  7. SQL basic

    Function 从例子学习 drop function dbo.getWorkingDateCount; --getWorkingDateCount = functionName CREATE FU ...

  8. MFC中DoDataExchange()的作用

    void CDlgSelectCS::DoDataExchange(CDataExchange* pDX) {     CDialog::DoDataExchange(pDX);     DDX_Te ...

  9. left join 关联条件位置

    select e.last_name, e.department_id, d.department_name from hr.employees e left outer join hr.depart ...

  10. 【HDOJ】1224 Free DIY Tour

    DP. #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm ...