Linux操作系统一

news2025/1/18 7:03:52

一、Linux操作系统通俗认知

        假设,我们现在正在做一家外包公司,我们的目标是把这家公司做上市。其中,操作系统就是这家外包公司的老板。我们可以把这家公司的发展阶段分为以下几个阶段:

(1)初创阶段

        我们的老板(操作系统)基于现在存在的开放的营商环境X86体系结构),创办一家外包公司(系统的启动)。

        因为一开始没有其他员工,老板需要亲自接项目(实模式)。

        

(2)发展阶段

        公司慢慢的越做越大,项目越接越多保护模式、多线程),为了管理各个外包项目,公司建立了 项目管理体系进程管理)、会议室管理体系内存管理)、文档资料管理系统文件系统)、售前售后体系输入输出设备管理)。

(3)壮大阶段

        公司越来越牛,开始促进内部项目的合作进程间通信)和 与外部公司合作网络通信)。

(4)集团化阶段

        公司的业务越来越多,会成立多家子公司虚拟化),或者鼓励内部创业容器化),这个时候,公司就变成了集团。

        大管家的调度能力不再局限于一家公司,而是集团公司Linux集群),从而成功上市从单机操作系统到数据中心操作系统)。

二、如何把Linux内核当成一家外包公司的老板

        操作系统其实就像一个软件外包公司,其内核就相当于这家外包公司的老板。

        现在,我们用双击“QQ”,来看操作系统的全貌。其中,这里所说到的 “用户”是指操作系统的用户,“客户”是指外包公司的客户

1、双击“QQ”这个过程,需要用到的硬件

        用户对着屏幕上的“QQ”图标进行双击鼠标。

        鼠标和键盘是计算机的输入设备。大部分普通用户想要告诉计算机应该做什么,都是通过这两个设备。相应的,对于一家外包公司而言,我们需要配备销售、售前等角色去专门负责和客户对接,把客户需求拿回来,我们把这些人统称为客户对接员

        屏幕(显示器,实际上面显示的东西是由 显卡 控制的)是计算机的输出设备。它将计算机处理用户请求后的结果展现给用户,要不然用户无法知道自己的请求是不是到达并且执行了。相应的,对于一家外包公司而言,当客户给你提了需求,不管你做还是不做,最终做成什么样,你都需要给客户一个反馈,所以你需要配备 交付人员,将做好的需求展示给客户看。

        在操作系统中,输入设备驱动 其实就是 客户对接员

        例如:

        新插上一个鼠标的时候,会弹出一个通知你安装驱动,这就是操作系统这家外包公司给你配备对接人员。当客户告诉对接员需求的时候,对于操作系统来讲,输入设备会发送一个中断。这其实很好理解,客户肯定是希望外包公司把正在做的事情都停下来去服务它。

        所以,这个时候客户发送的需求就被称为 中断事件(Interrupt Event)

        显卡会有 显卡驱动,在操作系统中称为 输出设备驱动,也就是上面说的 交付人员

2、从点击QQ图标,看操作系统全貌

        有了 客户对接员(输入设备驱动) 交付人员(输出设备驱动),外包公司就可以处理用户“在桌面上点击QQ图标”的事件了

        首先,鼠标双击会触发一个中断,这相当于客户告知客户对接员“有了新需求,需要处理一下”。而你会事先把处理这种问题的方法教给客户对接员,在操作系统里面就是调用中断处理函数

        运行QQ是一件大事,因为用户将来的一段时间,用户要一直和QQ进行交互。这就相当于公司接了个大单,而不是处理零星的客户需求,这个时候应该单独立项(以后这个项目相关的事情都讲由这个项目组(进程来处理)。

        立项不能随便立,一定要有一个 项目执行计划书(程序,说明这个项目打算怎么做,一步步如何执行,遇到什么情况应该如何处理等。

        电脑上的程序有很多,如有道云笔记、Word程序等等,它们都是以二进制文件的形式保存在硬盘上。硬盘是一个物理设备,要按照规定格式化成为文件系统,才能存放这些程序。而文件系统需要一个系统进行统一管理,称为 文件管理子系统(File Management Subsystem)

        对于公司而言,立项多了,项目执行计划书(程序)也会很多,自然也需要有个统一保存文件的档案库进行有序的管理。当你从 档案库 拿到这个项目执行计划书(静态的),接下来就是开始执行这个项目(动态的)。

        同理,当操作系统拿到 QQ 的二进制可执行文件的时候,就可以运行这个文件了。QQ 的二进制文件是静态的,称为 程序(Program),而运行起来的 QQ,是动态的,称为 进程(Process)

3、那么公司如何立项呢?

        你会发现一个项目想要顺畅进行,需要用到公司的各种资源,比如:盖公章、开证明、申请会议室、打印材料等等。

        这里有个两难的权衡点:

        (1)资源毕竟是有限的,甚至涉及机密的,不能由项目组滥取滥用。

        (2)效率,保证项目申请资源的时候只跑一次(不需要反复跑),这样才会比较高效。

        那么,公司就需要有一个统一的 办事大厅(系统调用 System Call),明文列出提供哪些服务,谁需要可以来申请,然后就会有回应。

        在操作系统中,也有同样的问题,如:

        多个进程都要往打印机上打印文件时,如果随便乱打印,就会出现同一张纸,第一行是A进程输出的文字,第二行是B进程输出的文字,全乱套了。所以,将打印机的直接操作放在操作系统内核里面,进程不能随便操作。但是,操作系统也提供一个办事大厅,也就是 系统调用(System Call)

        系统调用同样能列出提供哪些接口可以调用,进程有需要的时候就可以去调用。其中,立项是办事大厅提供的关键服务之一(任何一个程序想要运行起来,都需要调用系统调用,创建进程)。

4、成立项目组(进程)

        一个项目立项成功后,就需要去执行,那就要成立 项目组(进程,将开发人员分配到这个项目组,按照 项目执行计划书(程序一步一步执行。

        为了管理这个项目,我们还需要一个项目经理、一套项目管理流程、一个项目管理系统。如果项目多,可能一个开发人员需要同时执行多个项目,这就要考验项目经理的调度能力了。

        在操作系统中,进程的执行需要分配CPU按照程序里面的二进制代码进行执行。为了管理进程,我们还需要一个 进程管理子系统(Process Management Subsystem)。如果运行的进程很多,则一个CPU会并发运行多个进程,也就需要CPU的调度能力了。

        每个项目都应该有自己的私密资料,这些资料不能被其他项目组看到。执行过程中,如果不同项目的办公空间不隔离,一方面,项目的私密性得不到保证,A项目的细节,B项目也能看到;另一方面,项目之间会相互干扰,A项目组的人刚在白板上画了一个架构图,出去上个厕所,结果B项目组的人就给擦了。

        如果把不同的项目组分配到不同的会议室中,就可以解决这个问题了。当然会议室也是有限的,需要有人管理和分配,需要一个 会议室管理系统

        在操作系统中,不同进程有不同的内存空间,但是整个电脑内存就那么点,所以需要统一的管理和分配,这就需要 内存管理子系统(Memory Management Subsystem)

        当用户在QQ通过键盘键入信息发送到网络上,QQ进程不能直接发送网络包,需要调用系统调用,内核使用网卡驱动程序进行发送。

        这就像客户对接员接到一个需求,但是这个需求需要和其他公司沟通,这就需要依靠公司的对外合作部,对外合作部在办事大厅有专门的窗口。

三、操作系统内核体系结构

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

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

相关文章

查看Linux的Ubuntu的版本

我的Ubuntu版本是 Jammy x86_64,即 Ubuntu 22.04.3 LTS,代号为"Jammy Jellyfish",架构是 x86_64(64位)。

微信小程序访问不了阿里云oss图片链接解决办法

以下都有可能导致访问不了oss图片 1.小程序没有加访问白名单 这个需要前端搞,加上白名单,如果是域名加域名白名单,ip的话加ip白名单 2.阿里云设置域名白名单 打开bucket列表,选择对应的bucket 配置这个白名单,配置好以后,开发者工具可以预览了,手机端预览不了,查看自己的路…

【遥感方向EI会议征稿中】第三届遥感与测绘国际学术会议(RSSM 2024)

第三届遥感与测绘国际学术会议(RSSM 2024) 2024 3rd International Conference on Remote Sensing, Surveying and Mapping 遥感与测绘技术,在全球变化、生态、环境、农、林、气象、人类活动等众多领域发挥了重要作用,受到世界各…

共创共赢|美创科技获江苏移动2023DICT生态合作“产品共创奖”

12月6日,以“5G江山蓝 算网融百业 数智创未来”为主题的中国移动江苏公司2023DICT合作伙伴大会在南京成功举办。来自行业领军企业、科研院所等DICT产业核心力量的百余家单位代表参加本次大会,共话数实融合新趋势,共拓合作发展新空间。 作为生…

1-2算法基础-常用库函数

1.排序 sort(first,last,cmp) first指向要排序范围的第一个元素&#xff0c;从0起 last指向要排序范围的最后一个元素的下一个位置 cmp&#xff08;可选&#xff09;&#xff0c;自定义函数&#xff0c;默认从小到大 评测系统 #include <iostream> #include<algorith…

KUKA机器人坐标点如何赋值?

KUKA机器人坐标点如何赋值? KUKA机器人系统中如何实现将某个点位整体赋值给另一个点位呢? 具体的方法可参考以下内容: 如下图所示,选中某个程序,然后点击下方的打开, 如下图所示,进入程序后,这里有P1和P2两个点位,如果要实现让P2的点位和P1的点位完全相同,除了通过示…

一文详解Java单元测试Junit

文章目录 概述、Junit框架快速入门单元测试概述main方法测试的问题junit单元测试框架优点&#xff1a;使用步骤&#xff1a; 使用案例包结构 Junit框架的常见注解测试 概述、Junit框架快速入门 单元测试概述 就是针对最小的功能单元&#xff08;方法&#xff09;&#xff0c;…

1146-table performance-schema.session_variables don‘t exits打卡navicat连接MySQL报错

navicat连接MySQL时报错&#xff1a; 管理员权限打开cmd 输入下面代码&#xff1a; mysql_upgrade -u root -p --force输入密码 然后就可以正常连接了。 mysql_upgrade检查所有数据库中与mysql服务器当前版本不兼容的所有表。 mysql_upgrade也会升级系统表&#xff0c;以便你…

用23种设计模式打造一个cocos creator的游戏框架----(一)生成器模式

1、模式标准 模式名称&#xff1a;生成器模式 模式分类&#xff1a;创建型 模式意图&#xff1a;将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 结构图&#xff1a; 适用于&#xff1a; 当创建复杂对象的算法应该独立于该对象的…

原生cesium、mars3d、supermap-cesium在vue3+vite中引入

1. 原生cesium 需要下载 yarn add cesiumyarn add vite-plugin-cesium2. mars3d 需要下载 yarn add mars3d mars3d-cesiumyarn add vite-plugin-mars3d3. supermap-cesium 只需要引入官网下载的包&#xff0c;build文件夹下的cesium&#xff0c;以及项目中引入的其他cesiu…

Densely Connected Convolutional Networks(2018.1)

文章目录 Abstract1. Introduction提出问题以前的解决方法我们的方法效果 2. Related Work3. DenseNetsResNets.Dense connectivity.Composite function.Pooling layers.Growth rate.Bottleneck layers.Compression.Implementation Details. 4. Experiments5. DiscussionModel …

C语言之动态内存管理(malloc calloc realloc)

C语言之动态内存管理 文章目录 C语言之动态内存管理1. 为什么要有动态内存管理2. malloc 和 free2.1 malloc2.2 free2.3 例子 3. calloc 和 realloc3.1 calloc3.2 realloc 4. 常见的动态内存错误4.1 对NULL指针的解引⽤操作4.2 对动态开辟空间的越界访问4.3 对⾮动态开辟内存使…

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 变量篇】

文章目录 Trace32 查看变量值Var.view 查看变量值Var.view 查看数据类型的大小Var.view 根据变量地址查看变量值 Trace32 查看变量值 步骤1 步骤2 步骤3&#xff1a; 步骤4&#xff1a; 查看结构体变量 str_t32 的值 struct t32_str {uint32_t t32_val;uint32_t …

苹果手机ios系统安装了一个免签应用书签webclip描述文件该如何卸载?

随着移动应用的普及&#xff0c;越来越多的用户开始关注到苹果免签的应用。相比于需要通过 App Store 审核和签名的应用&#xff0c;免签应用无需经过苹果的审核过程&#xff0c;可以直接安装和使用。那么&#xff0c;苹果免签应用是如何制作的呢&#xff1f;本文将介绍制作苹果…

震坤行2023安全月活动顺利收官

震坤行2023安全月活动顺利收官 2023年6月&#xff0c;是第22个全国“安全生产月”&#xff0c;主题为 “人人讲安全、个个会应急”。震坤行工业超市(上海)有限公司基于国家 “安全生产月”的主题要求&#xff0c;以及公司具体的安全形势&#xff0c;于6月1日在全公司范围内正式…

计算机毕业设计 基于大数据的智能家居销量数据分析系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

keil添加了头文件仍然报找不到头文件的原因

如图&#xff0c;我在user分组新建Item&#xff0c;可是keil提示头文件不存在&#xff0c;所有的一切设置都是对的&#xff0c;但就是找不到头文件&#xff0c;找了很久&#xff0c;最后才发现是user分组和文件系统中的文件夹不一致的原因。 如图&#xff0c;在分组的文件系统的…

【Python】Faker库详解:创建测试数据轻而易举

Python Faker库详解&#xff1a;创建测试数据轻而易举 在软件开发和测试过程中&#xff0c;通常需要大量的测试数据来模拟真实环境。Python的Faker库为开发者提供了一个方便、灵活且强大的工具&#xff0c;用于生成各种虚构数据。本文将深入介绍Faker库&#xff0c;演示其基本…

GateWay网关介绍以及整合knife4j聚合所有服务的接口文档

为什么使用网关&#xff1f; 因为多个微服务的端口不同&#xff0c;前端调用不方便&#xff0c;使用网关可以统一接收处理前端的请求&#xff0c;同时方便接口的集中处理&#xff0c;比如鉴权、聚合接口文档、限流等等.. 这里使用Knife4j文档工具来实现接口文档&#xff1a;K…