操作系统

系统调用—程序级接口
1.在计算机系统中有两类程序运行:用户程序和系统程序:用户程序必须在系统程序下控制和管理运行;用户程序和系统程序执行时有不同权限
2.根据系统资源和机器指令的使用权限,把处理机执行时的工作状态分为系统态和用户态:系统态:处理及在系统程序中执行;用户态:处理机在用户程序中执行
特权指令:只允许在系统态下使用的指令,实现系统资源的调配,为用户提供外部设备服务,包括:
1)使用外设的指令
2)访问程序状态的指令:改变处理机状态、切换处理机
3)存取特殊寄存器指令:如存取中断寄存器
4)允许和禁止中断
5)其他指令
用户态:用户程序执行时cpu处的状态,在此状态下禁止使用特权指令,不能直接使用系统资源改变CPU状态,并且只能访问用户程序所储存的空间。
访管指令(陷阱指令):本身并不是特权指令。
实现从用户态到系统态的改变;
在系统态下由操作系统代替用户完成请求;
操作系统完成后由系统态转换到用户态
处理机所处的状态:
在这里插入图片描述
用户态转向系统态
1)用户态要求操作系统的服务,系统调用
2)发生一次中断
3)在用户程序中产生一个错误指令
4)在用户程序中企图执行一条特权指令
从系统态转回用户态用一条指令实现,这条指令就是访管指令
系统调用也称程序接口,是操作系统提供给编程人员的唯一接口,用户在程序使用系统调用请求服务操作系统的服务
系统调用是访管指令实现的
在程序中,如果希望请求操作系统的服务(打开一个文件,显示某个目录的内容),就要执行一条访管指令(trap、int),系统处理这个中断,即为用户提供相应的服务(或者响应的用户的请求)。
在汇编中显示的是显示使用访管中断命令,tarp、INT。而在高级语言中是隐式使用访管指令。
系统调用定义
允许用户在程序中调用操作系统所提供的一些子功能
是特殊的功能调用,由特殊的机器指令实现
通过访管指令或软中断方式中断程序,转去执行相应的子程序,完成特定的系统功能
系统调用是一个低级过程,只能由汇编语言直接访问,直接调用
系统调用就是由操作系统代替用户完成某些特定任务的子过程。扩充了机器指令,增加了系统功能,方便用户使用
系统调用的类型
凡是涉及操作系统核心管理资源的操作必须由系统调用实现
不同的操作系统提供不同的系统调用。系统调用越多,功能就越强大,使用更加灵活。
系统调用的类型有:
设备管理类
文件管理类
进程管理类
进程控制类
进程通信类
存储管理类
维护管理类
系统调用的实现
不同的操作系统,系统调用实现的具体方法有所不同,但实质性特点相同
每个系统调用对应一个系统号
每个系统调用有一个对应的执行程序段
每个系统调用要求一定数量的输入参数和返回值
整个系统有一个系统调用执行程序入口
在陷入中断发生时,从用户态—>核心态,这一转换发生在访管中断时由硬件自动实现
系统调用语句本身是硬件提供的,但其所调用的功能是操作系统提供的。每种机器的机器指令集中都有一条系统调用指令
系统调用的处理过程:
在这里插入图片描述
使用步骤
系统调用所需参数及其首地址送到规定的通用寄存器
设置一条调用指令(访管指令或软中断指令)
执行过程
保护用户程序的现场
执行相应功能:根据系统调用提供的功能号,访问系统功能入口地址表,得到相应功能的人口地址,然后转去执行
返回处理:在系统调用处理结束之后,还要恢复处理器现场。在操作系统中,处理器的现场一般被保护在特定的内存区或寄存器中
系统调用的实现:
参数传递:实现用户程序向系统程序的参数传递
常用的实现方法:
由陷入指令自带参数:陷入指令长度有限,且携带系统调用功能号,只能自带有限的参数
通过继续存其传递参数,这些寄存器用户程序和系统程序都能访问,但是寄存器长度较短,无法传递较多的参数
更为常见的是在内存中开辟专用的堆栈区来传递参数
UNIX系统调用的实现
UNIX系统调用的使用,在UNIX系统中系统调用是自陷的一种。
自陷指令(trap):trap处理程序是UNIX系统的自陷处理程序,负责处理所有的自陷(来自处理及内部的中断),其中包括系统调用的处理
系统调用处理过程
1.把要求的参数传递到指定的存储区(user结构中)
2.根据系统调用号查找系统调用入口表,找到想用处理程序的入口地址,并启动执行
3.处理程序执行完成后,返回trap程序,trap返回中断自陷总控程序
如图:在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值