Linux内核分析第五周总结
系统调用在内核代码中的工作机制和初始化
xyz()与sys_xyz()是通过系统调用号联系在一起的
0x80与system_call是通过中断向量联系起来的
系统调用机制的初始化
用汇编代码编写系统调用的过程:
- 确定出需传入的参数,以及函数的返回值
- 选择适当的寄存器存储输入参数值,将输入参数值传给相应的寄存器
- 将系统调用号存入到eax寄存器中,并使用"int $0x80"语句,进入中断处理程序,中断号80代表进入系统调用
进入系统调用后:
- 进入sys_ call函数,该函数调用涉及到的系统调用函数(sys _ xxx函数)
- 执行sys_ xxx函数的内部细节,最终将返回值传递给sys_ call函数过程
- 在sys_ call函数中iret最后的结果
实验
在main函数中增加MenuConfig和详细函数
Make rootfs
设置断点
进行单步调试
总结
系统调用就是一个函数,它需要用到内核中的代码,但这部分代码我没有办法直接访问,所以通过系统调用这个中介,它去让内核执行需要执行的代码,把最后的结果告诉用户。这时为用户就是什么都不知道了,等着系统调用来告诉用户结果。
Linux内核分析第五周总结的更多相关文章
- LINUX内核分析第五周学习总结——扒开系统调用的“三层皮”(下)
LINUX内核分析第五周学习总结--扒开系统调用的"三层皮"(下) 标签(空格分隔): 20135321余佳源 余佳源 原创作品转载请注明出处 <Linux内核分析>M ...
- LINUX内核分析第五周学习总结——扒开应用系统的三层皮(下)
LINUX内核分析第五周学习总结——扒开应用系统的三层皮(下) 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/cou ...
- 20135327郭皓--Linux内核分析第五周 扒开系统调用的三层皮(下)
Linux内核分析第五周 扒开系统调用的三层皮(下) 郭皓 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/U ...
- linux内核分析第五周学习笔记
linux内核分析第五周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...
- Linux内核分析第五周——扒开系统调用的“三层皮”(下)
Linux内核分析第五周--扒开系统调用的"三层皮"(下) 李雪琦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.1 ...
- Linux内核分析第五周学习总结——分析system_call中断处理过程
Linux内核分析第五周学习总结--分析system_call中断处理过程 zl + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...
- Linux内核分析——第五周学习笔记
第五周 扒开系统调用的“三层皮”(下) 一.知识点总结 (一)给MenuOS增加time和time-asm命令 在实验楼中,首先 强制删除menu (rm menu -rf) 重新克隆一个新版本的me ...
- Linux内核分析第五周学习总结:扒开系统调用的三层皮(下)
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuO ...
- linux内核分析 第五周
一.实验相关 1.下载老师最新的menu文件,并在其中添加上周所编写的代码,并运行 下载 添加 运行 2.gdb调试跟踪 gdb设置跟踪文件(先进入linux-3.18.6所在的文件) gdb设置断点 ...
- “Linux内核分析”第五周报告
张文俊+ 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 学习总结 1.给M ...
随机推荐
- rls与rlsd
服务器端的程序一般有如下几个过程,首先是bind,然后再是listen,最后是accept.再往后就是客户端与服务器连接后的各种操作了. 相比之下,客户端的程序就比较简单了,只需先获得sock_id, ...
- JdbcTemolate类的介绍<一>
JdbcTemolate类的介绍 JdbcTemplate是Spring JDBC的核心类,封装了常见的JDBC的用法,同时尽量避免常见的错误.该类简化JDBC的操作,我们只需要书写提供SQL的代码和 ...
- web socket RFC6455 frame 打包、解包
#ifndef __APP_WEBSOCKET_FRAME_H__ #define __APP_WEBSOCKET_FRAME_H__ #include "memory.hpp" ...
- Git安装与配置——详细教程1
1.下载Git客户端 想要安装Git首先要下载Git的安装包程序. Git安装包下载地址:https://git-scm.com/downloads/ 2.安装Git 双击安装程序进行安装: a. 欢 ...
- api接口简短实力
无参数传递 public function actionJiekou(){ $url = 'http://wap.guoshihui.com/_static/wap/video/startVideo. ...
- OpenSCAD(1)基础教程
https://blog.csdn.net/freewebsys/article/details/49993049 官网 https://en.wikibooks.org/wiki/OpenSCAD_ ...
- mascara-2(MetaMask/mascara本地实现)-连接线上钱包
https://github.com/MetaMask/mascara (beta) Add MetaMask to your dapp even if the user doesn't have t ...
- oracle 定期迁移分区表数据(不落地)
[oracle@SJ ~]$ cat /home/oracle/JY_SJ.sh #!/bin/bashsource /home/oracle/.bash_profileSDATE=$(date + ...
- 升级pip后出现ImportError: cannot import name main
https://blog.csdn.net/accumulate_zhang/article/details/80269313
- luogu P1439 【模板】最长公共子序列(LCS)
题目qwq (第一道蓝题) 先把第一个序列每个数出现的顺序记下来(数字本身不用记), 然后第二个序列的每个数都对照它的顺序,这样只要得到一个升序的序列就行了qwq 如果遇到出现顺序在前面的数,就用二分 ...