OS_系统调用的认识

OS_系统调用

系统调用是什么

用户接口
	命令接口
		联机命令接口
		脱机命令接口
	程序接口 :程序接口是由一组系统调用组成的

接口是供应用程序调用的特殊函数

为什么要使用系统调用呢

问题:操作系统为什么要提供系统调用的功能

生活场景:我们去打印店打印论文时,在电脑按下打印键时,打印机开始工作,这时候,又来了几位同学也是打印论文的,都在电脑上点了打印键,最终我们的论文并没有和同学的论文页面混杂在一起,都是按顺序依次打印的

思考:如果各个进程可以随机地使用打印机,会发生什么情况

我们的论文打印到一半时,另一位同学按下打印键,结果,我们的论文后半部分与该同学的页面混杂在一起了
解决方法: 操作系统提供"系统调用"的功能,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统发送请求,操作系统会对各个请求进行协调管理。

应用程序通过系统调用请求操作系统的服务,系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中凡是与资源有关的操作(如,存储分配, IO操作,文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
系统资源的管理,对进程的控制需要执行一些特权指令才能完成,所以系统调用相关处理需要在核心态下完成

系统调用和库函数的区别

现代软件工程的开发中,使用高级语言做开发,应用程序调用库函数完成特定功能,库函数内封装好了系统调用的功能

  • 应用程序向上提供库函数

  • 操作系统向上提供系统调用

    有的库函数会使用到系统调用比如涉及到资源的分配时,但是有的不会使用到

  • 陷入指令是在用户态下执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态

  • 发出系统调用请求是在用户态,而对系统调用的相关处理是在核心态下进行的

  • 陷入指令是唯一 一个,只能在用户态执行的,而不能在核心态执行的指令

系统调用背后的过程
1 传统系统调用参数
2 执行陷入指令
3 执行系统调用相应的服务程序
4 返回用户程序

posted on 2022-01-28 22:15  joe_HelloWorld  阅读(178)  评论(0编辑  收藏  举报

导航