操作系统之系统调用

1.什么是系统调用

应用程序通过系统调用请求操作系统服务

应用程序不能直接申请系统资源,必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样保证了系统的稳定性和安全性。

系统调用分为 设备管理,文件管理,进程控制,进程通信,内存管理

系统调用的相关处理都是在核心态下的
操作系统之系统调用_第1张图片
操作系统之系统调用_第2张图片

2. 系统调用与库函数的区别

库函数可能是封装好的系统调用,也可能不涉及系统调用。应用程序可能发出系统调用,库函数也可能发出系统调用。
操作系统之系统调用_第3张图片
高级语言编译为汇编语言,汇编语言的指令可能需要发出系统调用请求。

3. 系统调用背后的过程

操作系统之系统调用_第4张图片
操作系统之系统调用_第5张图片
操作系统之系统调用_第6张图片
操作系统之系统调用_第7张图片
linux中,系统调用实际上是0x80号中断对应的中断处理程序的子程序

系统调用陷入指令就是 int 0x80;

在执行"int 0x80;"进行中断之前,应用层会做如下准备工作:
1.把系统调用号码赋值给寄存器EAX;
2.把系统调用需要的参数按次序赋值给寄存器EBX,ECX,EDX等等。
这样,等下0x80中断发生的时候,系统调用需要的全部信息就能通过这些寄存器传递给中断处理程序了。

系统调用过程

进入80号中断处理程序后,根据系统调用号码选择相应的中断处理子程序
操作系统之系统调用_第8张图片

4. 总结

操作系统之系统调用_第9张图片

你可能感兴趣的:(操作系统)