《实验五——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(指向进程的用户栈地址)从内核栈中恢复。至此,系统从内核态返回用户态。

最新文章

  1. SubSonic3.0使用存储过程查询时,不能使用output参数返回值的问题修改
  2. 自定义view--实现滑动
  3. 16.C语言中数据类型的本质含义是:表示一个内存格子的长度和解析方法。
  4. 应用EF访问SQLite数据
  5. hnu11187
  6. 39行代码实现JS HTML模板(轻量+高效+易用)
  7. Struts2部署在Websphere上的问题
  8. 如何重置mysql的密码
  9. JAVA Hashmap不能用基本的数据类型
  10. linux Grant 添加 MySql 用户
  11. HW5.24
  12. 关于java集合排序
  13. LeetCode OJ 53. Maximum Subarray
  14. BZOJ_2058_[Usaco2010 Nov]Cow Photographs_逆序对
  15. fast ai-lesson 1 报错解决方法(正则表达式提取文件名)
  16. python中使用for循环,while循环,一条命令打印99乘法表
  17. Servlet第五课:Cookie的使用
  18. git命令操作的时候,出现中文名显示问题
  19. SQL--数据表--基本操作
  20. [MySQL FAQ]系列 — processlist中哪些状态要引起关注 解决mysql cpu过高问题

热门文章

  1. Hadoop 三剑客之 —— 分布式文件存储系统 HDFS
  2. 关于udebug的使用
  3. Eclipse键盘输出文字,显示到屏幕上方法
  4. web.xml中的url-pattern写法规则及匹配过程
  5. Incorrect integer value: '' for column 'RegNum' at row 1
  6. shell-6.环境变量配置文件
  7. 使用CablleStatement调用存储过程
  8. node——文件夹创建
  9. IOS - autoresizingMask
  10. BZOJ 3203 [SDOI2013]保护出题人 (凸包+三分)