程序员人生 网站导航

操作系统概念学习笔记 6 系统调用

栏目:综合技术时间:2015-05-13 07:58:20

操作系统概念学习笔记 6

系统调用



系统调用

系统调用(system call),通经常使用c或c++编写,对底层任务(如需直接访问硬件)可能以汇编语言指令的情势提供。

1个系统调用的例子:
编写1个从1个文件读取数据并复制到另外一个文件的简单程序,则需要以下系统调用序列:

获得输入文件名:

  • 屏幕输入提示
  • 接收输入

获得输出文件名:

  • 屏幕输入提示
  • 接收输入

打开输入文件:

  • 如果文件不存在,放弃

loop:

  • 读取输入文件
  • 写入输出文件

直到读取失败
关闭输出文件
将完成信息输出到屏幕
正常结束

但是, 1般程序开发人员根据利用程序接口(API)设计程序,有3种经常使用的API:

1.适用于windows系统的win32 API

2.适用于POSIX系统的POSIX API(包括UNIX、Linux 和Mac OS X 版本)

3.设计运行于java虚拟机程序的java API

在后台,组成API的函数通常为利用程序员调用实际的系统调用。

向操作系统传递参数有3种方法

  1. 最简单的是通过寄存器来传递参数

  2. 不过有时参数数量会比寄存器多。这时候,这些参数通常存在内存的块和表中,并将块的地址通过寄存器来传递。linux采取这样的方法。

  3. 参数还可压入堆栈中,并通过操作系统弹出。

系统调用类型

系统调用大致可分5类:进程控制、文件管理、、装备管理、信息保护、通讯

  • 进程控制
    • 结束,放弃
    • 装入履行
    • 创建进程,终止进程
    • 获得进程属性,设置进程属性
    • 等待时间
    • 等待事件,唤醒事件
    • 分配与释放内存
  • 文件管理
    • 创建文件,删除文件
    • 打开,关闭
    • 读,写,重定位
    • 获得文件属性,设置文件属性
  • 装备管理
    • 要求装备,释放装备
    • 读,写,重定位
    • 获得装备属性,设置装备属性
    • 逻辑连接或断开装备
  • 信息保护
    • 读取时间和日期,设置时间或日期
    • 读取系统数据,设置系统数据
    • 读取进程,文件或装备属性
    • 设置进程,文件或这杯属性
  • 通讯
    • 创建,删除通讯系统
    • 发送,接受消息
    • 传递状态消息
    • 链接或断开远程装备

进程控制

运行程序需要能正常或非正常地中断其履行(end或abort)

如果1个系统调用被用来非正常的中断履行程序,或程序运行碰到问题引发毛病圈套,那末可能会有内存信息转储并产生1个毛病信息。内存信息转储通常写到磁盘上,并被调试器(帮助程序员发现和检查毛病的系统程序)检查和肯定问题缘由。操作系统必须将控制权转交给命令解释器。命令解释器紧接着读取下1个命令。

对交互系统:
命令解释器简单的读取下1个命令,由于假定用户会采取适合的命令处理毛病

对GUI系统:
1个弹出窗口提示毛病并提个建议

对批处理系统:
命令解释器终止全部作业并继续下1个作业。出现毛病时,有的系统允许控制卡指出1个具体的恢复动作。控制卡是1个批处理概念,他是1个管理进程履行的命令。可定义1个毛病级别。更加严重的毛病可用更高级的毛病参数来表示。命令解释器和下1个程序能利用毛病级别自动决定下1个动作。

履行1个程序或作业可能需要装入另外一个程序。这1点允许命令解释器来履行1个程序,该命令可通过用户命令,鼠标单机和批处理命令来表示。当装入程序终止时:

如果新程序终止时控制权返回到现有程序,那末必须保存现有程序的内存映像。因此,实际上建立1个机制以便1个程序调用另外一个程序。如果两个程序并发继续,那末创建了1个新作业和进程以便多道履行。有的系统调用专门用于这1目的(create process 或 submit job)

如果创建新作业和进程,那末应当能够控制他的履行。这类控制要求能决定和重置进程或作业的属性,包括优先级、最大允许履行时间等。必要时也要能终止它。

另外一组系统调用有助于调试程序,许多系统提供转储内存信息的系统调用,这有助于调试程序,程序trace在履行时能列出所用的每条履行的指令,但是只有少数几类系统提供。

许多操作系统提供时间表来表示1个程序在某个位置履行的时间。时间表要求具有跟踪功能或定时 时间中断。每次定时中断,会记录计数器的值。

文件管理

经常使用的文件管理系统调用:

首先能创建和删除文件。每一个系统调用需要文件名,可能还会需要1些文件属性。创建文件滞后,就需要打开并使用,也可能需要读,写,重定位,最后需要关闭文件。

使用目录来组织文件系统中的文件,目录也需要相同的操作。

另外,还最少需要读取文件属性和设置文件属性,有的操作系统提供更多调用,如文件移动和复制。

其余的,1部份可能提供采取代码或系统调用完成这些操作的API,另外一部份可能仅提供完成这些任务的系统程序。

如果系统程序被其他程序所调用,则其中每个军可以被其他系统调用视为1个API

装备管理

程序在履行时需要用到1些资源才能继续运行,否则,程序必须等待可用的足够多的资源。

操作系统控制的不同资源可当作装备看待,这些装备有些是物理装备(磁带),而其他可当作抽象或虚拟的装备(如文件)。如果系统有多个用户,那末用户必须要求装备以确保能独自使用它。在使用完装备以后,用户需要释放它。

1旦要求了装备(并且得到装备以后),就可以犹如对待文件1样对装备进行读,写,重定位。I/O与文件非常类似,以致于许多操作系统(如UNIX)将这二者合并为文件-装备结构。

信息保护

许多系统调用用来在用户程序和操作系统间传递信息,调用返回的信息多是系统版本、空闲内存、进程信息等

另外,操作系统保护所有进程的信息,有些操作系统调用可访问这些信息。

通讯

有两种模型:

消息传递模型和同享内存模型。
消息传递模型,通讯进程彼此交换消息来交换信息。

同享内存模型,进程使用 shared memory create 和 shared memory attach系统调用来取得其他进程所具有的内存区域的访问权。

系统程序

计算机的逻辑层次中,最底层是硬件,上面是操作系统,接着是系统程序,最后是利用程序。

系统程序提供了1个方便的环境,以开发程序和履行程序。其中1小部份唆使系统调用的简单接口没其他多是相当复杂的。
它们可分为:

文件管理、状态信息、文件修改、程序语言支持、程序装入和履行、通讯

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐