当前位置: 首页 > news >正文

【Linux旅行记】探究操作系统是如何进行管理的!

文章目录

  • 什么是操作系统?
    • 操作系统概念
    • 操作系统的目的
      • 底层硬件
      • 驱动程序
      • 操作系统
      • 理解系统调用接口
    • 操作系统是如何进行管理的?
      • 什么是管理?
      • 操作系统是如何管理硬件信息呢?
  • 🍀小结🍀

在这里插入图片描述
在这里插入图片描述

🎉博客主页:小智_x0___0x_

🎉欢迎关注:👍点赞🙌收藏✍️留言

🎉系列专栏:Linux入门到精通

🎉代码仓库:小智的代码仓库


什么是操作系统?

在上篇【Linux】冯诺依曼体系结构思想中我们介绍了计算机的各个部件的主要功能,以及他们工作的方式和步骤,但是这些设备都很笨,只能提供基本的功能,就好比键盘来说,它就只能从键盘来获取数据,等待被使用,那么就少不了一个管理者,来管理这些设备,这个设备可以在合适的时间使用合适的工具去完成任务,那么这个管理者就是操作系统(OS)

在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件!

操作系统概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等)

操作系统的目的

  • 与硬件交互,管理所有的软硬件资源
  • 为用户程序(应用程序)提供一个良好的执行环境

接下来我们通过计算机层状结构来了解操作系统:
在这里插入图片描述

底层硬件

  • 计算机底层硬件是指计算机系统中直接参与数据处理、存储和传输的实体部件,包括中央处理器(CPU)、内存、硬盘、主板、显卡、网卡等。这些硬件组成了计算机的核心部分,是计算机系统能够正常运行的基础。

驱动程序

  • 驱动程序是一种软件,它允许操作系统或其他软件与硬件设备进行通信。驱动程序通常由硬件制造商提供,用于控制硬件设备的操作和性能。通过安装正确的驱动程序,操作系统可以识别设备并与之通信,从而确保设备能够正常工作。常见的驱动程序包括打印机驱动程序、显卡驱动程序、声卡驱动程序等。没有驱动硬件设备是无法使用的。

就好比我们平时使用无线鼠标的时候,把USB接口插入电脑之后的几秒钟是用不了鼠标的,过了几秒后,电脑右下角会弹出驱动安装成功之类的提示,此时我们的鼠标才能正常使用,一般的驱动程序操作系统会自带,也有少部分的需要我们去手动下载。

操作系统

  • 操作系统是计算机系统中最基本的系统软件之一,它是一种控制和管理计算机硬件与软件资源的程序集合,为应用程序提供运行环境和服务。操作系统负责管理计算机的内存、文件系统、输入输出设备、网络等硬件资源,并提供进程管理、内存管理、文件管理、网络管理等核心功能。

操作系统就好比银行的管理人员,可以将一家银行比作一个计算机系统,操作系统就像银行的管理人员,负责协调银行内部各个部门之间的工作,确保银行正常运行。具体来说,操作系统可以:

  1. 管理银行的硬件资源,如ATM机、服务器、网络设备等,保证这些设备能够正常工作。
  2. 管理银行的软件资源,如数据库、应用程序等,确保它们能够高效地运行。
  3. 管理银行的数据,如客户信息、账户信息等,保证数据的安全性和完整性。
  4. 管理银行的业务流程,如开户、存款、取款等,确保各个环节的顺畅进行。
  5. 管理银行的安全性,如防火墙、加密技术等,保证银行系统不受到黑客攻击和病毒感染。

通过这些管理措施,操作系统可以让银行更加高效、安全地运营。

总结:操作系统帮助用户,管理好下面的软硬件资源!

那么新的问题又来了,操作系统为什么要管理好软硬件资源呢?

操作系统需要管理好软硬件资源,主要是为了提高计算机系统的性能和可靠性,确保应用程序能够正常运行。以银行为例,如果操作系统不能管理好软硬件资源,可能会导致以下问题:

  1. 银行的ATM机无法正常工作,客户无法进行取款和存款操作,影响银行的服务质量和客户满意度。
  2. 银行的数据库出现故障,客户的账户信息丢失或泄露,对客户的财产安全造成威胁,同时也可能损害银行的声誉。
  3. 银行的应用程序崩溃或运行缓慢,导致客户无法正常办理业务,影响银行的业务效率和收益。
  4. 银行的网络受到攻击或病毒感染,可能导致银行系统瘫痪,造成严重的经济损失。

通过管理好软硬件资源,操作系统可以最大限度地避免这些问题的发生,确保银行的正常运营和服务质量。

总结:操作系统通过管理好底层的软硬件资源(手段),为用户提供一个良好的执行环境 (目的)


操作系统里面会有各种数据。可是,操作系统本身并不相信任何用户!但是不相信你,但是可以让你用。

举个栗子
在银行,银行也不会相信你,在我们平时取钱办理业务的时候,只能通过一个小窗口来进行办理,其他的基本都是用防弹玻璃隔开的,给我们用户只提供一个窗口。如果银行相信每一个人,变成开放的话,什么人都可以进银行,那么就可能会出现资金丢失等的问题。甚至有些人无心的把某些设备误触了造成财产损失,为了避免这些问题银行就会把自己封闭起来,但又不能完全封闭这样就不能为用户提供服务也就没人回来银行办理业务,因此银行会给我们开放各种窗口来给我们用户提供服务,这样银行就可以在不相信用户的同时还能帮你办理各种业务。

操作系统也是这样,操作系统在不相信任何用户的情况下,还要给用户提供一个良好的执行环境。

理解系统调用接口

操作系统保证数据安全,也为了保证给用户提供服务,操作系统以接口的方式给用户提供调用的入口,来获取操作系统内部的数据。
操作系统使用C语言写的,所以操作系统上的接口本质上就是C语言的一个函数,是函数就要有返回值,参数等等。就好比我们要去银行取钱,我们就要带上自己的身份证,银行卡,存折之类的,来通过窗口交给银行的工作人员,工作人员通过内部认证确认无误后,再来帮我们取钱。 操作系统接口也是如此,我们通过系统接口可以传递一些参数,就可以拿到我们想要的系统数据,以便于我们继续开发。
这样自己内部函数调用 ---- 系统调用
所有的访问操作行为,都只能通过系统调用来完成。
系统调用可以对用户输入的参数进行审核,因为系统调用的代码是操作系统自己写的,不会出现恶意修改的现象,这样操作系统既保证了自己安全的情况下,又为上层提供服务了,有了这些系统调用接口,我们就可以允许用户对底层的软硬件资源进行间接管理,所以就有些人基于系统调用接口来设计实现各种各样的软件啦。

但是因为系统调用接口难度太大,所以就有人对这些操作系统调用接口进行封装,将底层操作系统封装成库。
就比如我们平时使用的scanfprintfscanf是从键盘中获取数据到内存,其实本质上是scanf函数通过调用系统接口去访问硬件资源,printf函数也是通过调用系统接口来访问显示器资源。
但凡是涉及到硬件系统的编程语言,都是通过调用系统接口来实现的,所有的编程语言都是在系统调用接口之上的。无论编程语言怎么变化,系统调用接口都是不会变的。

总结:
系统调用接口是操作系统提供给用户程序的一组函数,用于访问操作系统内部的数据和资源。这些接口本质上是C语言的函数,可以传递参数和返回值。所有的访问操作行为都只能通过系统调用来完成,这样可以保证操作系统的安全性和可靠性。系统调用接口可以被封装成库,方便用户程序的开发和使用。无论编程语言怎么变化,系统调用接口都是不会变的。
库函数和系统调用之间是上下层的调用和被调用的关系!库函数在上,系统调用在下!

操作系统是如何进行管理的?

什么是管理?

这里我们来举一个例子,在大学里,有校长,有辅导员,有学生,宿管等等。其中最典型的管理者就是校长。我们大学生就是最典型的被管理者,但是我们从开学到毕业估计也见不到校长几次,甚至不知道校长长什么样子,不知道校长叫什么名字,但是我们确实被管理了,所以说明管理者和被管理者是不需要见面的。

那么问题又来了管理者在不见到被管理者的情况下,是如何进行管理的呢?
比如我们在公司中上班,有一天被老板叫到办公室,老板说,小张最近在公司怎么样啊,工作顺不顺利啊,干了什么事啊,有哪些事情没干啊,有什么困难啊?我们可以发现这个过程中老板是为了获取信息,所以见不见面不是必须的,只要能够获取信息就可以,所以我们只要把信息管理起来就可以完成管理工作。

所以管理的本质:通过对 数据的 管理达到对人的管理。

再来回到大学这个例子,假如我们大学规定挂科达到9门就要被责令退学,小张同学今年 刚好挂了第9门课,然后到每年期末校长都会收到这些挂科信息,校长拿到了小张的挂科信息,就对小张说,你挂了9门课了,可以去办理退学了。在这个过程中校长获取了小张的挂科信息,进而对小张进行了管理。进一步说明了管理的本质就是通过对数据的管理来达到对人的管理。

那么又有新的问题了,管理者和被管理者的面都不见,管理者如何拿到我们的数据呢?
在大学中我们的成绩挂科情况会通过辅导员来进行汇总,来提供给校长,那么辅导员是管理者吗?

我们这个世界上所做的事情就分为两种:

  1. 做决策
  2. 做执行

真正的管理者他的核心工作应该放在做决策上,具有决策权
再来回到这个例子当中,辅导员对于学生大部分工作是没有决策权的,所以辅导员不算是真正意义上的管理者,而是在做学校安排的一些工作,而是一个执行者。
在这里插入图片描述
所以管理者需要通过执行者来获取被管理者的数据信息。

回到我们的计算机当中,校长就相当于操作系统,辅导员就是驱动程序,学生就是软硬件资源。

驱动程序来获取软硬件资源,再将获取的资源交给操作系统,操作系统再对数据进行处理,以达到对软硬件资源的管理。
在这里插入图片描述
比如我们的网卡在日常使用中遇到了故障,那么驱动程序就会把错误信息传递给操作系统,操作系统能自己处理的话就自己处理,处理不了就会将错误信息报告给用户,来告知我们网卡有问题了。

操作系统是如何管理硬件信息呢?

我们再来回到大学这个例子。校长想要收集每个学生的信息,就给各个学院的辅导员发了一张Excel表格上面有要收集的信息,等辅导员收集好信息之后,校长看着眼前的这一大堆表,陷入了沉思,心想这要找一个人还不得给我找累死,正好这个校长之前是个程序员,他就想着把这些学生的信息用一个结构体保存起来,再加上一个结构体指针把这些学生一个个用链表链接起来,解释代码如下:

struct student
{char 学号[];char 姓名[];char 班级[];char 手机号[];int 身高;................struct student* next;
};

通过结构体把每个学生的属性信息保存起来,再通过链表将每个学生链接起来。
在这里插入图片描述
这样保存成链表,就可以把对学生信息的管理,转换成对链表的增删查改。
假如我们学校要选举行运动会,校长要在全校学生中找一个身高最高的,有了链表就可以将这个问题转换为,遍历这个链表找到身高属性最高的那个节点,就可以查看到这个人的所有信息。
那么有了链表,校长就只需要把学生链表管理好就可以了,再也不用对着Excel表格疯狂查找了。
这样我们就成功的将 对学生的管理 转换成为了 对链表的增删查改!

这里我们小小总结一下:校长在列举学生信息的过程叫做描述的过程,而把每个学生的结构体链接起来的过程叫做组织的过程。这样子我们就可以得到对数据的管理的过程分为两个步骤:

  1. 先描述:用struct结构体保存属性信息
  2. 再组织:用结构体指针将结构体对象链接起来。

在操作系统中也一样,我们需要定义一个结构体,结构体里面存储硬件设备的各种属性比如名称,设备状态。设备容量等等,这样一来一个结构体对象就代表一个硬件设备,接下来再用各种结构体指针将这些结构体对象链接起来,对这些设备链表进行管理。以至此,在操作系统中,管理任何对象,最终都可以转换成为对某种数据结构的增删查改!

🍀小结🍀

今天我们学习了"Linux操作系统是如何进行管理的"相信大家看完有一定的收获。种一棵树的最好时间是十年前,其次是现在! 把握好当下,合理利用时间努力奋斗,相信大家一定会实现自己的目标!加油!创作不易,辛苦各位小伙伴们动动小手,三连一波💕💕~~~,本文中也有不足之处,欢迎各位随时私信点评指正!
在这里插入图片描述

相关文章:

【Linux旅行记】探究操作系统是如何进行管理的!

文章目录 什么是操作系统?操作系统概念操作系统的目的底层硬件驱动程序操作系统理解系统调用接口 操作系统是如何进行管理的?什么是管理?操作系统是如何管理硬件信息呢? 🍀小结🍀 🎉博客主页&am…...

【Linux C小技巧】零长度数组的使用

本期主题: 讲清Linux C的零长度数组使用,内容包括: 零长度数组是什么原理为什么要使用零长度数组与指针的差异 往期链接: 数据结构系列——先进先出队列queue数据结构系列——栈 stackLinux内核链表 目录 0.前言1.零长度数组原理…...

github 网页显示不全?

问题 解决 1、检查网页,打开 network,重新刷新 github 网页 2、查看无法加载的资源(如 css 文件) 3、查看域名地址 https://tool.chinaz.com/dns/,github.githubassets.com(检查网页元素,点击无…...

寄存器介绍

目录 寄存器的概念 寄存器工作原理 寄存器的状态 查看寄存器信息 寄存器复位 大空间寄存器复位 寄存器的概念 寄存器是计算机中一种临时存储数据的硬件设备,通常是高速缓存的一部分,用于存储、读取和操作计算机内部的数据。它们是计算机中最快的存…...

基于CNN-LSTM的时序预测MATLAB实战

一、算法原理 1.1 CNN原理 卷积神经网络具有局部连接、权值共享和空间相关等特性。卷积神经网络结构包含卷积层、激活层和池化层。 (a)二维卷积层将滑动卷积滤波器应用于输入。该层通过沿输入垂直和水平方向 移动滤波器对输入进行卷积,并计…...

MySQL高可用九种方案

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址[1] 参考视频[2] MMM 方案(单主) MySQL 高可用方案之 MMM(Multi-Master Replication Manager&#x…...

react 通过ref 获取对应 dom 的位置信息

需求: 在点击某个dom 元素的时候滚动条要同步滚动 进程: 获取ref 打印,打印出来是一个dom 元素,看不到有什么方法查找 dom 属性信息找到了两个参数,offsetLeft:返回元素的水平偏移位置。 offsetTop&…...

SpringSecurity学习 - 认证和授权

一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。 一般Web应用的需要进行认证和授权。 认证:验证当前访问系统的是不是本系统的用户,并且要…...

JDK jps命令复习

之前写过jdk命令工具的博文,下面复习jps命令; jps 是 Java Process Status Tool 的简称,它的作用是为了列出所有正在运行中的 Java 虚拟机进程和相关信息; jps 命令参数 -q 只输出进程 ID,省略主类的名称 -m 输出虚拟机进程启动时传递…...

Android 13.0 屏蔽Launcher3桌面app图标的长按功能

1.概述 在13.0的产品定制化开发中,系统默认的Launcher3在workspace 第二屏通常都会显示app列表 点击进入app 列表页,长按app的icon图标会弹出 应用信息 弹窗 等信息,而产品的开发需要,不需要弹出这些信息,所以要求去掉app的icon图标的长按功能 2.屏蔽Launcher3桌面app图…...

软考和PMP哪个含金量更高?

软考中,能和pmp一起来比较的是软考高项,软考高级信息系统项目管理师,和PMP的共同点,基本来说都是项目管理类的证书。本质也都是适用于项目经理岗位的证书,软考高项中大部分考试内容是PMPIT技术两部分,其中项…...

第一章:最新版零基础学习 PYTHON 教程(第三节 - 下载并安装Python最新版本)

在这里,我们将讨论如何获得与在 Windows/Linux/mac OS 上安装 Python 相关的所有问题的答案。Python由Guido van Rossum于20世纪90年代初开发,最新版本为3.11,我们可以简称为Python3。 如何下载并安装Python? 要了解如何安装 P…...

Spring 中三种 BeanName 生成器!

无论我们是通过 XML 文件,还是 Java 代码,亦或是包扫描的方式去注册 Bean,都可以不设置 BeanName,而 Spring 均会为之提供默认的 beanName,今天我们就来看看 Spring 中三种处理不同情况的 beanName 生成器。 1. BeanN…...

Go基础-文件、字符

文件创建 导入“os”包,创建文件,读写文件的函数都在改包。 指定创建的文件存放路径以及文件名。 执行Create( )函数,进行文件创建。 关闭文件。 package mainimport ("fmt""os" )func main() {//创建文件,…...

启动YOLO进行图片物体识别

查看官方文档YOLO: Real-Time Object Detection 这些是一些模型的对比,显示了YOLO的优势,继续往下面看 CoCoData set 是一个数据库,用来训练模型,这里面有丰富的物体检测,分割数据集,图像经过了精确的segm…...

BMS电池管理系统的蓝牙芯片 国产高性能 低功耗蓝牙Soc芯片PHY6222

电池管理系统是对电池进行监控与控制的系统,将采集的电池信息实时反馈给用户,同时根据采集的信息调节参数,充分发挥电池的性能。但是,前技术中,在管理多个电池时,需要人员现场调试与设置,导致其…...

肖sir__mysql之三表__008

mysql之三表 create table student( stu_no int, stu_name varchar(10), sex char(1), age int(3), edit varchar(20) ) DEFAULT charsetutf8; insert into student values (1,‘wang’,‘男’,21,‘hello’), (2,‘小明’,‘女’,22,‘haha2’), (3,‘hu’,‘女’,23,‘haha3…...

【Linux】常用工具(上)

Linux 常用工具 一、Linux 软件包管理器 yum1. 软件包2. 查看软件包3. 安装/卸载软件4. yum 其他指令的功能 二、Linux 编辑器 - vim 使用1. vim 的基本概念2. vim 的基本操作(1)光标移动(命令模式)(2)光标…...

【kafka】可视化工具KAFKA EAGLE安装分享

目录 准备: 开始: 1.解压 2.环境变量配置 3.生效环境变量配置文件 3.修改配置文件 1.修改zookeeper集群信息 2.修改mysql配置信息 4.启动 5.异常排查 6.页面 创作不易,你的动力是我创作的动力,如果有帮助请关注我&…...

【深度装机】深度U盘装机后黑屏闪光标

装x64的系统 装机版的gho文件太多预装软件了。几年前买的这种无风扇的机器,之前装的ubuntu:装机U盘启动后,先删掉的所有的ubuntu分区。使用了10几年的AOC又肩负使命: 感觉发热还是挺大的。 有人说因为secure boot 打开secure boo…...

【性能测试】JMeter:集合点,同步定时器的应用实例!

一、集合点的定义 在性能测试过程中,为了真实模拟多个用户同时进行操作以度量服务器的处理能力,可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求。 通过插入集合点可以较真实模拟多个用户并发操作。 (注意:虽然通过加入集合点可…...

21天学会C++:Day11----运算符重载

CSDN的uu们&#xff0c;大家好。这里是C入门的第十一讲。 座右铭&#xff1a;前路坎坷&#xff0c;披荆斩棘&#xff0c;扶摇直上。 博客主页&#xff1a; 姬如祎 收录专栏&#xff1a;C专题 目录 1. 知识引入 2. 运算符重载 2.1 operator<() 2.2 operator() 2.3 o…...

面经pc端项目

创建项目 安装脚手架-----创建项目------选择自定义 sass基础语法 https://www.sass.hk/ sass语法有两个:sass(旧) scss(新) 1.scss语法 和less语法类似,支持嵌套,支持变量… scss: $变量名 less: @变量名 $color:orange; .box{width: 400px;height: 400px;borde…...

三步在两台服务器间迁移conda环境

引言&#xff1a; 背景是我现在要跑的实验在一台服务器上跑有点来不及了&#xff0c;需要将conda环境和文件一起迁移到另一台服务器上。文件的迁移可以用scp或者rsync。但是conda虚拟环境的迁移则不行。 步骤&#xff1a; step 1 将当前的虚拟幻境信息写入environment.yml c…...

websocket服务部署在内网,app无法访问

描述&#xff1a;websocket服务部署在内网&#xff08;ws://&#xff09;&#xff0c;app无法访问外网&#xff0c;需要将内网地址映射到外网 解法&#xff1a;通过nginx配置ws代理&#xff0c;部署nginx的服务器连通的外网和内网&#xff0c;通过nginx配置将原有的ws请求转换…...

vs2010对于c++11的支持

不支持 using代替typedef变参模板for each...

OpenCV cv::Mat和QImage互相转换

在使用OpenCV和Qt进行图像处理时&#xff0c;经常需要将cv::Mat和QImage之间进行转换。下面是cv::Mat和QImage之间的相互转换方法&#xff1a; 将cv::Mat转换为QImage&#xff1a; cv::Mat cvImage; // 你的cv::Mat图像// 将cv::Mat转换为QImage QImage qtImage(cvImage.data…...

pgsql 主从搭建

在 PostgreSQL 中&#xff0c;主从复制&#xff08;Master-Slave Replication&#xff09;是一种常见的数据库高可用性和数据备份解决方案。它允许你创建一个主数据库服务器&#xff08;Master&#xff09;&#xff0c;并在一个或多个从数据库服务器&#xff08;Slave&#xff…...

JS中的数值精度问题(二)

一、精度范围&#xff0c;精度最多只能到53个二进制位 JavaScript 能够准确表示的整数范围在-2^53到2^53之间&#xff08;不含两个端点&#xff09;&#xff0c;超过这个范围&#xff0c;无法精确表示这个值。 国际标准IEEE 754规定&#xff0c;有效数字第一位默认总是…...

WPF——Control与Template理解

文章目录 一、前言二、控件三、模板3.1 DataTemplate3.2 ControlTemplate3.3 ContentPresenter 四、结语 一、前言 最近又翻看了下刘铁猛的《深入浅出WPF》&#xff0c;发现对模板章节中的部分内容有了更深的体会&#xff0c;所以写篇文扯扯。 文章标题是Control与Template&a…...