文档章节

Linux系统调用

itfanr
 itfanr
发布于 2015/06/08 20:45
字数 285
阅读 18
收藏 0

linux中是通过执行int $0x80来执行系统调用的,这条汇编指令产生向量为128的编程异常。

进程需要指定需要调用哪个系统调用,这需要传递系统调用号。​

系统调用需要输入输出参数,例如:

  • 实际的值
  • 用户态进程地址空间的变量的地址
  • 包含指向用户态函数的指针的数据结构的地址

system call是所有系统调用的入口点,每个系统调用至少有一个参数,即由eax传递的系统调用号。

一个应用程序调用fork()封装例程,那么在执行int $0x80之前就把eax寄存器的值置为2,即__NR_fork()

这个寄存器的设置是由libc库封装例程进行 进入system call后,立马将eax压栈

寄存器的限制: (1)每个参数的长度不能超过寄存器的长度,即32位 (2)在系统调用号(eax)之外,参数的个数不能超过6个( ebs ecs edx esi edi ebp )多余6个的话,需要用指针。

本文转载自:http://mooc.study.163.com/learn/USTC-1000029000?tid=1000037000#/learn/content?type=detail&id=1000...

共有 人打赏支持
itfanr
粉丝 115
博文 463
码字总数 165088
作品 1
济南
程序员
用brk实现sbrk,关于brk的返回值

首先我们已经知道linux下,malloc最后调用的是sbrk函数,而sbrk是对brk的简单封装。 用sbrk模仿malloc很简单,sbrk(0)得到当前breakpoint,再调用sbrk(size)即可。(PS:breakpoint表示堆结束地...

不写可以么
2013/07/25
0
0
[动态库]深入分析Windows和Linux动态库应用异同

摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。 ...

龙宝宝
2011/08/05
0
0
内核必须懂(一): 用系统调用打印Hello, world!

目录 前言 模块与系统调用 用模块打印Hello, world! 用模块添加自定义系统调用 top指令 关闭Linux图形界面 重编内核添加系统调用 解压系统源代码 撰写自定义系统调用 编译内核 测试新内核 最...

sorrower
09/17
0
0
构建容器之为什么要理解用户空间和内核空间问题

原文:Architecting Containers Part 1: Why Understanding User Space vs. Kernel Space Matters 你是不是被指定开发一个基于容器的应用程序基础框架?如果是这样,你很可能需要理解容器可以...

weixin_38975685
04/08
0
0
几个 Windows 到 Linux 的代码移植问题

1、在 Linux 实现 Win32 API 之 GetTickCount 函数 为了将 Windows 中的 GetTickCount API 函数移植到 Linux,可以使用如下的代码: long GetTickCount() 2、Windows 和 Linux 系统关于 itoa...

雅各宾
2013/07/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
26分钟前
0
0
tomcat中的几种log catalina localhost

体会 catalina.out catalina.log 是tomcat的标准输出(stdout)和标准出错(stderr) cataliana.{yyyy-MM-dd}.log和localhost.{yyyy-MM-dd}.log 是通过logging.properties配置的tomcat自己运行的......

onedotdot
48分钟前
1
0
Oracle return exit continue

常在循环体中看到下面3种语句: return exit continue 举例说明 啥都没有 -- none begin for i in 1 .. 10 loop if i < 5 then dbms_output.put_line('i < 5, i = ' || to_char......

taadis
今天
3
0
JSONObject 转换时出错 InvocationTargetException

JSONObject 转换时出错java.lang.reflect.InvocationTargetException 一时看不出来是什么问题。 挺奇怪的。 百度参考了一下这个 网页的解决方案 说是类型不对,空? 仔细查看代码,果然是有一...

之渊
今天
3
0
no such module 'pop'问题

在github上 clone 了一个 swift 项目,编译时提示"no such module 'POP'"错误,查了一下居然是因为podfile中指定的最低版本是iOS 11.0,大于我测试手机的iOS版本10.3.3,将Podfile中的最低版...

yoyoso
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部