【洪韶武 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 】

 第四周 扒开系统调用的“三层皮”

一、本周学习内容总结


 

1.系统调用的“三层皮”

  • xyz函数—API
  • systemcall—中断向量
  • sysxyz—中断服务程序

2.系统调用的意义及API与系统调用的关系

(1)系统调用的意义:

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

(2)API和系统调用:

  • API与系统调用是不同的—API只是一个函数定义,系统调用通过软中断向内核发出一个明确请求。
  • Libc库定义的一些API引用了封装例程—一般每个系统调用对应一个封装例程,库再用这些封装例程定义出给用户的API 。
  • 不是每个API都对应一个特定的系统调用
  • 返回值—大部分封装例程返回一个整数,-1多数情况下表示内核不能满足进程的要求。

3.用户态、内核态、中断

  • Intel x86 CPU有四种不同的执行级别0——3,Linux只是用了其中的0和3来表示内核态和用户态
  • 用户态—在相应的低执行状态下,代码的掌控范围受到限制,只能在对应级别允许的范围内活动
  • 内核态—在高执行级别下,代码可以执行特权指令,访问任意的物理地址
  • 中断处理是从用户态进入内核态的主要方式。系统调用是一种特殊的中断。
  • 从用户态切换到内核态时必须保存用户态的寄存器上下文。中断/int指令会在堆栈寄存器上保存一些寄存器的值。
  • 中断发生之后第一件事就是保存现场。保护现场就是进入中断程序,保存需要用到的寄存器的值,恢复现场就是退出中断程序,回复保存寄存器的数据。中断处理结束最后一件事就是恢复现场

4.系统调用的参数传递方法

 

二、实验内容总结


  以C语言和嵌入式汇编两种方式编写通过API进行系统调用的实例

  选用20号系统调用getpid

  • 库函数API使用系统调用

  • C代码中嵌入汇编代码使用系统调用

  • 实验结果

 

三、小结


  这周学习到系统调用的过程,及三个关键点:应用程序在用户态调用API函数,该函数将对应的系统调用号及参数保存,触发软中断,然后陷入内核态,中断向量根据系统调用号调用对应的内核函数,内核函数执行完毕后将结果存放的eax中并返回给程序,程序返回的用户态。并通过实验进行了系统调用实例。

转载于:https://www.cnblogs.com/5219hsw/p/5297639.html

第四周—扒开系统调用的“三层皮”相关推荐

  1. LINUX内核分析第四周——扒开系统调用的三层皮

    LINUX内核分析第四周--扒开系统调用的三层皮 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  2. 作业4:扒开系统调用的三层皮(上) 20135115臧文君

    扒开系统调用的三层皮(上) 注:作者:臧文君,原创作品转载请注明出处,<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000 ...

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

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

  4. linux内核分析——扒开系统调用的三层皮(上)

    20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 系统调用 ...

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

    黄胤凯   原创作品转载请注明出处   <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.视频学习 1 ...

  6. 扒开系统调用的三层皮(下)

    5234+ 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.给MenuO ...

  7. Linux内核设计第四周——扒开系统调用三层皮

    Linux内核设计第四周 --扒开系统调用三层皮 一.知识点总结 (一).系统调用基础知识 1.用户态和内核态 内核态:在高级别的状态下,代码可以执行特权指令,访问任意的物理地址:  用户态:在相应的 ...

  8. 《Linux内核分析》期末总结及学习心得

    [洪韶武 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ] 一.学习心得 本学 ...

  9. linux及安全期中总结——20135227黄晓妍

    Linux及安全期中总结 黄晓妍 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...

最新文章

  1. 【转载】如何做一份突出的PPT
  2. linux——用户理解及管理
  3. C#判断一个类中有无指定名称的方法
  4. Java EE应用程序的单片到微服务重构
  5. 视频监控系统中的平台服务器,【视频监控主机 网络视频集中管理平台服务器】 - 太平洋安防网...
  6. [转]linux之top命令
  7. 实验2-2-4 计算分段函数[2] (10 分)
  8. WebSocket之JS发送二进制
  9. property attribute: assign, strong, weak, unsafe_unretain and copy
  10. bounce buffer
  11. Kali 2021.3安装RTL8192EU(腾达U6)无线网卡
  12. 【Pytorch论文相关代码】使用SOLD2预训练好的模型检测与匹配线段(自己的数据集)
  13. 1959年第一台电子计算机,1、 一般认为,世界上第一台电子数字计算机诞生于______。 A.1946年 B.1952年 C.1959年 D.1962年...
  14. 一键体验 Istio
  15. 为什么阿里会选择 Flink 作为新一代流式计算引擎?
  16. ADO,ADO.NET
  17. Python 斐波那契数列 及 杨辉三角
  18. 小程序 朋友圈,点赞 ,评论,发布动态,功能,上传图片 -----发布动态
  19. 《离散数学导学》精炼:第4,5章(集合论,布尔代数)
  20. 30 个相见恨晚的超实用网站

热门文章

  1. [转]Linux内核基础与常用命令总结
  2. 一表理清如何正确选择可视化图表,掌握后再也不怕用错图表
  3. 一个故事告诉你,数据分析如何给企业带来价值
  4. Ant命令编译flex时碰到的问题:[mxmlc] java.lang.OutOfMemoryError: Java heap space
  5. java d long_java 中long型数据的对比
  6. java csv 数组_如何在Java中将JSON数组转换为CSV?
  7. 单因素方差分析graphpad_【SPSS】单因素方差分析(比较均值gt;单因素ANOVA)
  8. ssm练手小项目_20 个 JavaScript+Html+CSS 练手的小项目
  9. centos7,pyinstaller打包出application/x-sharedlib,这是一个求助的帖子
  10. pycharm设置中文