Linux内核及分析 第四周 扒开系统调用的三层皮(上)
实验过程
- 选择20号系统调用getpid(取得进程识别码)
- 在网上查询getpid函数的C语言代码以及其嵌入式汇编语句 - C语言代码: - #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 int main(int argc, const char *argv[])
 {
 pid_t tt;
 tt = getpid();
 printf("%u\n", tt);
 return 0;
 }
 - 嵌入式汇编语句: - #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 int main(int argc, const char *argv[])
 {
 pid_t tt;
 asm volatile(
 "mov $0x14, %%eax\n\t"
 "int $0x80\n\t"
 "mov %%eax, %0\n\t"
 :"=m" (tt)
 );
 printf("%u\n", tt);
 return 0;
 }
 
- 进入实验楼打开XFCE,在cd Code目录下输入指令: vi getpid.c;新建并打开getpid.c文件,在VI中输入在网上查阅的实现getpid的函数代码后,保存并退出。
- 再用gcc将该函数代码进行编译。通过输入指令./getpid即可得出目前进程号为:29895 

5.修改getpid.c,改为嵌入式汇编语句,保存并退出后,使用以下命令gcc getpid -o getpid.c -m32编译

6.使用以下命令 ./getpid 运行得到目前的进程号为11926

实验总结
1. 系统调用的三层皮
1.API(xyz)
2.中断向量(system_call)
3.中断服务程序(sys_xyz)
2. 内嵌汇编调用system call
1.系统调用号放在eax中。
2.系统调用的参数,按照顺序分别放在ebx、ecx、edx、esi、edi和ebp中
3.返回值使用eax传递
作者: 王雪铖
原创作品转载请注明出处
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
Linux内核及分析 第四周 扒开系统调用的三层皮(上)的更多相关文章
- 20135327郭皓--Linux内核分析第四周 扒开系统调用的三层皮(上)
		Linux内核分析第四周 扒开系统调用的三层皮(上) 郭皓 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/U ... 
- LINUX内核分析第四周——扒开系统调用的三层皮
		LINUX内核分析第四周--扒开系统调用的三层皮 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course ... 
- linux 内核 第四周   扒开系统调用的三层皮 上
		姬梦馨 原创作品 http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核态和中断处理过程 用户通过库函数与系统调用联系起来:库函数帮我们把系 ... 
- linux内核分析 第四周 扒开系统调用的三层皮(上)
		一.用户态.内核态和中断处理过程 系统调用是用户通过库函数方式:库函数帮我们把系统调用封装起来. 内核态:高级别执行,可以使用特权指令,访问任意的物理地址. 用户态:低级别执行,代码范围受到限制. C ... 
- LINUX内核设计第五周——扒开系统调用的三层皮(下)
- Linux第五周学习总结——扒开系统调用的三层皮(下
		Linux第五周学习总结--扒开系统调用的三层皮(下) 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/co ... 
- 《Linux内核分析》第四周 扒开系统调用的“三层皮”
		[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK FOUR( ... 
- 20135337朱荟潼 Linux第五周学习总结——扒开系统调用的三层皮(下)
		朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 一.学习内容 (一 ... 
- Linux内核分析 笔记五 扒开系统调用的三层皮(下)  ——by王玥
		(一)给MenuOs增加time和time-asm命令 更新menu代码到最新版 在main函数中增加MenuConfig 增加对应的Ttime和TimeAsm函数 make rootfs (二)使用 ... 
随机推荐
- 怎样将本地web项目部署到腾讯云服务器上?
			怎样将本地web项目部署到腾讯云服务器上? 1.本地计算机的工作: (1).用eclipse新建一个web项目,然后在webcontent下新建一个index.html,然后在本地部署到Tomcat服 ... 
- 【转】BAT批处理中的字符串处理详解(字符串截取)
			下面对这些功能一一进行讲解. 1.截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符.举例说明其基本功能: @echo off set ... 
- CNAME记录和A记录
			主机名:host.abcd.com 别名:一台主机可以提供多种服务,比如http服务和mail服务. 访问http服务就可以使用域名:www.abcd.com 访问mail服务就可以使用域名:mail ... 
- 详解PHP操作Memcache缓存技术提高响应速度的方法
			本文转载http://blog.csdn.net/zhihua_w 不错的博客,仅供本人学习之用 一般来说,如果并发量不大的情况,使不使用缓存技术并没有什么影响,但如果高并发的情况,使用缓存技术就显 ... 
- YOLO2(1)配置安装win10+openvc2413+VS2013 简单测试官例
			参考官网 https://github.com/AlexeyAB/darknet#how-to-compile-on-windows https://github.com/AlexeyAB/darkn ... 
- nginx和php-fpm调用方式
			一.背景: 在开发中碰到一个问题,项目以nginx+php-fpm形式访问交互,结果访问项目时报错如下图: 二.分析: 提示很明确嘛,去看error.log(在nginx.conf或者vhost里 ... 
- 区分Web Server和应用服务器
			一般的信息服务系统架构如下图所示: Web Server:提供Web信息浏览服务,主要处理的静态资源(session,request,js,html,cs等),如响应http请求,响应请求返回静态ht ... 
- 避免for循环
			http://www.360doc.com/content/10/0610/22/1217721_32411251.shtml 避免使用for循环: 在Matlab中,for循环运算效率非常低,因为M ... 
- Qt发起Http/Https请求
			1. BurpSuite抓包 1.1 设置代理 burpsuite代理设置 浏览器代理设置(chrome),其他浏览器同理. 地址栏输入 chrome://settings/, 打开代理设置 设置代理 ... 
- Linux kernel Programming - Concurrency and Race Conditions
			Concurrency and Its Management Race condition can often lead to system crashes, memory leak,corrupte ... 
