《实验五——Linux操作系统是如何工作的?破解操作系统的奥秘》

姓名:方超

学号:SA12**6201

Linux操作系统工作的基础

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

  存储程序计算机是目前通用计算机的工作模型,程序指令保存在存储器中,处理器与存储器通过总线相连,处理器从存储器中获取指令和数据并执行,执行方向是逐条执行。存储器中存储的数据可以随机的读取,处理器的程序指针寄存器(x86中是EIP)标志着当前或者即将执行的指令在存储器中的存储位置。Linux默认工作在这种存储程序计算机模型之上。

  堆栈机制是C语言函数调用的基础,而Linux内核大部分是用C语言编写的,因此堆栈对于Linux系统也至关重要。

  中断机制是现代多任务操作系统的基础,可以说没有中断机制就不可能实现多任务切换。中断机制大致就是向处理器发出中断信号,处理器收到中断信号后会从存储器的固定位置取指令执行。

Linux操作系统工作的原理

  在Linux操作系统中,为了系统内核的安全不受用户应用程序的破坏,将系统工作的状态分为了用户态和内核态,用户态是应用程序工作的状态,而Linux内核运行时的状态就是内核态。处于用户态的代码无法访问到内核态的代码和数据,这就最大限度的保护了系统的安全。我们知道应用程序主要是完成某种特定的功能,而操作系统的主要功能就是对计算机的各种资源进行管理,我们在使用计算机时主要就是使用各种应用程序。在使用Linux操作系统中,大部分时间系统都工作在用户态,但是当出现需要进程调度或者应用程序请求系统调用等需要内核运行时,系统是怎样完成从用户态到内核态的切换,而又返回到内核态的呢?

  答案就是通过中断机制,陷入Linux内核的唯一办法就是中断(这里中断的概念也包括了异常,处理器处理中断和异常的机制是类似的)。中断发生后,处理器会首先根据该进程的TSS段将SS和ESP设置为指向本进程的内核栈。然后将当前在用户态运行的应用程序的eflags,cs及eip的内容压入到该进程的内核栈中,强制将CS和EIP设置为对应中断类型的中断处理程序,在中断处理程序中会调用SAVE_ALL宏来将剩余的寄存器的值压入内核堆栈。以上动作可以理解为保存应用程序的执行断点。之后内核根据中断的类型执行相应的中断服务程序。当中断服务程序执行完毕后,内核会执行schedule函数进行进程调度以选择出将要执行的进程并调用__switch_to函数将SS和ESP切换到即将要执行的进程的内核栈。此时栈中保存了即将运行进程的执行断点,内核调用restore_all函数来将程序的执行断点恢复至各个寄存器,然后执行iret指令将eflags,CS和EIP,SS和ESP(指向进程的用户栈地址)从内核栈中恢复。至此,系统从内核态返回用户态。

Linux操作系统是如何工作的的更多相关文章

  1. 浅析Linux操作系统是如何工作的(思维导图)

    SA***189 多任务计算机运转机制如下思维导图所示: 小结: Linux操作系统是一个在时钟的节拍下,各个模块紧密协作.密不可分的整体,而整个Linux系统都是建立在存储程序的基础之上,正是有了程 ...

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

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

  3. Linux内核分析第二周学习总结:操作系统是如何工作的?

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.函数调用堆栈 ...

  4. Linux操作系统学习_操作系统是如何工作的

    实验五:Linux操作系统是如何工作的? 学号:SA1****369 操作系统工作的基础:存储程序计算机.堆栈(函数调用堆栈)机制和中断机制 首先要整明白的一个问题是什么是存储程序计算机?其实存储程序 ...

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

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

  6. 《Linux内核分析》第二周 操作系统是如何工作的?

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK TWO(2 ...

  7. Linux内核分析——操作系统是如何工作的

    万子惠 + 原创作品转载请注明出处 + <Linux内核分析> 实验部分 使用实验楼的虚拟机打开shell 然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain. ...

  8. Linux内核分析之操作系统是如何工作的

    在本周的课程中,孟老师主要讲解了操作系统是如何工作的,我根据自己的理解写了这篇博客,请各位小伙伴多多指正. 一.知识点总结 1. 三个法宝 存储程序计算机:所有计算机基础性的逻辑框架. 堆栈:高级语言 ...

  9. Linux内核分析作业二—操作系统是如何工作的

    一.实验:简单的时间片轮转多道程序内核代码运行与分析 my_start_kernel之前都是硬件初始化,它是操作系统的执行入口,每循环100000次就进行一次打印. 执行更加简单,每次时钟中断时都会调 ...

随机推荐

  1. DPI深度报文检测架构及关键技术实现

    DPI深度报文检测架构及关键技术实现 当前DPI(Deep Packet Inspect深度报文识别)技术是安全领域的关键技术点之一,围绕DPI技术衍生出的安全产品类型也非常的多样.在分析DPI的进一 ...

  2. 0x27 A*

    终于完全了解A*到底是什么玩意儿了 对于当前的决策,选取当前花费+预估花费最小来拓展. 因为假如预估出现失误,那么很可能就会延伸到一个错误的决策点,而这个决策点偏偏就是ed,而由于预估失误,其他点的当 ...

  3. 用户命令切换-命令su

    命令su格式为su [-] username su su - su test su root

  4. [转]Linux+XAMPP+eolinker开源版v3.2.4

    eolinker是一个由国人开源的接口管理系统(AMS),特性及介绍详见开源中国-eolinker首页. 搭建步骤参考:eolinker开源指南 系统环境:CentOS Linux release 7 ...

  5. dedecms 添加自定义图字段,调用时出错

    1:发现问题 按照以往一样高兴的认为网站就绪了,谁知道出现一个小插曲. 使用dedecms 的站长们应该知道,当一个模型的字段的不能够满足我们项目的需求的时候就会自己创建一些字段,哈今天我就遇到了耶, ...

  6. 更博不能忘——webpack学习笔记

    webpack是前端构建系统就像grunt和gulp(之前有学习过grunt所以也就大概明白webpack是个什么东西),所以说前端技术大部分还真是相通的,现在觉得当时多看的东西并不白费,虽然长时间不 ...

  7. uva 11300 Spreading the Wealth_数学推倒 + 思维

    这道题和负载平衡问题是同一道题, 如果 n<=100n <= 100n<=100 的话是可以用最小费用流来求解的. 但是题中 nnn 最大可达到 10610^6106, 这就需要我们 ...

  8. html格式的文档转成word下载

    当我们前端使用ueditor插件来让用户输入数据,保存至数据库.在另一个地方需要打印用户输入的内容的时候可以用到.因为要将ueditor带格式保存下来保存的就是html格式的内容,后台转化如下: @R ...

  9. Laravel 5.5 项目安装报错

    错误一. [Composer\Exception\NoSslException] The openssl extension is required for SSL/TLS protection bu ...

  10. node——读取文件中的路径问题

    前提 当前的js文件叫_dirnameandfilename.js和hello.txt同在G:\node练习文件夹下 还有一个_dirnameandfilename.js文件在i:/文件夹,但是i:/ ...