操作系统原理 —— 什么是系统调用?(五)

news2024/9/24 3:29:06

什么是系统调用? 有什么用作用?

我们想想怎么是系统调用呢?

系统调用 是操作系统提供给应用程序(程序员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。

我们一起来看下图:
在这里插入图片描述

我们在操作系统中,可以使用控制台输入命令,不通过应用程序可以直接和操作系统交互,这个叫做:命令接口。

而在应用程序中,我们程序员可以通过程序接口,来调用操作系统,让操作系统帮助我们完成所需的事情。

那为什么需要系统调用呢?

之前有说到,操作系统它是管理硬件和软件的一些资源,如果不通过系统调用,那么多个程序并发执行是不是就容易出问题。

应用程序通过系统调用请求操作系统的服务,系统中的各个共享资源都由操作系统统一管理,因此在用户程序中,凡事与资源有关的操作(如存储分配、I/O操作,文件管理等),都必须通过系统调用的方式,向操作系统提出服务请求,由操作系统代为完成。 这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

那操作系统提供了哪些系统调用的功能呢? 如下图:

在这里插入图片描述

这里暂时先不需要详细去了解,大概了解一下就行了。

系统调用与库函数的区别

那系统调用,和我们平时在开发过程中调用的库函数有什么区别吗? 我们来看一下图就清楚了

在这里插入图片描述

首先我们知道,在操作系统中是和硬件打交道的,操作系统为了方便其他编程语言,把与硬件的交互都进行了封装,隐藏了很多一些细节。 库函数也是同样的道理,编程语言为了方便程序员理解、使用,把调用系统函数也进行了封装,再一次隐藏一些不必要的细节。这样对于我们这些编程人员来讲,提高了便捷性,也降低了学习成本。

系统调用背后的过程

我们再来详细看一下系统调用背后的过程是什么。

举个例子,我们调用库函数 write(abc) 写操作,首先库函数是需要编译成汇编语言指令,如下图:

在这里插入图片描述

如上图,一个 write库函数,对应了很多条汇编指令,包括前期、后期想处理的命令,比较核心的是:movl指令,这个指令的作用就是将 “abc” 作为系统调用参数放入到某个通用的寄存储器中,然后调用 int x 指令

int x 这里的 x 参数,是指明了系统调用号,此处的int不是 integer 的意思,而是 interrupt 的缩写。

这个 x 可以有以下值:
在这里插入图片描述

这里如果 x 是等于 4,那么就表示写入。

这里需要注意几个点:
1、陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而 CPU 进入核心态。

2、发出系统调用请求是在用户态,而对系统调用的相应处理是在核心态下进行的。

3、陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令。

本章总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编译原理复习(2023.4.25考试版本)

本次复习采用的是这本书,如有书写不当的地方,欢迎批评指正! 第一章 第二章 符号串的运算 相等:两个符号串一模一样的 长度:数他有几个就行了 连接:跟在后面直接写就行了 符号传串的逆:在符…

详解UDP协议与实现UDP版本字典翻译客户端与服务器

文章目录 前言1. UDP协议介绍2.UDP Socket的介绍3. UDP版本字典翻译服务器4. UDP版本字典翻译客户端 前言 UDP协议也是传输层的一种协议,上篇文章我们介绍了TCP协议可以参考我的另一篇博客详解TCP协议以及实现TCP版本的字典翻译服务器客户端,以下来介绍…

【k8s】Wordpress(PHP+nginx+mysql)迁移到k8s

一、迁移思路: 1、制作服务镜像; 1.1 挑选合适的基础镜像; 1.2 准备代码相关的文件; 1.3 通过dockerfile构建镜像;2、制作Kubernetes服务,并完成调度; 2.1确定服务运行的模式(内部运行or 对外提供); 2.2确定服务所使用的控制器; 2.3服务是否…

【邀请函】第四届宁德国际新能源电池与智造技术产业大会(4月26 宁德)| 达索系统百世慧®

未来5-10年,新能源电池行业将呈现“一大支柱、两大应用场景、多元化技术线路”的发展特征。动力锂电池仍将主导新能源电池产业,并加速乘用场景落地。随着技术的日趋成熟,量产后成本下降,优势逐步凸显。 但随着技术迭代&#xff0…

Maya 贴图链接检测重链打包插件tjh_lost_textures_finder 1.3.3

一、问题描述: maya在模型材质贴图及渲染制作流程中,经常会遇到工程文件路径更改后,图片链接失效的问题,还有就是萌新们不懂规矩,图片路径乱放,而造成的图片打包时巨大工作量,南无阿弥陀佛。此…

vue关于echarts后端返回格式取值方法

在vue中,接口返回如下数据: data: {充电桩: [0, 0, 78], 红外摄像头: [0, 0, 0], 火焰探测器: [0, 1, 0], 烟雾传感器: [0, 1, 1], 限流保护器: [0, 0, 1]}, 其中数组里第一个值应该放在data1,第二个放在data2,第三个…

LCHub:微软Power Apps成为保险行业最受欢迎低代码平台

全球领先的保险行业软件服务商Adacta发布了《保险行业低代码应用情况》报告,深度揭示了保险领域对低代码的应用、市场增长、发展趋势等。 该报告对来自德国、奥地利、瑞士、法国、英国、比利时、荷兰和卢森堡等国家的100名保险行业的高管进行了深度调查。(发送“保险低代码”…

社科院杜兰大学金融管理硕士项目——不要停止奔跑,前方更值得期待

不要停止奔跑,不要回顾来路,来路无可眷恋,唯有前方值得期待。——《马男波杰克》。这段话很适用在职的我们,当我们在职场经过打磨,我们被磨平了棱角,被磨掉了脾气,但我们依然相信前方会更值得我…

安装和部署elasticsearch

文章目录 一、安装elasticsearch1.1 部署单点elasticsearch1.1.1 创建网络1.1.2 安装镜像1.1.3 部署1.1.4 测试 1.2 部署kibana1.2.1 安装镜像1.2.2 部署1.2.3 测试1.2.4 DevTools工具 1.3 安装IK分词器1.3.1 安装ik插件1.3.2 查找数据卷目录1.3.3 上传至容器1.3.4 测试 一、安…

腾讯优图入选人工智能顶级会议AAAI论文--10篇

人工智能领域的国际顶级会议AAAI 2020将于2月7日-2月12日在美国纽约举办。近年来随着人工智能的兴起,AAAI每年举办的学术会议也变得越来越火热,每年都吸引了大量来自学术界、产业界的研究员、开发者投稿、参会。 以AAAI2019为例,论文提交数量…

工单管理系统的好处

工单管理系统是一款能够实现业务流程管理,工作任务管理,服务项目管理的工具。该系统能够帮助企业提高客户服务质量、加快企业服务响应速度、降低企业运营成本。 工单管理系统能通过制定计划和控制流程来减少客户投诉,提高客户满意度。可以说…

为什么安全从业者应该了解业务

不久之前,网络安全还被视为独立于企业其他部分的事物。但在过去的十年里,它终于得到了当之无愧、渴望已久的认可和关注。 越来越多的公司聘请首席信息安全官来帮助制定整体业务战略,使安全成为公司董事会的首要任务。 最后,首席…

k8s允许master节点参与调度的设置方法

默认情况下,master节点是不参与调度的,且在master节点上有一个污点NoSchedule(表示k8s将不会将Pod调度到具有该污点的Node上),有关污点章节可参考https://www.cnblogs.com/panw/p/16343392.html 如果想让master节点参与…

云原生可观测性平台deepflow部署

deepflow是什么 DeepFlow 是云杉网络 (opens new window)开源的一款高度自动化的可观测性平台,是为云原生应用开发者建设可观测性能力而量身打造的全栈、全链路、高性能数据引擎。DeepFlow 使用 eBPF、WASM、OpenTelemetry 等新技术,创新的实现了 AutoT…

界面控件DevExpress WinForm的垂直网格组件,让数据展示更灵活!(一)

DevExpress WinForm Vertical Grid(垂直网格)组件设计用于提供UI灵活性,它允许显示数据集中的单个行,或在其90度反向网格容器中显示多个数据集行。此外,开发者还可以将其用作属性网格,就像在Visual Studio …

逻辑回归与梯度下降法

逻辑回归:是用来进行分类的。 逻辑回归的线性预测输出可以写成:y^wTxb 引入Sigmoid函数,让输出限定在[0,1]之间,y^Sigmoid(wTxb)σ(wTxb) 单个样本损失函数:L(y^,y)−(ylog y^(1−y)log (1−y^)) 对逻辑回归进行梯度…

【pytorch系列】优化器optimizer的使用与常用优化器

1 optimizer类实例 1.1 介绍 属性 【default】该实例的类型为 dict,元素为初始化时候的学习率等,具体的keys为 [lr,momentum, dampening, weight_decay, nesterov]【state】保存参数更新过程中的一些中间变量,如momentum的缓存&#xff08…

网络安全-kali配置ssh服务+敏感文件泄+dirsearch脚本

网络安全-kali配置ssh服务敏感文件泄dirsearch脚本 seccure shell 就是加密的telnet 远程用的 service ssh start 开启ssh服务metstat -tpan |gerp 22 监听这个端口是否开启 可以看到本地的22端口这个文件是/etc/ssh/sshd_config 输入 set number 找到第57行 把这个前面的#注…

Smartbi电子表格软件产品的由来

思迈特软件(以下简称“Smartbi”)自2022年11月以来发布的「Smartbi Spreadsheet 电子表格软件」产品(以下简称“电子表格软件”或"Spreadsheet")。 这个软件就是报表工具,那为什么不叫 Report,而…

java 自习室找座系统 mysql

自习室座位管理系统采用B/S结构、结合网络数据库开发技术来设计本系统。开发语言采用JSP,数据库使用Mysql数据库。完成以下基本功能: 功能: 1界面(管理员登录、学生登录) 2管理员更新自习室剩余座位情况 3学生查询自习…