操作系统学习笔记_02_系统调用(System Call)简述与分类



系统调用是获取操作系统服务的一系列接口,它们通常用C/C++编写,对于一些底层操作也采用汇编语言编写。这些接口提供最基本的操作,是面向程序提供的——程序员通过引用一系列的系统调用编写程序,操作系统在执行程序时按有关描述依次执行系统调用,提供相应的服务。然而,因为系统调用的操作过于基本,所以即使任务非常简单,程序也要多次执行系统操作,使用大量的系统调用;另外,系统调用的指令名称和功能因系统而异,所以直接使用系统调用编写的程序可移植性差,无法跨平台实现;同时,真实系统调用对参数传递要求很繁琐。实际中,程序员通常使用对编程更友好的应用程序接口(以下简称API)设计程序。API为应用程序员调用实际的系统调用,所以程序员只需要熟悉并组合运用API中的指令进行编程,以避免上文提到的三种问题。在比较常用的几种操作系统中,API都被内置在一个库中,通过系统调用接口进行调用。在用户程序调用系统调用时,操作系统进入内核态并执行API中相应的函数。执行完毕后,系统转换回用户模式,通过系统调用接口把结果返回给用户。在执行系统调用时,需要为之传递相应的参数,传递的方式包括存入寄存器、存入内存和压入栈中等。

系统调用主要类型包括进程控制、文件管理、设备管理、信息维护、通信和安全保护等六种类型。

 

  1. 进程控制

    进程是计算机任务的基本单元,操作系统通过系统调用对单一或多个进程进行全方面控制。首先,进程的创建和终止由系统调用实现,进程占用的内存空间由系统调用来分配或释放。在任务中,操作系统也需要通过系统调用装入进程并执行。其中,执行一个程序的进程可能需要装入并执行另一个程序。新进程可能在执行完后将控制权交还给原进程,也可能和原进程并发执行。在前者的情况下,原进程需要暂时挂起,等待新进程的执行。另外,在多进程并发执行时,操作系统通过系统调用获得并设置进程属性,以合理调配可用资源,规划进程的优先级。进程执行中可能出现错误,所以系统调用也被要求能正常或非正常地中断程序。在程序被中断后,控制权就被交给了命令解释器。同时,内存向磁盘写入一条错误信息,由调试器解释问题成因。之后,命令解释器会采取措施以消除这个错误,以继续执行命令,措施通常包括请求用户建议或直接跳转到下一个任务等。

     

  2. 文件和设备管理

    对于文件的大部分基本操作由系统调用执行,主要包括创建、删除、打开、关闭、读写、重定位(解析相对地址)以及取得和设置属性等。如果文件系统是由目录结构所组织的,那么目录也需要同样的一套操作。如Windows系统中的文件夹也可以创建、打开和重命名等等。

    设备表示操作系统控制的不同资源,包括实际存在的物理设备和抽象出来的虚拟设备。在多用户系统中,因为设备只能被单一用户使用,所以需要对设备设计请求和释放操作。用户通过请求来获得设备的使用权吗,在设备被分配给特定用户之后其他用户不能使用,被释放后方可重新被申请。在用户得到设备之后,可以对设备进行读写和重定位操作。

    可以见得,因为设备和文件都可以视为为进程所用的资源(前者实体,后者虚拟),所以他们往往在操作系统表现出相同的特点,对他们的操作有共通之处。很多操作系统把设备和文件视为相同的对象,用同一套系统调用进行操作。对于一些针对文件或设备的细节操作,操作系统还会给出特定的操作。

     

  3. 信息维护

    虽操作系统中有很多有关信息传递的操作,而这些操作也往往由系统调用实现。在操作系统中,当前时间、日期、用户数、操作系统版本号、空闲内存和磁盘空间等信息都是通过系统调用来访问和修改的。针对所有进程的信息,也有系统调用对其进行访问和控制。在调试程序时,和信息维护相关的系统调用发挥了巨大的功能,包括单步执行、内存转储和计时等。

     

  4. 通信

    进程在执行中需要相互传递信息,以完成协同合作。以下介绍两种常见的通信模型:消息传递模型和共享内存模型。

    消息传递模型通过系统调用,在进程之间建立一个连接,以实现信息交换。为了相互匹配,必须知道进程名和进程所在主机的主机名和IP地址。建立连接之后,通信源(客户机)和接收方(服务器)通过系统调用来传递信息。消息传递模型既可用于同一系统下进程的通信,也可用于通过网络向量的不同主机上的进程。

    共享内存模型通过设立进程的公共区域来传递信息。进程所占据的内存原本不允许互访。通过系统调用,特定进程所占用的部分内存访问权限降低,变为半公开区域。指定的其他的进程可以访问此区域,这样不同的进程就可以在此区域读写数据,交换信息。这种机制存在一种变体,称为线程,在其中共享内存是默认的。

     

  5. 保护与安全

    针对进程和用户,保护对计算机各种资源的权限进行了设定,以控制对其的访问与修改。用户、进程的访问需求由系统调用提交,访问许可由系统调用下达。针对系统攻击或错误操作,安全提供了访问和修改系统属性的操作,以保证指令过程收到监督。

     

     

参考文献:

[1] AbrahamSilberschatz. 操作系统概念:Java实现:7:翻译版. 高等教育出版社, 2010.1;

[2] AbrahamSilberschatz. Operating System Concepts Essentials: 2nd ed. WileyOnline Library;

[3] 韩其睿. 操作系统原理. 清华大学出版社, 2013.8.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值