【操作系统】1.3.3 系统调用

简介: 【操作系统】1.3.3 系统调用

@[TOC]

1.什么是系统调用,有何作用?

操作系统作为用户和计算机之间的接口,需要向上层提供一些简单易用的服务,主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。应用程序可以通过系统调用来请求获得操作系统内核的服务。

在这里插入图片描述

2.系统调用和库函数的区别

C语言库函数有些就会执行系统调用,C语言将系统调用封装成库函数,以隐藏系统调用的一些细节,是程序员编程更加方便。

应用程序可以直接进行系统调用,也可以使用库函数。

并不是所有的库函数都会进行系统调用,比如”取最大值“就不会有系统调用,而”创建一个新文件“函数就回进行系统调用。

在这里插入图片描述

:question: 为什么系统调用是必须的?

这里如果两台打印机并发执行的话,那么打印出来的一定会很乱。所以不能这两个程序都同时使用打印机。

如何解决:操作系统内核对共享资源进行统一管理,并向上提供”系统调用“,用户进程想要使用打印机这种资源,只能通过系统调用向操作系统内核发出请求,内核对各个请求进行协调处理。 如果打印机已经被使用了,那么其他程序要想使用打印机就只能等待。

在这里插入图片描述

3.什么功能要用到系统调用

凡是和共享资源有关的操作(如存储分配、I/O操作,文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成,这样可以保证系统的稳定性和安全性,防止用户进行非法操作。也就是说只要是很重要的东西都需要由操作系统内核来完成,所以就需要通过系统调用。

在这里插入图片描述

4.系统调用的过程

一个程序想要使用系统调用的话会先将一些要执行系统调用的类型和参数存放入寄存器中,然后执行“陷入指令”,随后转入内核态,这里会有一个系统调用入口程序,根据寄存器中的参数判断用户需要那种系统调用服务。随后在转入那种系统调用的处理程序。

简单来说就是:

  1. 存参数
  2. 变态
  3. 取参数
  4. 调入程序
  5. 变回去

在这里插入图片描述

细节

在这里插入图片描述

总结

在这里插入图片描述

相关文章
|
3月前
|
Linux C语言
操作系统 | 添加系统调用
操作系统 | 添加系统调用
32 0
|
6月前
|
存储 缓存 Linux
【看表情包学Linux】冯诺依曼架构 | 理解操作系统 | 基于 Pintos 实现新的用户级程序的系统调用
【看表情包学Linux】冯诺依曼架构 | 理解操作系统 | 基于 Pintos 实现新的用户级程序的系统调用
68 1
|
3月前
|
资源调度 调度 UED
CPU执行系统调用时发生中断,操作系统还能切回中断前的系统调用继续执行吗?
系统调用服务例程在执行过程中,通常不会被中断。系统调用服务例程的执行是一个原子操作,即在执行期间不会被中断。这是为了确保在系统调用服务例程执行期间对内核数据结构的一致性和完整性。
|
6月前
|
存储 Unix Java
探索操作系统:内核、启动和系统调用的奥秘
操作系统是计算机不可或缺的一部分,它连接着硬件和应用程序。内核是操作系统的核心,负责管理进程和线程、内存、硬件设备以及提供系统调用接口。计算机启动过程中,ROM负责加载并执行BIOS程序,而RAM用于存储运行中的程序和数据。系统调用是操作系统提供给应用程序的接口,通过系统调用可以访问操作系统的功能。系统调用相当于一个办事大厅,应用程序需要通过系统调用来完成特定的操作或获取特定的服务。
|
8月前
|
存储 程序员
操作系统:系统调用
系统调用是操作系统提供给应用程序使用的接口,可理解为一种可供应用程序调用的特殊函数。应用程序可以通过系统调用来获取操作系统内核的服务。
101 0
|
9月前
|
C语言
《计算机操作系统-第三章》之中断与系统调用
《计算机操作系统-第三章》之中断与系统调用
199 0
|
12月前
|
程序员 Linux 调度
操作系统的重要性及系统调用和编程语言的移植性
操作系统的重要性及系统调用和编程语言的移植性
53 0
|
安全 Java Linux
【操作系统】第二章:OS的启动和中断、异常、系统调用(二)
【操作系统】第二章:OS的启动和中断、异常、系统调用
135 0
|
存储 安全
【操作系统】第二章:OS的启动和中断、异常、系统调用(一)
【操作系统】第二章:OS的启动和中断、异常、系统调用
285 0
|
Linux
操作系统课程设计:Linux系统调用/基于模块的文件系统/Linux驱动/统计Linux系统缺页的次数 整合
操作系统课程设计:Linux系统调用/基于模块的文件系统/Linux驱动/统计Linux系统缺页的次数 整合
204 0