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文件系统模块支持案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内核编译概述 单内核体系设计.但充分借鉴了微内核设计体系的优点,为内核引 ...
随机推荐
- 趣味PAT--循环-19. 币值转换(20)
One visible minute on the stage is attributed to ten years of invisible practice off the stage. &quo ...
- html5 js跨域
介绍 当我们使用XMLHttpRequest发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Acce ...
- html5 利用canvas实现简单的人物走动
最近在学习html5,其中涉及到很关键的元素canvas-画布,在网上下载了一些游戏源代码,虽然能看懂,但是想单独地针对某个功能提取出来还是有难处的,于是乎自己又上网查找了一些例子,才将超级玛丽简单的 ...
- 遍历元素绑定事件时作用域是怎么回事啊,为什么要用this关键字,而直接使用元素本身就不行?
如下代码,将this改为rows[i]为啥不起作用了 var rows = document.getElementsByTagName("tr"); for(var i=0;i&l ...
- [51单片机]18B20驱动函数
/**********DS18B20.h**********/ #include "REG52.H" #include "INTRINS.H" sbit DQ ...
- Android利用百度地图定位
百度地图照着百度的教程做的总是出现报错 请帮我看看错误在那 2013-12-13 15:16168海军 | 分类:百度地图 | 浏览1252次 java.lang.RuntimeException: ...
- SQL basic
Function 从例子学习 drop function dbo.getWorkingDateCount; --getWorkingDateCount = functionName CREATE FU ...
- MFC中DoDataExchange()的作用
void CDlgSelectCS::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Te ...
- left join 关联条件位置
select e.last_name, e.department_id, d.department_name from hr.employees e left outer join hr.depart ...
- 【HDOJ】1224 Free DIY Tour
DP. #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm ...