Linux操作系统分析__破解操作系统的奥秘
学号:SA12226343 姓名:sunhongbo
一、操作系统工作的基础
存储程序计算机和堆栈(函数调用堆栈)机制以及中断机制是操作系统工作的基础。
现代计算机仍采用存储程序计算机的结构体系和工作原理。程序输入到计算机,存储在内存储器,运行时,由控制器中的指令寄存器指针(x86的EIP)按地址逐条从存储器中取指令,分析指令,执行,遇到转移指令,在跳转,继续按地址顺序访问指令。
堆栈是函数调用的基础。在一个函数切换到另一个函数去执行指令之前,要保存当前函数一些信息,以便能够在调用函数执行后能使得当前函数继续执行。这过程要借助堆栈来实现。(逻辑上讲,进程的堆栈是由多个堆栈帧构成,一个函数调用对应一个堆栈帧)当发生函数调用,当前函数的堆栈帧会被压入堆栈(压入函调用可能用到的参数,改变eip指向被调用函数。被调用函数将调用函数ebp压栈,建立自己的堆栈帧),返回时,相应的堆栈帧从栈中弹出(恢复原来堆栈帧,即弹出调用函数ebp)。
中断机制使得多任务操作系统成为可能,进程的切换,系统调用,异常等都依赖于中断。
二、操作系统内核时如何工作的
操作系统的几个工作:内核线程,中断处理过程的集合。
当进程正在执行过程中发生中断时,会陷入操作系统内核态,在进入操作系统内核前,会保存将当前进程用户态堆栈的esp、eip指针保存在当前进程内核栈,然后执行中断处理程序,它首先要SAVE_ALL,将一些必要的寄存器值压入内核堆栈,接下来处理中断,在中断处理程序末尾,如果有需要,会进行进程的调度,调用_switch_to函数,首先切换到新调度的进程的内核栈,然后内核调用RESTORE_ALL恢复即将运行进程的现场,接下来执行iret将新进程eflags,cs:eip等指向新进程,将esp、eip恢复到新进程用户栈。系统从内核态返回用户态。操作系统遇见中断就如此循环执行这样一个过程。
Linux操作系统分析__破解操作系统的奥秘的更多相关文章
- 【Linux操作系统分析】设备驱动处理流程
1 驱动程序,操作系统,文件系统和应用程序之间的关系 字符设备和块设备映射到操作系统中的文件系统,由文件系统向上提供给应用程序统一的接口用以访问设备. Linux把设备视为文件,称为设备文件,通过对设 ...
- Linux操作系统是如何工作的?破解操作系统的奥秘
学号:SA12**6112 研究笔记: 1:计算机是怎么样工作的 2:用户态到内核态切换之奥秘解析 3:进程切换之奥秘解析 本博文主要是根据前3篇笔记来总结Linux内核的工作机制. 一:操作系统工作 ...
- Linux操作系统分析 | 深入理解系统调用
实验要求 1.找一个系统调用,系统调用号为学号最后2位相同的系统调用 2.通过汇编指令触发该系统调用 3.通过gdb跟踪该系统调用的内核处理过程 4.重点阅读分析系统调用入口的保存现场.恢复现场和系统 ...
- Linux操作系统和Windows操作系统的区别
1.免费与收费 在中国,windows和linux都是免费的,至少对个人用户是如此,如果那天国内windows真的严打盗版了,那linux的春天就到了!但现在linux依然是任重道远,前路漫漫. 2. ...
- Linux操作系统分析 ------------------中国科技大学
http://teamtrac.ustcsz.edu.cn/wiki/Linux2014
- Linux操作系统进程模型分析进程
Linux操作系统简介 Linux拥有现代操作系统的功能,如真正的抢先式多任务处理,支持多用户内存,保护虚拟内存,支持SMP.UP,符合POSIX 标准联网.图形用户接口和桌面环境具有快速性.稳定性等 ...
- 【Linux基础】Unix与Linux操作系统介绍
一.Unix和Linux操作系统概述 1.Unix是什么 UNIX是一个计算机操作系统,一个用来协调.管理和控制计算机硬件和软件资源的控制程序. 2.Unix特点 (1)多用户:在同一时刻可以有多个用 ...
- linux学习笔记:第二单元 UNIX和Linux操作系统概述
第二单元 UNIX和Linux操作系统概述 UNIX是什么 UNIX操作系统的特点 UNIX 与Linux的关系 GNU项目与自由软件 GUN计划 自由软件意味着什么 Linux简介 Linux是什么 ...
- Linux操作系统内核编译之NTFS文件系统模块支持案例
Linux操作系统内核编译之NTFS文件系统模块支持案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内核编译概述 单内核体系设计.但充分借鉴了微内核设计体系的优点,为内核引 ...
随机推荐
- 在Eclipse中编译maven项目出的问题
在Eclipse中编译Maven项目,运行 jetty:run 指令的时候会出错,在 JRE选项卡中加入: -Dorg.mortbay.util.URI.charset=GBK-Xms512m -Xm ...
- Date与Calendar
Date date=new Date();//现在时间 Date date1=new Date(1000);//格林威治时间1997/01/01开始算,后面的是毫秒 Calendar calendar ...
- 解决Windows服务1053错误方法
WCF使用MSMQ绑定寄宿在Windows服务上,但启动服务时出现1053错误 在网上搜索了N多解决方案,都是比较高深的扯到原理和系统bug等问题 看了看到最后也没有解决,最终我决定使用一个比较山寨的 ...
- @NotNull丶@NotBlank丶@NotEmpty
1.@NotNull:不能为 Null,但是可以为Empty:用在基本数据类型上. @NotNull(message="{state.notnull.valid}", groups ...
- 无缝滚动js (手写通俗易懂)
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Js正则表达式提取图片地址
JavaScript使用正则表达式和Replace两种方法提取IMG标签图片地址,代码如下: /正则表达式 <script language="javascript"> ...
- idHTTP最简洁的修改和取得Cookie例子
procedure TForm1.Button1Click(Sender: TObject); var HTTP: TidHTTP; html, s: string; i: integer; begi ...
- MongoDB资料汇总专题[转发]
转发下..这个哥收集的很全 MongoDB资料汇总专题 作者:nosqlfan http://blog.nosqlfan.com/html/3548.html 最后更新时间:2013-04-22 1. ...
- Altium Designer summer 9 布线 - 差分对布线
差分信号系统是采用双绞线进行信号传输的,双绞线中的一条信号线传送原信号,另一条传送的是与原信号反相的信号.差分信号是为了解决信号源和负载之间没有良好的参考地连接而采用的方法,它对电子产品的干扰起到固有 ...
- BZOJ2091: [Poi2010]The Minima Game
2091: [Poi2010]The Minima Game Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 243 Solved: 163[Subm ...