计算机操作系统-第五天

news2024/11/20 23:39:58

目录

1、系统调用

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

系统调用与库函数的区别:

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

什么功能要用到系统调用?

系统调用的过程: 


1、系统调用

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

        系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务

系统调用与库函数的区别:

不涉及系统调用的库函数:如“取绝对值”的函数

涉及系统调用的库函数:如”创建一个新文件“的函数

下面是具体的内容:

系统调用(System Call)和库函数(Library Function)是在编程中常见的两个概念,它们有以下区别:

1. 定义和实现:系统调用是操作系统提供的接口,用于访问操作系统的功能和服务。它们是操作系统内核中的一部分,以底层的方式实现。库函数是由编程语言或第三方库提供的函数,用于执行特定的任务。它们是在用户空间实现的,通常是通过调用系统调用来实现其功能。

2. 访问权限:系统调用提供了对底层操作系统的功能的访问权限,例如文件操作、进程管理、网络通信等。它们通常需要特定的权限和系统级别的访问。库函数提供了更高级别的功能,封装了对底层系统调用的调用,并提供更简洁和易用的接口,供开发者在应用程序中使用。

3. 性能开销:由于系统调用涉及从用户空间切换到内核空间,涉及上下文切换和内核态与用户态之间的切换,因此执行系统调用会有一定的性能开销。相比之下,库函数是在用户空间执行的,通常具有更低的开销。

4. 使用场景:系统调用通常用于访问操作系统底层的功能和服务,例如创建进程、读写文件、网络通信等。库函数则提供了更高级别的功能,如字符串操作、数学计算、图形界面等。开发者可以根据具体需求选择使用系统调用或库函数。

总的来说,系统调用提供了对操作系统底层功能的直接访问,而库函数提供了更高级别、更易用的接口,封装了对系统调用的调用。在编程中,我们可以根据需求选择使用系统调用或库函数,以实现所需的功能。

        那么用户一般什么情况下使用库函数而不使用系统调用?一般什么情况下使用系统调用而不使用库函数呢?

一般情况下,开发者更倾向于使用库函数而不直接使用系统调用,原因如下:

1. 方便性和易用性:库函数提供了更高级别、更易用的接口,封装了对系统调用的调用。使用库函数可以简化开发过程,减少编码量,并提供更友好的编程接口。

2. 跨平台兼容性:库函数通常是跨平台的,可以在不同的操作系统上使用,而系统调用的接口和语法可能因操作系统的不同而有所差异。使用库函数可以提高代码的可移植性。

3. 性能优化:库函数通常会进行一些优化,以提高执行效率。库函数的实现可能会使用一些算法和技巧,以减少系统调用的次数或提高系统调用的效率。

然而,有些情况下,开发者可能需要直接使用系统调用,例如:

1. 需要底层功能:某些特定的功能可能只能通过系统调用来实现,例如底层的文件操作、进程管理、网络通信等。在这种情况下,直接使用系统调用可以获得更精确的控制和更底层的功能。

2. 对性能要求较高:在某些性能敏感的场景下,直接使用系统调用可以避免库函数的额外开销和封装,从而提高执行效率。

3. 定制需求:某些特定的需求可能无法通过库函数满足,需要直接调用系统调用来实现定制化的功能。

需要注意的是,直接使用系统调用需要对操作系统的接口和语法有一定的了解,并需要处理底层的细节和错误处理。因此,在一般情况下,使用库函数是更为常见和推荐的做法。只有在特定的需求和场景下,才需要直接使用系统调用。

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

去学校打印店打印论文,你按下了WPS的打印选项,打印机开始工作;当你的论文打印到一半时,另一位同学按下了Word的打印按钮开始打印自己的论文。

如果两个进程可以随意地,并发地共享打印机资源,会发生什么情况?

两个进程并发运行,打印机设备交替地接收到WPS和Word两个进程发来的请求,结果两篇论文论文地内容混杂在一起了......

解决办法:由操作系统内核对共享资源进行统一的管理,并向上提供”系统调用”,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求,内核才会对各个请求进行协调处理。

什么功能要用到系统调用?

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

系统调用的过程: 

 总结就是:应用程序先发出请求:多个传参指令(让cpu知道我用cpu干什么)+陷入指令(让cpu进入内核态),进入内核态后:系统调用程序通过之前的指令,调用相应的服务,服务完成,转回用户态

注意事项:

1、陷入指令是在用户态执行的,执行陷入指令后立即引发一个内中断,使CPU进入核心态

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

本节思维导图:

~over~

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

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

相关文章

如何通过 NFTScan API 按照 NFT 合约地址检索数据?

在当前 NFT 市场还在不断扩张的背景下,各种 NFT 项目依旧是井喷式涌现,投资者和开发者都面临获取项目全貌数据的困境。公链上提取和处理大量的数据既费时又费力,缺乏全面的信息支持,将难以深入判断一个 NFT 项目的真实情况&#x…

Vite项目打包构建优化(视图分析、CDN引入)

使用rollup-plugin-visualizer插件先分析模块占用空间 安装依赖:pnpm i rollup-plugin-visualizervite配置: plugins: [vue(), visualizer({filename: analysis.html, // 分析图生成的文件名open:true // 如果存在本地服务端口,将在打包后自…

Photoshop Lightroom 2024 (Lr2024)最新安装特别版

Adobe Photoshop Lightroom 2024是一款由Adobe Systems公司发布的软件,其英文直译为“明室”,也常被称为数码暗房。它主要用于图片管理和后期润色,包括图片导入、整理、编辑、导出等全过程,不仅可以对图片进行编辑,还可…

linux usb驱动移植(1)

1. USB总线 1.1 usb总线定义 在linux 设备模型中,总线由bus_type 结构表示,我们所用的 I2C、SPI、USB 都是用这个结构体来定义的。该结构体定义在 include/linux/device.h文件中: struct bus_type {const char *name;const c…

WiFi 6在工业物联网应用中有哪些优势?

Wi-Fi 6 (802.11ax)作为新一代应用成熟的无线通信技术,也被越来越广泛地部署在工业物联网中。WiFi 6 相比其前身 Wi-Fi 5 (802.11ac) 进行了多方面的改进提升,非常适合工业环境的苛刻要求。现在也有许多工业网关支持WiFi 6无线技术标准,为工业…

kantts docker化

kan-tts docker本地化 环境安装 下载docker镜像(python3.8的) registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.8.0-py38-torch2.0.1-tf2.13.0-1.9.2 安装基础模型 pip install modelscope 安装语音模型 pip install "modelscope…

KubeSphere 社区双周报 | FluentBit 新增 tcp 输入插件 | 2023.09.29-10.12

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2023.09.29-2023.…

2023年09月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 Python编程(1~6级)全部真题・点这里 第1题:红与黑 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 时间限…

【已解决】MySQL:执行sql查询出错误数据(MySQL隐藏机制-类型转换导致)

目录 问题现象: 问题分析: 结论: 解决方法: 拓展: 问题现象: 今天在项目开发中发现了一个非常奇怪的bug: 如图,我在数据库中以“dept_id 1712651046956421123”为条件&#xff…

【强烈推荐】免费的PDF工具,包括PDF拆分/分割、转WORD等功能的免费在线软件工具,救了大命,找了半天什么pdf365、福xipdf、还有哔果pdf全是打着免费名义收费,烦死了

PDF拆分 - 图文工具箱 - imgtool.net,嘎嘎好用,主要是免费 除此之外,还有其他的功能,需要的可以去看看

[42000][923] ORA-00923: 未找到要求的 FROM 关键字

在oracle数据库写分页查询,使用 rownum时候出错, 代码: SELECT *FROM (SELECT *, ROWNUM AS rnumFROM test t ) WHERE rnum BETWEEN 1 AND 5; 报错: [42000][923] ORA-00923: 未找到要求的 FROM 关键字 Position: 31 问题原因…

低代码平台为企业应用开发提速

一、背景 应用开发周期长一直是IT部门和业务部门面临的问题。 IT部门总是被新的应用需求弄得不堪重负。他们不可能完成业务部门想要完成的每一个项目。同时,业务部门的用户厌倦了等待,并开始完全绕过IT部门。 今天,我们来探索一下“低代码开发…

浅谈压力测试的作用是什么

随着现代应用程序变得越来越复杂,用户的期望也在不断提高,对性能和可靠性的要求变得更加苛刻。在应用程序开发和维护的过程中,压力测试是一项至关重要的活动,它可以帮助发现潜在的问题、评估系统的性能极限,以及确保在…

js内存与数据

1.内存空间的重要性 想要对js理解更深刻,就需要对内存空间有个清晰的认知。 比如基本和引用数据类型存储方式和引用传递到底是怎么回事? 栈内存与堆内存的区别? 2.计算机存储空间 内存:容量小 访问速度快 程序运行时&#xff…

微型导轨可用在哪些设备上?

微型导轨是一种高精度、小体积的导轨系统,被广泛应用于各种需要高精度导向的场合。以下是一些常见的微型导轨应用场景: 1、半导体设备:在半导体制造过程中,设备需要精确、高速和稳定的运动。微型导轨具有高精度和高刚性&#xff0…

【管理运筹学】第 10 章 | 排队论(1,排队论的基本概念)

文章目录 引言一、基本概念1.1 排队过程1.2 排队系统的组成和特征1.3 排队模型的分类1.4 系统指标1.5 系统状态 引言 开一点排队论的内容吧,方便做题。 排队论(Queuing Theory)也称随机服务系统理论,是为解决一系列排队问题&…

工业互联网系列1 - 智能制造中有哪些数据在传输

工业互联网以网络为基础,需要传输的数据种类多种多样,这些数据对于实时监控、生产优化、设备维护和决策支持等方面都至关重要。 以下是一些常见智能制造业中需要传输的数据类型: 传感器数据:制造设备上安装的传感器(如…

高效视频剪辑:批量合并视频与背景音乐结合的技巧解析

在数字媒体时代,视频剪辑已经成为了一种重要的技能。其中,批量合并视频与添加背景音乐是视频剪辑过程中不可忽视的环节。本文将为您提供高效地合并视频和背景音乐的技巧解析,帮助您更快速地完成视频剪辑,创作出更加生动有趣的视频…

加固数据安全:Java助力保护Excel文件,让数据无懈可击

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 Excel文件保护是常用的一种功能,文件保护主要有三种: 添…

OLED透明拼接屏:福州鼓山风景区:徜徉于城市壮丽之

福州是中国福建省的省会城市,历史悠久,文化底蕴深厚。 该城市曾是唐宋时期的重要港口城市,也是丝绸之路海上丝绸之路的起点之一。 福州以其独特的地理位置和丰富的历史遗产而闻名于世。 福州拥有众多的历史景点,其中最著名的是…