系统调用的概念和类型

程序接口,是OS专门为用户设置的,提供给程序员在编程时使用,也是用户程序取得OS服务的唯一途径。它是由一组系统调用(system call)组成,因而,也可以说,系统调用提供了用户程序和操作系统内核之间的接口。系统调用不仅可供所有的应用程序使用,而且也可供OS自身使用。在每个系统中,通常都有几十条甚至上百条的系统调用,并可根据其功能把它们划分成若干类,每一个系统调用都是一个能完成特定功能的子程序。

一、基本概念

在计算机系统中,通常运行着两类程序:系统程序和用户程序。为了防止应用程序对OS的破坏,应用程序和OS的内核是运行在不同的状态,即OS的内核是运行在系统态,而应用程序是运行在用户态。

1.1 系统态和用户态

在计算机系统中设置了两种状态:系统态(或称为核心态)和用户态。在实际运行过程中,处理机会在系统态和用户态间切换。相应地,现代多数OS将CPU的指令集分为特权指令和非特权指令两类。

  • 特权指令:特权指令是指在系统态运行的指令,它对内存空间的访问范围基本不受限制,不仅能访问用户空间,也能访问系统空间,如启动外部设备、设置系统时钟时间、关中断、转换执行状态等。特权指令只允许OS使用,不允许应用程序使用,以避免引起系统混乱。
  • 非特权指令:非特权指令是在用户态运行的指令。应用程序所使用的都是非特权指令,它只能完成一般性的操作和任务,不能对系统中的硬件和软件直接进行访问,对内存的访问范围也局限于用户空间。这样,可以防止应用程序的运行异常和对系统造成破坏。

这种限制是由硬件实现的,如果在应用程序中使用了特权指令,就会发出权限出错信息,操作系统捕获到这个信号后,将转入相应的错误处理程序,同时停止该应用程序的运行,重新调度。

1.2 系统调用

在OS中提供系统调用的目的,是使应用程序可以通过它间接调用OS中的相关过程,取得相应的服务。系统调用在本质上是应用程序请求OS内核完成某功能时的一种过程调用,但它是一种特殊的过程调用,它与一般的过程调用有下述几方面的明显差别:

  1. 运行在不同的系统状态:一般的过程调用其调用程序和被调用程序运行在相同的状态-系统态或用户态;而系统调用与一般调用的最大区别就在于,调用程序是运行在用户态,而被调用程序是运行在系统态。
  2. 状态的转换:由于一般的过程调用并不涉及到系统状态的转换,所以可直接由调用过程转向被调用过程。但在运行系统调用时,由于调用和被调用过程是工作在不同的系统状态,因而不允许由调用过程直接转向被调用过程,需要通过软中断机制,先由用户态转化为系统态,经内核分析后,才能转向相应的系统调用处理子程序。
  3. 返回问题:在采用了抢占式(剥夺)调度方式的系统中,在被调用过程执行完后,要对系统中所有要求运行的进程做优先权分析。当调用进程仍具有最高优先级时,才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最高的进程优先执行。此时,将把调用进程放入就绪队列
  4. 嵌套调用。像一般过程一样,系统调用也可以嵌套进行,即在一个被调用过程的执行期间,还可以利用系统调用命令去调用另一个系统调用。当然,每个系统对嵌套调用的深度都有一定的限制,例如最大深度为6。但一般的过程对嵌套的深度则没有什么限制

在这里插入图片描述

1.3 中断机制

在这里插入图片描述
在这里插入图片描述

二、系统调用的类型

待补充/307

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值