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

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

 

系统编程概念

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第1张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第2张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第3张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第4张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第5张图片

 

3.2 库函数

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第6张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第7张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第8张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第9张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第10张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第11张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第12张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第13张图片

 

3.6 可移植性问题

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第14张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第15张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第16张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第17张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第18张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第19张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第20张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第21张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第22张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第23张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第24张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第25张图片

3.Linux/Unix 系统编程手册(上) -- 系统编程概念_第26张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(UNIX,网络编程)