第四周 扒开系统调用的三层皮(上)

郝智宇 无转载 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

一、用户态、内核态和中断处理过程

1.我们与系统调用打交道是通过库函数的方式

2.一般现代CPU都有几种不同的指令执行级别

因为如果所有程序员写的代码都可以有特权指令的话,系统就会很容易崩溃。

    

3.中断处理是从用户态进入内核态主要的方式

从用户态切换到内核态时,,必须保存用户态的寄存器上下文

中断/int指令会在堆栈上保存一些寄存器的值

4.系统调用只是一种特殊的中断

5.中断发生后第一件事就是保存现场

6.中断处理结束前最后一件事就是恢复现场

二、系统调用概述和系统调用的三层皮

1.系统调用的意义:

操作系统为用户态进程与硬件设备进行交互提供了一组接口——系统调用:

把用户从底层的硬件编程中解放出来;极大的提高了系统的安全性;使用户程序具有可移植性。

2.API和系统调用:

(1)API:应用程序编程接口

(2)一般每个系统调用对应一个封装例程,库再用这些封装例程定义出给用户的API。

3.系统调用的三层皮:

xyz,sysytem_call和sysytem_xyz

(1)中断向量0x80与system_call绑定起来

(2)系统调用号将xyz与sys_xyz关联起来了(使用eax)

三、使用库函数API和C代码中嵌入汇编代码触发同一个系统调用

1.使用库函数API获取系统当前时间

2.C代码中嵌入汇编代码的写法:

_asm_(

汇编语句模板:

输出部分:

输入部分:

破坏描述部分);

3.使用C代码中嵌入汇编代码触发系统调用获取系统当前时间

任务

(我选择的是2号系统调用fork)

使用库函数API:

编译运行结果:

内嵌汇编:

编译运行结果:

 总结:系统调用的工作机制

诸多系统调用可以看作按照序号排好顺序的黑箱,知道了一个系统调用的号,按照其API或者汇编格式的调用方法,

就可以使用这个黑箱的功能,完成一定的任务。而黑箱的内容正是系统给我们提供的服务,帮我们从硬件操作中抽

离出来,提高系统的安全性。

《Linux内核分析》第四周学习总结 扒开系统调用的三成皮(上)的更多相关文章

  1. LINUX内核分析第四周学习总结——扒开系统调用的“三层皮”

    LINUX内核分析第四周学习总结--扒开系统调用的"三层皮" 标签(空格分隔): 20135321余佳源 余佳源 原创作品转载请注明出处 <Linux内核分析>MOOC ...

  2. LINUX内核分析第四周学习总结——扒开应用系统的三层皮(上)【转】

    转自:http://www.cnblogs.com/lalacindy/p/5276874.html 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://moo ...

  3. linux内核分析第四周学习笔记

    linux内核分析第四周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...

  4. Linux内核分析第四周学习总结——系统调用的工作机制

    Linux内核分析第四周学习总结--系统调用的工作机制 内核态 执行级别高,可以执行特权指令,访问任意物理地址,在intel X86 CPU的权限分级为0级. 用户态 执行级别低,只能访问0x0000 ...

  5. 《Linux内核分析》 第四节 扒开系统调用的三层皮(上)

    <Linux内核分析> 第四节 扒开系统调用的三层皮(上) 张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com ...

  6. 《Linux内核分析》 第五节 扒开系统调用的三层皮(下)

    <Linux内核分析> 第五节 扒开系统调用的三层皮(下) 20135307 一.给MenusOS增加time和time-asm命令 给MenuOS增加time和time-asm命令需要 ...

  7. Linux内核分析第四周学习总结:扒开系统调用的三层皮(上)

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

  8. Linux内核分析第四周学习总结

    朱国庆+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 扒开系统调用的三层皮 ...

  9. 20135320赵瀚青LINUX内核分析第四周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周的内容主要是讲解系 ...

随机推荐

  1. sql注入--mysql

    mysql数据库结构: 数据库A  --> 表名  --> 列名 --> 数据 数据库B  --> 表名  --> 列名 --> 数据 mysql数据库信息: my ...

  2. 极限编程核心价值:勇气(Courage)

    原文:https://deviq.com/courage 极限编程核心价值:简单(Simplicity) 极限编程核心价值:沟通(Communication) 极限编程核心价值:反馈(Feedback ...

  3. node版本查看管理工具

    1.nvm : 有点坑爹,安装完后,发现node not found ,最后卸载了,重装node 2.bower :(前端)包管理器(选用) //安装方法 npm install bower -g / ...

  4. VS2012中使用SOS调试CLR

    之前看了<用WinDbg探索CLR世界>的一些列文章,发现SOS真的是一个非常好的调试.net的工具, 然后又惊喜的在http://blogs.msdn.com/b/marioheward ...

  5. ethereumjs/ethereumjs-wallet

    Utilities for handling Ethereum keys ethereumjs-wallet A lightweight wallet implementation. At the m ...

  6. linux问题整理

    linux常用命令 //1.Linux如何查询进程?杀死一个进程? //2.文件权限,改变权限命令 //3.Linux中查看服务的命令 //4.linux查看内存 //5.查看磁盘空间的命令,查看文件 ...

  7. Ant在MyEclipse中的配置总结

    1.在配置Ant之前,先要配置好JDK的JAVA_HOME和path:之后下载解压apache-ant-1.7.1;并配置环境变量ANT_HOME(安装目录,后不可以加分号:)及其path(安装目录/ ...

  8. python下载安装搭建

    python官网下载python运行环境(https://www.python.org/downloads/),建议下载稳定版本,不推荐使用最新版本 安装 然后我们打开CMD,在里面输入python, ...

  9. Beautiful Soup (一)

    一.Beautiful Soup库的理解 1.Beautiful Soup库可以说是对HTML进行解析.遍历.维护“标签树”的功能库 2.pip install bs4 3.from bs4 impo ...

  10. uC/OS-III 时钟节拍,时间管理,时间片调度

    uC/OS-III 时钟节拍,时间管理,时间片调度   时钟节拍 时钟节拍可谓是 uC/OS 操作系统的心脏,它若不跳动,整个系统都将会瘫痪. 时钟节拍就是操作系统的时基,操作系统要实现时间上的管理, ...