【操作系统】1.3.3 系统调用

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

@[TOC]

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

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

在这里插入图片描述

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

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

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

4.系统调用的过程

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

简单来说就是:

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

在这里插入图片描述

细节

在这里插入图片描述

总结

在这里插入图片描述

相关文章
|
2天前
|
Linux 开发者 iOS开发
Python系统调用实战:如何在不同操作系统间游刃有余🐟
本文介绍了 Python 在跨平台开发中的强大能力,通过实际例子展示了如何使用 `os` 和 `pathlib` 模块处理文件系统操作,`subprocess` 模块执行外部命令,以及 `tkinter` 创建跨平台的图形用户界面。这些工具和模块帮助开发者轻松应对不同操作系统间的差异,专注于业务逻辑。
14 2
|
14天前
|
网络协议 Linux 调度
深入探索Linux操作系统的心脏:内核与系统调用####
本文旨在揭开Linux操作系统中最为核心的部分——内核与系统调用的神秘面纱,通过生动形象的语言和比喻,让读者仿佛踏上了一段奇妙的旅程,从宏观到微观,逐步深入了解这两个关键组件如何协同工作,支撑起整个操作系统的运行。不同于传统的技术解析,本文将以故事化的方式,带领读者领略Linux内核的精妙设计与系统调用的魅力所在,即便是对技术细节不甚了解的读者也能轻松享受这次知识之旅。 ####
|
10天前
|
缓存 算法 安全
深入理解Linux操作系统的心脏:内核与系统调用####
【10月更文挑战第20天】 本文将带你探索Linux操作系统的核心——其强大的内核和高效的系统调用机制。通过深入浅出的解释,我们将揭示这些技术是如何协同工作以支撑起整个系统的运行,同时也会触及一些常见的误解和背后的哲学思想。无论你是开发者、系统管理员还是普通用户,了解这些基础知识都将有助于你更好地利用Linux的强大功能。 ####
21 1
|
29天前
|
Linux 开发者 iOS开发
Python系统调用实战:如何在不同操作系统间游刃有余🐟
【10月更文挑战第2天】Python 以其卓越的跨平台能力和丰富的标准库,成为解决多操作系统环境下编程挑战的理想选择。本文将通过实际例子展示 Python 如何简化跨平台开发。从文件系统操作到系统调用,再到 GUI 应用开发,Python 提供了多种工具和模块,如 `os`、`pathlib` 和 `subprocess`,帮助开发者轻松应对不同平台间的差异,让你成为真正的跨平台高手。
16 5
|
3月前
|
Linux 开发者 iOS开发
Python系统调用实战:如何在不同操作系统间游刃有余🐟
【8月更文挑战第5天】Python系统调用实战展示了如何轻松应对跨平台挑战。通过`os`与`pathlib`模块处理文件系统操作,如创建目录及获取用户主目录,自动适配不同操作系统的路径格式。利用`subprocess`模块执行外部命令,智能选择`ls`或`dir`等系统特定指令。借助Tkinter创建图形用户界面,实现一次编写到处运行的目标。这些技巧让开发者专注于应用逻辑,简化跨平台开发流程。
43 0
|
6月前
|
Linux C语言
操作系统 | 添加系统调用
操作系统 | 添加系统调用
62 0
|
6月前
|
存储 程序员
操作系统的运行机制、中断和异常、系统调用
操作系统的运行机制、中断和异常、系统调用
92 1
|
存储 缓存 Linux
【看表情包学Linux】冯诺依曼架构 | 理解操作系统 | 基于 Pintos 实现新的用户级程序的系统调用
【看表情包学Linux】冯诺依曼架构 | 理解操作系统 | 基于 Pintos 实现新的用户级程序的系统调用
108 1
|
6月前
|
Linux 开发工具 C语言
【操作系统】实验四 增加Linux系统调用
【操作系统】实验四 增加Linux系统调用
247 1
|
存储
【OS Pintos】用户程序是如何工作的 | Pintos 运行原理 | 虚拟内存 | 页函数 | 系统调用
【OS Pintos】用户程序是如何工作的 | Pintos 运行原理 | 虚拟内存 | 页函数 | 系统调用
265 0