系统调用

1、系统调用的概念

系统调用就是用户在程序中调用操作系统所提供的一些子功能,系统调用可以被看作特殊的公共子程序。

系统中的各种共享资源都由操作系统统一掌管。在用户程序中,凡是与资源有关的操作(如存储分配、进行I/O传输以及管理文件等)

都必须通过系统调用方式操作系统提出服务请求,并由操作系统代为完成。通常,一个操作系统提供的系统调用命令有几十乃至上百条之多。

2、系统调用的分类

系统调用按功能大致可分为如下几类:

----- 设备管理:完成设备的请求或释放,以及设备启动等功能。

----- 文件管理:完成文件的读、写、创建及删除等功能。

----- 进程控制:完成进程的创建、撤销、阻塞及唤醒等功能。

----- 进程通信:完成进程之间消息传递信号传递等功能。

----- 内存管理:完成内存的分配、回收以及获取作业占用内存区大小起始地址等功能。

显然,系统调用运行在系统的核心态。通过系统调用的方式来使用系统功能:可以保证系统的稳定性安全性,防止用户随意更改或访问

系统的数据或命令。系统调用命令是由操作系统提供的一个或多个子程序模块实现的。

3、操作系统的运行环境

操作系统的运行环境可以理解为:用户通过操作系统运行上层程序(如系统提供的命令解释程序或用户自编程序)。

而这个上层程序的运行依赖于操作系统的底层管理程序提供服务支持。当需要管理程序服务时,系统则通过硬件中断机制进入核心态,运行管理程序。

也可能是程序运行出现异常情况,被动地需要管理程序的服务,这时就通过异常处理来进入核心态。

当管理程序运行结束时,用户程序需要继续运行,则通过相应的保存的程序现场退出中断处理程序或异常处理程序,返回断点处继续执行。

在操作系统这一层面上,我们关心的是系统核心态用户态的软件实现和切换。

用户态转向核心态的例子:

----- 用户程序要求操作系统的服务,即系统调用

----- 发生一次中断

----- 用户程序中产生了一个错误状态

----- 用户程序中企图执行一条特权指令

----- 从核心态转向用户态由一条指令实现,这条指令也是特权指令。一般是中断返回指令。

----------------------------------------------------------------------------------------

由用户态进入核心态,不仅仅是状态需要切换。

而且,所使用的堆栈也可能需要由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值