3.Linux/Unix 系统编程手册(上) -- 系统编程概念

系统调用过程
	1.应用程序通过调用C语言函数库中的外壳(wrapper)函数,发起系统调用
	2.对系统调用中断处理例程来说,外壳函数必须保证所有的系统调用参数可用。
	  通过堆栈,这些参数传入外壳函数,但内核却希望这些参数置入特定,因此,
	  外壳函数会将上述参数复制到寄存器。
	3.由于所有系统调用进入内核的方式相同,内核需要区分每个系统调用。为此,外壳
	  函数会将系统调用编号复制到一个特殊的CPU寄存器(%eax)中。
	4.外壳函数执行一条中断机器指令(int 0x80)引发处理器从用户态切换到核心态;并执行
	  系统中断0x80(十进制数128)的中断矢量所指向的代码。
	5.为响应中断0x80,内核会调用 system_call() 例程,来处理这次中断。
	6.若系统调用服务例程的返回值表名调用有误,外壳函数会使用该值来设置全局变量errno。
	  然后,外壳函数会返回到调用程序,并同时返回一个整型值,以表名系统调用是否成功。

 

系统编程概念

 

3.2 库函数

 

3.6 可移植性问题

 

 

 

 

 

 

 

 

 

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页