花钱买不到系列之—linux系统调用

news2024/11/16 3:23:53

        关于系统调用是什么,为什么用系统调用?

        也是通过生活的例子来说明白。

        我们生活中有一种东西叫银行,银行是不是有存钱的仓库对不对?好银行有存钱的仓库,银行有桌椅板凳啊,银行还有电脑,设备啊,银行还有各种纸张啊,那么纸张还有那么还有其他的资源啊。

对我们来讲呢?那么,在银行里面管理仓库呢?有谁呢啊?安保?那么桌椅板凳?那么有谁呢?比如说有后勤的人专门负责。电脑设备呢?那么有专门的it组,来帮我们进行我们对应的电脑的管理啊。然后呢,包括你的电脑操作系统要更新了啊,电脑中毒了,那么还有其他的呢,我们还有其他人啊,包括门口呢,那么嗯,就是。门口那一片地的干洁程度,也由保洁大妈去管。食堂里也有其他的人啊,不管怎么样,对银行里面你来讲呢,这叫做它的硬件资源啊。

        那么大家可以知道银行内呢?虽然有很多人,但是人也因为职位的不同,有很多很多的不同的角色,我们举几个最简单的例子,在银行里面呢?那么有一种人呢?具有业务能力的人啊,那么具有业务能力的人就说白了就给我们。你可以理解成叫做提供窗口服务的这些人,比如说我们的部门经理啊,还有叫做银行行长啊,那么按照我们刚刚的说法呢。

        这个行长他对象管理硬件的时候呢,大家都可以知道一个银行行长,他要把自己的桌椅板凳这些,还有仓库电脑设备各种东西,他都要操心的。那么,其中大家可以理解一个非常关键的一个角色,就是行长,就是管理者角色,而保安保了,考勤了at组了,这就是驱动啊。所以银行行长呢,在自己的心里面有一个小本本,比如仓库,那么现在有多少钱啊,那么分别属于哪些人呢?把这都记好了,注意板凳有多少个,电脑设备有多少个装的什么操作系统啊?用了多少年了啊?纸张有多少张啊?我们上次采购什么时间?反正银行行长呢,他有自己的数据。所对于硬件的管理呢,银行行长也叫做先描述再组织,他也可以把最底下的这些所有的设备呢,那么硬件设备呢,全部按照我们特定数据结构的方式先描述再组织管理起来。

         银行行长除了管理这些硬件,还会不会管理人。

        那么他呢?有比如他手底下有20号人,那么他可以把这20号人抽象成一个struct,我们叫做那么我们的业务人员,然后里面呢放的就是业务人员的姓名。业务人员的那么工龄业务人员的电话,业务人员的所属业务,业务人员现在的工资是多少?年终奖金期望是多少?目前,它的那么各项工作指标是什么?那么所以我把所有的我管理的这20个人,每一个人一个节点用链表一管,管理好之后,最后我要找业务能力最强的人,那么最后就变成了。遍历链表就可以了,

 

 所以逻辑是一样的,现实和计算机对比。

       操作系统要对硬件做管理,它有各种驱动程序,对应的就是有各个不同的,那么职能的人帮我们去管理一些硬件底层硬件,对应的就是这些东西。然后呢?操作系统呢?它对象要对硬件做管理的同时,它对于内部的这些软件内容呢?也要做管理,举个例子,银行行长要不要管理这个安保?这安保不行了,天天给我丢钱啊,动不动多一点啊,动不动少一点好吧,那这个安保人换了,这叫做管理吗?是的,他也要做管理,所以就好比操作系统对驱动软件也要做管理。同样的银行行长觉得,这个业务,这个人业务能力不行怎么办?换一个人啊,或者让他去把他拉过去培养一下,让他提升一下专业技能。这也算管理,那么其中对我们来讲呢?那么这个时候我们就相当于操作系统也管理了软件。换句话说,我们不光光可以管理硬件,也能管理软件。

        反正就是它要对软硬件资源做各种管理。管理的思路就是先描述再组织,说白了就是操作系统内对被管理对象要先抽象成对应的数据结构,然后呢,它里面管的硬件太多了,它可以把所有的硬件结构体。那么,对应定的节点信息填上之后,然后把它构建成链表,最后变成了对于硬件的管理,变成了对链表的增加查改。

        如果不知道什么先描述后组织,可以看一下,下面这篇。

花钱也买不到系列—linux 操作系统是如何管理-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_49529507/article/details/141176387?spm=1001.2014.3001.5502        对人的管理也一样。先描述再组织这个人,现在他的各种属性填到一个结构体里面,然后每一个人对一个节点,所有的节点里。保存的是不同人的数据,但是把所有的节点用列表管理起来,我要找业务能力最强的,那么我要对业务能我们整个银行内部的所有人的业务能力做排序。我可以嗯,就是。我可以,就是本质就是根据业务能力对链表节点做排序,我要找到业务能力最差的人对他做删除,所以我就相当于把这个人。那么,便利列表找到我们业务能力最差的那个节点,然后他的电话联系方式什么都有,让我们对应的部门经理跑过去执行就行了,你去帮我把这个人开掉吧。

        这也就是为什么我们自己平时写代码的时候总是动不动上来直接先干一个类。啊,然后呢?那么必要的时候再把对应的类呢?那么放到某种容器或者自己实现放入到各种链表结构里,每一种结构,就配对一种算法。

        你说银行呢?它为什么不让我进入它的仓库啊?然后呢?那么用它的电脑甚至呢?啊花他的纸,然后坐他的凳子上啊,甚至呢,把他的人叫过来骂一顿,或者是,这个部门经理我来把你批一顿,我作为客户,你怎么给我的服务这么不好?

        我们去银行里的时候呢?我们会看到有厚厚的玻璃。有一道玻璃墙,然后上面开个小洞,你要办业务对不对?那你要办业务可以啊,那你先去排队。叫号叫到你的时候,你拿个小凳子坐在坐在那个银行的那个柜台口,然后人家叫你把你资料递进去,然后人家把对应的你把你的资料递进去,然后比如你要取钱。然后呢?那么柜台人员呢?他就会把你要取多少钱从窗口再给你扔出来。

        那么银行为什么要搞那种特别特别厚的玻璃,然后呢,把我拦到窗口。我是个好人。我不是犯罪分子。你为什么搞这么大的玻璃,然后然后怎么怎么样,然后让我在外面排队,然后你自己给我开个小口?

        因为银行。不是不相信你银行。严格意义上来讲,银行系统不相信任何人。

        你是个好人,但是我甄别你这个人是好人,成本儿太高了,你来取个十块钱,我要花100块钱去调查你。万一个人里面群众里面有坏人,怎么办呢啊?

        所以呢,我银行不是不相信你,我银行是不相信任何人。万一我把银行不要所谓的玻璃柜台,所有的银行的所有的东西全部暴露在外面。那么钱放桌子上,银行的工作人员的电脑,各种设备线随便拉,然后呢,那么仓库什么也不要。最后,万一你是个好人,你把你钱存了,你刚前脚一走,后面有一些不好的人过来,他直接那么非法的强制的去在银行内部做破坏,银行能做什么呢?当然是不好意思,他什么都做不了。

        所以呢,银行不相信任何人。所以,银行要将自己保护起来好不相信任何人,而且自己那么非常容易。受到伤害。

        那么我的问题就是你把你保护起来就完了嘛,那你把门关了不就完了?你为什么就是搞个玻璃门儿呢?你把你的那竖成一道墙啊,然后呢?那么你把门一关,把墙什么的铜墙铁壁都给我们安排上。然后把什么玻璃呢?你也不要搞玻璃了,你就直接拿那种大闸门,直接一拉好了,那就一了百了,这谁也伤害不了你。

        可是啊,银行存在的意义。那么是干什么呢?叫做为人民服务,对不对?那么为人民服务,为人民提供,那么叫做存取的需求。提供应该叫做存取,存取啊,包括贷款等

        所以银行现在就面临一个非常尴尬的局面,既要保护自己也要对外通过服务。

        

没关系啊,我们中国人的智慧是非常非常的厉害的。所以呢,我们就有了,现在你看到的玻璃窗。

 这种情况解决了保护自己,又解决了自己要对外通过服务

 所以操作系统也要保护自己,也不相信任何人

 我的操作系统,我把我的什么进程管理文件管理内存管理,包括这种各种驱动程序,包括底层的硬件呢,全部让你随便访问。数据给你提供好啊,让你呢,随随便便访问,那万一你去修改呢,万一你删除呢,那么我操作系统是不是就完了?

        所以操作系统也不相信任何人或者任何程序,可是那有人说那你不相信就不相信吧,那你别让我用了,或者你干脆把这些所有东西一个都不暴露。啊,一个都不暴露,那么请问大家,你怎么知道操作系统,就是你的磁盘现在怎么样了?网卡现在怎么样了?键盘怎么样?显示器怎么样了?你想想显示器打个消息,我现在不能对你提供任何服务。行不行啊?答案是不行。

        操作系统也不相信任何人,但是又必须给叫做上层提供各种各种,我们叫做服务啊,所以操作系统怎么办呢?操作系统很难受啊,不相信任何人,我也要保护我自己,不受伤害,要我直接把自己封闭起来,我又要对我提供最上层提供服务,那么此时呢我呢?就是又要我开放,那怎么办呢?

        所以我们不能让任意用户对操作系统内做任意修改,那么操作系统就也做了一件事情。它呢,自己将自己的访问软硬件信息,包括进程,文件,内存,驱动,包括各种硬件设备的,你要你要读取到上面的信息,或者甚至修改它上面的信息。不好意思,你自己作为用户,不能直接修改。

        就好比在银行里面,你想把钱存进去,你给银行说,我去你仓库,我直接把钱放进去。不行,你只能把你的钱交给柜台,柜台帮你去做同样的操作系统,说不要你自己去把数据写磁盘,写网卡,写显卡你。你这样做风险太大了,那么我呢?给你提供一个叫做我们对应的操作系统接口啊,那么给你提供一些接口,你想访问那么其中我这里有很多接口。你想访问什么?你把你的数据交给我,我帮你做,

        此时呢,操作系统既把自己保护起来了,又没有对外报,那么叫做又对外能够向上提供各种服务,同学们,我们把。这种操作系统的接口,我们简称为叫做系统调用。

们先暂且不谈所谓的系统调用,那么其中啊,我在柜银行柜台里把我的身份证银行卡。交到我们的银行内部的工作人员。这叫做传参的过程。 银行的工作人员呢,经过自己呢业务操作,然后呢,帮我把我的钱取出来,把钱给我。这叫做返回值的过程。

        也就是说呢,你要什么你提前把准备资把资料准备好,到银行里面,你把你的需求一说资料给我,我给你办,办完就把结果给你。这就是传参和返回值同样的。

        那么当我今天想向显示器打印的时候呢?那么我把我要打印的字符串儿交给接口。接口呢,帮我去打印,打印完之后把结果告诉我,告诉我打印成功了,同学们,我们把这样的接口就叫做系统调用接口。

linux 操作系统是用C语言写的。linux的操作系统既然是用C语言写的这个系统调用接口,那么是操作系统提供的。那么这个接口那么我告诉大家,本质上就是c的接口。

        所以这里所谓的c式的接口,那什么叫做接口呢?那么,再直白一点点,说白了就是那么我们操作系统通过C语言给我们提供的函数调用。

        以后我们想在银行里办事情,你能不能走个后门,直接从这里过去,在里面做事情呢?答案是绝对不能,任何人都不能,那么你只能通过柜台来做操作,同样的,那么以后对操作系统的任何访问只能通过系统接口的方式做访问。既给你提供服务,又将你的那么叫做访问过程,处于监管的状态之下,不让你通过其他方式进入,那么这样就既让操作系统。那么,那么对外提供服务,又把操作系统保护了起来,因为操作系统和银行系统一样,它都是不相信任何人和任何用户的。

        所以呢,我们对应的所有的软硬件未来都必须通过系统接口来访问。

        在说一点,不知道大家有没有感觉到,只要是和政府打交道的,在政府外围肯定又一批人,也叫黄牛,比如一个大妈一个字都不认,又想去银行办理一下业务,随着银行办理的业务也来越多。所以这时候银行就有一个人,叫大堂经理。

        大妈来到银行,什么都不懂,所以这个时候,就需要一个人为他做解析,或者是填表,但大妈不会填,不认识字儿怎么办?我之前来的时候,现在也搞不定,怎么办呢?大堂经理说大妈呀,你不要着急。这样啊,我这里有有表你,你一填填完之后你给我啊,你给我之后呢,然后我去帮你去办。我把资料给人,给完之后,然后人把资料给我的时候,我再给你。

        就相当于是那么因为以前是接口式服务,用起来特别不方便。啊,那么成本太高,所以呢,那么我们有大堂经理的存在来提高客户体验,增加客户效率。同样的黄牛票,各种黄牛的存在,那么也都是起了这样的一个作用,它就是让我们办事呢,什么准备,什么资料提前给你说好,要填什么给你提前弄好。弄好之后直接去银行给你一半。 

        那么我们直接使用这些接口,那么太麻烦了,因为系统调用接口,它必须得了解操作系统。那么,不了解操作系统有很多选项,其实是看不懂的,那么可是让我们用户直接用这个系统接口,那也太麻烦了吧?所以在系统的往上,它还有各种各样不同的软件层啊,那么有一种软件呢,它呢叫做shell。

        关于shell,可以参考这篇我这篇博客。

shell命令行解释器—既陌生又熟悉的东西-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_49529507/article/details/141202942?spm=1001.2014.3001.5502那么还有一类呢,叫做库啊,那么比如说我们各种的lib。我虽然没怎么学过库,但是c和我们对应的叫做C++的库啊那么我总是学过的,所以呢,我们其实可以直接调和C和C++的库。就可以完成功某种功能,所以这里呢,一个是满足用户的一个指令需求。好这个呢,是完成我们对应一个是指令操作,一个是什么呢啊?一个是指令操作,一个是我们的编程操作啊。好,甚至还有一类呢,那么也跟shell其实等价的那么叫做什么呢?叫做界面啊。

        

比如你要调用printf,向显示器显示东西,显示器是硬件,在运行的时候是不是,根据冯诺依曼依曼把数据从我们对应的外置,从内存打到硬件上?你调到printf,你以为你直接打到硬件上了,其实并不是你直接里面直接调的,是系统调用,然后操作系统帮你打的。你把数据交给了操作系统而已。

        可是对我们来讲,我们以前怎么没感受到呢?是因为这个库人家写的很好了,你只要调一下函数。就能够把对应的代码写到硬件上,把数据写到硬件上,可是一个成本非常高的事情。可是我们在学C语言时,第一份代码干的就是hello world,你直接有手就行,写出来hello world就打到硬件上了。这不是那么c标准库写的有多好。

        再来理解这张图片就可以很好理解了。

        我们心里就非常清楚了,最底层的我们叫做硬件。冯诺依曼形式组织的驱动程序帮我们去控制各种硬件。操作系统经过先描述再组织,对硬件资源做管理,他把下面资源管理好,目的是给上面提供更好的服务。 

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

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

相关文章

文华财经期货DK多空提示指标源码

N1:40; A:(COHL)/4; AA0:MA(A,N1),LINETHICK3;//中 MA1:MA(CLOSE,5), NODRAW; MA2:MA(CLOSE,10), NODRAW; MA3:MA(C,60), NODRAW,LINETHICK1; 转折线:MA3, NODRAW,COLORCYAN; 顺势线:MA(CLOSE,10), NODRAW; MA20:MA(C,20), NODRAW; MA30:MA(C,30), NODRAW; ZD:MA3>…

网络 基础

目录 1、协议: 2、OSI 七层 模型: 3、TCP/IP 五层 / 四层 协议 3.1、为什么要有TCP / IP 协议? 3.1.1、主机之间变远产生的问题: 3.1.2、TCP/IP协议于操作系统的关系 4、局域网 4.1、Mac 4.1.1 在Linux内使用指令 …

leetCode - - - 哈希表

目录 1.模拟行走机器人(LeetCode 874) 2.数组的度(LeetCode 697) 3.子域名访问次数(LeetCode 811) 4.字母异位词分组(LeetCode 49) 5.小结 1.常见的哈希表实现 2.遍历Map 1.模…

基于Java中的SSM框架实现医院收费系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现医院收费系统演示 摘要 随着医疗体制改革的不断深入,医院收费系统成为医院信息化建设的重点内容。医院收费系统是利用计算机、网络技术和数据库技术,实现病人在医疗机构的诊疗信息的电子化存储、传递和分析,从而提高…

[Meachines] [Medium] Mango PHP弱比较绕过+MongoDB注入+TRP00F自动化权限提升+JJS权限提升

信息收集 IP AddressOpening Ports10.10.10.162TCP:22,80,443 $ nmap -p- 10.10.10.162 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) | ssh-host…

<数据集>快递识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:5382张 标注数量(xml文件个数):5382 标注数量(txt文件个数):5382 标注类别数:1 标注类别名称:[Box-Packet] 序号类别名称图片数框数1Box-Packet53828965 使用标注工…

8.15-配置mysql5.7环境+使用python管理数据库+使用中间件mycat配置读写分离

一、配置mysql5.7的环境 1.基础配置 # 将mysql5.7的包拖入xshell [rootmysql_5 ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz ​ # 解压 [rootmysql_5 ~]# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz ​ # 备份文件 [rootmysql_5 ~]# cp…

短说V4.2.0测试版发布|字体更换、小名片及个人中心UI更换

Hi 大家好, 我是给你们带来惊喜的运营小番茄。 本期更新为短说V4.2.0测试版,本次更新涉及平台有H5、App、微信小程序。 4.2.0版本除功能优化外,新增了如下功能: 一、新增功能 通用版: ①全站默认字体全部更换为…

淘宝到一个墨水屏,成功实现显示经历记录

一,淘一个墨水屏的原因 在一些小的PCB设计和编程中发现,许多程序控制运行情况如果能够显示出来,会很完美。大学时期使用LCD1602(经典)显示了一个称重传感器的课程设计,后来尝试OLED显示。在过程中发现墨水…

【嵌入式linux开发】智能家居入门5(QT、微信小程序、HTTP协议、ONENET云平台、旭日x3派)

智能家居入门5(QT、微信小程序、HTTP协议、ONENET云平台、旭日x3派) 前言一、QT界面设计二、云平台产品创建与连接三、下位机端QT代码总览:四、微信小程序端代码总览五、板端测试 前言 前四篇智能家居相关文章都是使用STM32作为主控&#xf…

报表的多行业应用!用工具做报表省了我不少事...

一、什么是报表? 说起报表,你不会还停留在Excel报表的层面上吧? 传统的报表一般都是基于Excel制作的,主要面向业务人员、开发人员等,也有一些公司会自己去开发设计,只不过周期较长,耗费人力多。…

端到端自动驾驶落地挑战与驱动力

1、端到端的发展驱动力 1.1 对标驱动:特斯拉FSD的标杆作用吸引行业关注 大部分行业专家表示,特斯拉FSD v12的优秀表现,是端到端自动驾驶这一技术路线快速形成大范围共识的最重要的推动力;而在此之前,从来没有一个自动…

C#模拟量线性变换小程序

1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。本文详细介绍了如何使用C#构建一个项目,通过S7net库连接并连续读取S7-1200 PLC的数据,包括创建窗体应用、配置存储位置、安装S7net库…

服务器端请求伪造漏洞

1.客户端请求 客户端请求指的是由客户端设备(如个人计算机、智能手机、平板电脑等)或软件(浏览器、各种APP)发出的请求,以获取指定的网页、图片、视频或其他资源。比如当用户在浏览器中输入URL或点击链接时,浏览器会自动发起HTTP请求,请求服…

Python | Leetcode Python题解之第335题路径交叉

题目&#xff1a; 题解&#xff1a; class Solution:def isSelfCrossing(self, distance: List[int]) -> bool:n len(distance)# 处理第 1 种情况i 0while i < n and (i < 2 or distance[i] > distance[i - 2]):i 1if i n:return False# 处理第 j 次移动的情况…

【语义通信】灵(Genie)——6G的第四维元素

6G 不仅包含 5G 涉及的人类社会、信息空间、 物理世界&#xff08;人、机、物&#xff09;这 3 个核心元素&#xff0c;还第四维元素—灵&#xff08;Genie&#xff09;。Genie存在于虚拟世界体系&#xff0c;虚拟世界体系包括&#xff08;VPS, VBS, VSS&#xff09;&#xff0…

BvSP_ Broad-view Soft Prompting for Few-Shot Aspect Sentiment Quad Prediction

中文题目: 英文题目: BvSP: Broad-view Soft Prompting for Few-Shot Aspect Sentiment Quad Prediction 论文地址: aclanthology.org/2024.acl-long.460.pdf 代码地址: https://github.com/byinhao/BvSP 论文级别&#xff0c; 单位: (2024 ACL long paper) 南开大学&#xff0…

写给大数据开发:如何解决拖延

你是否曾面对一个复杂的Spark任务&#xff0c;明知它对项目至关重要&#xff0c;却总是找各种理由推迟动手&#xff1f;或者&#xff0c;你有没有在面对一堆待优化的Hive查询时&#xff0c;选择先去重构那个"并不那么紧急"的Python脚本&#xff1f; 如果你点头了&am…

faceswap安装

目录 简介下载地址安装clone代码安装conda配置和安装 启动其他 简介 Faceswap 是领先的免费开源多平台 Deepfakes 软件。由 Tensorflow、Keras 和 Python 提供支持&#xff1b;Faceswap 将在 Windows、macOS 和 Linux 上运行。支持CPU运行&#xff0c;无独显也能跑。 下载地址…

language model

1、language model&#xff08;LM&#xff09;&#xff1a;估计token序列的可能性 2、对于HMM&#xff0c;固定需要P(Y)才符合公式&#xff1b;对于LAS&#xff0c;加上P(Y)能够使效果更好 P(Y|X)需要成对的数据&#xff0c;而P(Y)不需要成对&#xff0c;所以可以得到很多数据 …