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文件系统模块支持案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内核编译概述 单内核体系设计.但充分借鉴了微内核设计体系的优点,为内核引 ...
随机推荐
- 单点登录CAS使用记(八):使用maven的overlay实现无侵入的改造CAS
前期在学习CAS部署的过程中,都是网上各种教程,各种方案不停的尝试. 期间各种侵入改源码,时间久了,改了哪个文件,改了哪段配置,增加了哪段代码,都有可能混淆不清了. 而且最大的问题是,万一换个人来维护 ...
- startActivityForResult
Activity提供了startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity关闭后会向前面的Ac ...
- php生成table表格
function getTable($arrTh, $arrTr){ $s = '<table class="tbData">'; $s .= '<tr>' ...
- JS表单验证类HTML代码实例
以前用的比较多的一个JS表单验证类,对于个人来说已经够用了,有兴趣的可以在此基础上扩展成ajax版本.本表单验证类囊括了密码验证.英文4~10个 字符验证. 中文非空验证.大于10小于100的数字.浮 ...
- centos 下 apache 重启启动命令
apache 启动 usr/local/apache243/bin/apachectl start apache 重启 usr/local/apache243/bin/apachectl restar ...
- Golang http包下FileServer的使用
FileServer文档:https://godoc.org/net/http#FileServer 今天看到http的 Handle 方法,所以就像试试,就找到FileServer FileServ ...
- Alias Method解决随机类型概率问题
举个例子,游戏中玩家推倒了一个boss,会按如下概率掉落物品:10%掉武器 20%掉饰品 30%掉戒指 40%掉披风.现在要给出下一个掉落的物品类型,或者说一个掉落的随机序列,要求符合上述概率. 一般 ...
- 黑马程序员_JavaIO流(四)
File概述 File类 用来将文件或者文件夹封装成对象. 方便对文件与文件夹的属性信息进行操作. File对象可以作为参数传递给流的构造函数. 了解File类中的常用方法. 字段:static St ...
- 理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();
原文地址:http://www.cnblogs.com/binyong/articles/1750263.html 这篇文章对于了解Javascript的事件处理机制非常好,将它全文转载于此,以备不时 ...
- 解耦——Hybrid H5跨平台性思考
跨平台,是HTML5最重要的能力之一.而Hybrid H5因强依赖于具体App,往往不具有跨平台性.这时,将强依赖关系解耦,即可恢复HTML5的跨平台能力.近期我负责手Q红包打赏项目的前端开发,因项目 ...