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

什么是系统调用 Opera系统?
A 系统调用 是一种提供进程与操作系统之间接口的机制。它是一种编程方法,计算机程序通过该方法向操作系统内核请求服务。
系统调用通过API(应用程序编程接口)向用户程序提供操作系统的服务。系统调用是内核系统的唯一入口点。
系统调用 Opera系统
系统调用示例
例如,要编写一个从一个文件中读取数据并将其复制到另一个文件中的程序,该程序首先需要两个文件的名称:输入文件和输出文件。
在交互式系统中,这种类型的程序执行需要操作系统进行一些系统调用。
- 第一个调用是在屏幕上写入提示信息。
- 第二种方法是从键盘读取定义这两个文件的字符。
系统调用如何工作?
以下是操作系统中系统调用的步骤:
Archi系统调用的结构
如上图所示:
步骤1) 这些进程以用户模式执行,直到被系统调用中断为止。
步骤2) 之后,系统调用将按优先级在内核模式下执行。
步骤3) 系统调用执行完毕后,控制权返回用户模式。
步骤4) 用户进程的执行恢复,在用户模式和 内核模式 按要求。
为什么操作系统需要系统调用?
以下情况需要在操作系统中调用系统调用:
- 读取和写入文件需要系统调用。
- 如果文件系统想要创建或者删除文件,就需要系统调用。
- 系统调用用于创建和管理新进程。
- 网络连接需要系统调用来发送和接收数据包。
- 访问扫描仪或打印机等硬件设备需要系统调用。
系统调用类型
以下是操作系统中的五种系统调用类型:
- 过程控制
- 文件管理
- 设备管理
- 信息维护
- 外场通讯
操作系统中的系统调用类型
过程控制
这些系统调用执行进程创建、进程终止等任务。
功能:
- 结束并中止
- 加载并执行
- 创建进程和终止进程
- 等待 Signal 创建
- 分配和释放内存
文件管理
文件管理系统调用处理文件操作工作,如创建文件,读取和写入等。
功能:
- 建立档案
- 删除文件
- 打开和关闭文件
- 读取、写入和重新定位
- 获取和设置文件属性
设备管理
设备管理负责执行设备操作工作,例如从设备缓冲区读取、写入设备缓冲区等。
功能:
- 请求和释放设备
- 逻辑上连接或断开设备
- 获取和设置设备属性
信息维护
它处理操作系统和用户程序之间的信息及其传输。
功能:
- 获取或设置时间和日期
- 获取进程和设备属性
外场通讯
这类系统调用专门用于进程间通信。
功能:
- 创建和删除通信连接
- 发送和接收消息
- 帮助操作系统传输状态信息
- 连接或断开远程设备
系统调用参数传递规则
以下是向系统调用传递参数的一般规则:
- 参数应该由操作系统压入或弹出堆栈。
- 参数可以通过寄存器传递。
- 当参数数量多于寄存器数量时,应将它们存储在一个块中,并将块地址通过寄存器传递。
操作系统中使用的重要系统调用
等待()
在某些系统中,一个进程必须等待另一个进程完成。这种情况发生在父进程创建子进程时,父进程会一直处于挂起状态,直到子进程完成。
父进程的挂起是通过 wait() 系统调用自动实现的。当子进程结束执行时,控制权会返回给父进程。
叉子()
进程使用此系统调用来创建自身的副本进程。借助 fork() 函数,父进程创建一个子进程,父进程会被挂起,直到子进程执行完毕。
exec()
该系统调用会在已运行的进程中执行一个可执行文件,替换原有的文件。由于没有创建新进程,因此原始进程标识符保持不变,但堆栈、数据、堆等都会被新进程替换。
杀()
kill() 系统调用是操作系统用来向进程发送终止信号,促使其退出的。然而,kill() 系统调用并不一定意味着真正杀死进程,它可能有多种不同的含义。
出口()
exit() 系统调用用于终止程序执行。尤其是在多线程环境下,此调用表示线程执行已完成。exit() 调用后,操作系统会回收进程使用的资源。




