操作系统中的系统调用(Opera系统):什么是、类型和示例

什么是系统调用 Opera系统?

A 系统调用 是一种提供进程与操作系统之间接口的机制。它是一种编程方法,计算机程序通过该方法向操作系统内核请求服务。

系统调用通过API(应用程序编程接口)向用户程序提供操作系统的服务。系统调用是内核系统的唯一入口点。

系统调用 Opera系统
系统调用 Opera系统

系统调用示例

例如,如果我们需要编写程序代码来从一个文件读取数据,然后将该数据复制到另一个文件中。程序需要的第一个信息是两个文件的名称,即输入文件和输出文件。

在交互式系统中,这种类型的程序的执行需要操作系统的一些系统调用。

  • 第一个电话是在屏幕上写一条提示信息
  • 其次,从键盘读取定义这两个文件的字符。

系统调用如何工作?

操作系统中系统调用的步骤如下:

系统调用工作原理

Archi系统调用的结构

Archi系统调用的结构

正如您在上面给出的系统调用示例图中所看到的。

步骤1) 进程在用户模式下执行,直到系统调用中断它。

步骤2) 此后,系统调用将按优先级在内核模式下执行。

步骤3) 一旦系统调用执行结束,控制权将返回到用户模式。

步骤4) 用户进程的执行恢复于 内核模式.

为什么操作系统需要系统调用?

操作系统中需要系统调用的情况有以下几种:

  • 读取和写入文件需要系统调用。
  • 如果文件系统想要创建或者删除文件,就需要系统调用。
  • 系统调用用于创建和管理新进程。
  • 网络连接需要系统调用来发送和接收数据包。
  • 访问扫描仪,打印机等硬件设备,需要系统调用。

系统调用的类型

以下是操作系统中的五种系统调用类型:

  • 过程控制
  • 文件管理
  • 设备管理
  • 信息维护
  • 通信
系统调用的类型

操作系统中的系统调用类型

过程控制

该系统调用执行进程创建、进程终止等任务。

功能:

  • 结束并中止
  • 加载并执行
  • 创建进程和终止进程
  • 等待 Signal 创建
  • 分配和释放内存

文件管理

文件管理系统调用处理文件操作工作,如创建文件,读取和写入等。

功能:

  • 建立档案
  • 删除文件
  • 打开和关闭文件
  • 读取、写入和重新定位
  • 获取和设置文件属性

设备管理

设备管理负责执行设备操作工作,例如从设备缓冲区读取、写入设备缓冲区等。

功能:

  • 请求和释放设备
  • 逻辑地连接/分离设备
  • 获取和设置设备属性

信息维护

它处理操作系统和用户程序之间的信息及其传输。

功能:

  • 获取或设置时间和日期
  • 获取进程和设备属性

外场通讯

这些类型的系统调用专门用于进程间通信。

功能:

  • 创建、删除通信连接
  • 发送、接收消息
  • 帮助OS传输状态信息
  • 连接或断开远程设备

系统调用参数传递规则

以下是向系统调用传递参数的一般通用规则:

  • 参数应该由操作系统压入堆栈或从堆栈弹出。
  • 参数可以通过寄存器传递。
  • 当参数个数多于寄存器个数时,应该将其存储在一个块中,并将块地址作为参数传递给寄存器。

操作系统中使用的重要系统调用

等待()

在某些系统中,一个进程需要等待另一个进程完成其执行。这种情况发生在父进程创建子进程时,父进程的执行保持暂停状态,直到其子进程执行完毕。

父进程的暂停是通过 wait() 系统调用自动发生的。当子进程结束执行时,控制权将移回父进程。

叉子()

进程使用该系统调用来创建作为自身副本的进程。借助该系统调用父进程将创建一个子进程,并且父进程的执行将暂停,直到子进程执行完毕。

exec()

当一个可执行文件位于一个正在运行的进程上下文中并替换旧可执行文件时,此系统调用将运行。但是,由于未创建新进程,因此原始进程标识符仍将保留,但堆栈、数据、头部、数据等将被新进程替换。

杀()

操作系统使用 kill() 系统调用向进程发送终止信号,促使进程退出。但是,kill 系统调用并不一定意味着终止进程,其含义可能多种多样。

出口()

exit() 系统调用用于终止程序执行。特别是在多线程环境中,此调用定义线程执行已完成。使用 exit() 系统调用后,操作系统将回收进程使用的资源。

结语

分类 Windows Unix的
过程控制 创建进程()
退出进程()
等待单个对象()
叉子()
出口()
等待()
设备操控 设置控制台模式()
读取控制台()
写入控制台()
loctl()
读()
写()
文件操作 创建文件()
读取文件()
写入文件()
关闭句柄()
打开()
读()
写()
关闭!)
信息维护 获取当前进程ID()
设置定时器()
睡觉()
获取PID()
警报()
睡觉()
外场通讯 创建管道()
CreateFileMapping()
地图视图文件()
管道()
shm_open()
映射()
防护 设置文件安全性()
初始化安全Descript或者()
设置安全Descript或组()
Chmod()
umask() 的用法和样例:
Chown()