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

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

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

相关文章

数据结构——线性表之顺序表

目录 一.线性表 二.顺序表实现 2.1 概念及结构 2.2 动态顺序表 2.2.1 初始化与销毁函数 2.2.2 打印函数 2.2.3 尾插函数 2.2.4 尾删函数 2.2.5 扩容函数 2.2.6 头插函数 2.2.7 头删函数 2.2.8 任意位置插入函数 2.2.9 查找函数 2.2.10 任意位置删除函数 2.2.11 修…

基于Java体育馆管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

RFID车辆自动化称重管理

应用背景 随着物流和交通管理的发展,车辆称重成为了不可忽视的环节,传统的车辆称重管理方式存在诸多问题,如人工操作繁琐、数据准确性低、容易出现作弊等,为了提高车辆称重管理的效率和准确性,RFID技术被引入到车辆称…

使用Langchain+GPT+向量数据库chromadb 来创建文档对话机器人

使用LangchainGPT向量数据库chromadb 来创建文档对话机器人 一.效果图如下: 二.安装包 pip install langchainpip install chromadbpip install unstructuredpip install jieba三.代码如下 #!/usr/bin/python # -*- coding: UTF-8 -*-import os # 导入os模块&…

为什么2022年秋招嵌入式开发岗位薪资大涨?

今天看到一个网友讨论的问题,其实这个问题也很简答。从嵌入式本身优势来说,首先是因为该行业人才人才需求大,据权威统计机构统计在所有软件开发类人才的需求中,对嵌入式工程师的需求达到全部需求量的60%~80%,并且每年以…

数据结构(C语言)——双链表

有了单链表的编写经验&#xff0c;双链表变得格外容易。点击看前一篇-单链表 下面是代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define E int typedef struct node {E element;struct node* pre;struct node* next; }node; void initialise(node* h…

JavaScript中的`async`和`await`关键字的作用

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ async关键字⭐ await 关键字3. 错误处理 ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对We…

selenium中ActionChains方法详细讲解

前言 本文将介绍Selenium中的ActionChains类及其使用方法&#xff0c;帮助您模拟用户在网页上的鼠标和键盘操作。了解ActionChains的常用方法和示例代码&#xff0c;可轻松实现移动鼠标、点击元素、拖拽元素等操作。通过本文的学习&#xff0c;您能更好地应用ActionChains解决自…

nginx中sent_timeout属性使用注意事项

send_timeout使用注意事项 send_timeout:指客户端向服务器发送请求并且等待服务器返回数据的时间&#xff0c;超过这个时间链接就断开。如果咱们返回的数据复杂&#xff0c;很耗时&#xff0c;就将该值设置大些。注意该时间指准备过程&#xff0c;不是传输过程&#xff08;下载…

Python基础指令(上)

Python基础指令上 常量和表达式变量和类型1. 什么是变量2. 变量的语法2.1 定义变量2.2 使用变量 3. 变量的类型4. 为什么要有这么多类型5. 动态类型特性 注释输入输出1. 程序与用户的交互2. 通过控制台输出3. 通过控制台输入 运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. …

Linux文件出现“M-oM-;M-?” ^M 等情况

1、当在编辑linux系统的文件时&#xff0c;会出现如下情况&#xff1a; 解决方法&#xff1a;单个文件可以使用vim 进行修改&#xff0c;shift :&#xff0c; 然后 set nobomb 2、当文件出现每一行末尾^M的情况&#xff1a; 解决方法&#xff1a;使用vi的替换功能。启动vi&am…

vue使用swiper轮播组件开启loop模式点击不了问题处理

1.原本在这里的点击事件换成 :data-href"func_str(item)" 2.在methods里面写好方法 func_str(item){ return JSON.stringify(item); } 3.在原本的调用调用轮播图方法里面加入点击事件 onClick:function(swiper){ var item JSON.parse(swiper.clickedSlide.attrib…

随手笔记(四十五)——idea git冲突

图片为引用&#xff0c;在一次导入项目至gitee的过程中&#xff0c;不知道为什么报了403&#xff0c;很奇怪的一个错误&#xff0c;网上很多的答案大概分成两种。 第一种是最多的&#xff0c;直接找到windows凭据删掉 很抱歉的告诉各位&#xff0c;你们很多人到这里就已经解…

相机HAL

相机HAL 1、概览实现 HAL2、相机 HAL2.1 AIDL 相机 HAL2.2 相机 HAL3 功能2.3 Camera HAL1 概览 相机 HAL 相机 实现 HAL android12-release 1、概览实现 HAL HAL 位于 相机驱动程序 和 更高级别的 Android 框架 之间&#xff0c;它定义您必须实现的接口&#xff0c;以便应用…

php高级 TP+Redis实现发布订阅和消息推送案例实战

Redis 的发布-订阅模型是一种消息通信模式&#xff0c;它允许客户端之间通过特定的频道进行通信。在这种模型中&#xff0c;有些客户端负责发布消息&#xff08;发布者&#xff09;&#xff0c;而其他客户端则订阅它们感兴趣的频道并接收这些消息&#xff08;订阅者&#xff09…

机器学习入门与实践:从原理到代码

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 在本文中&#xff0c;我…

fork的一些打印题

1. 代码&#xff1a; #include<sys/types.h> #include<stdio.h>int main() {int remaining 4;int child_pid;while(remaining > 0){child_pid fork();if(child_pid 0) break;remaining--;}printf("P");wait();return 0; }结果&#xff1a; &…

Solidity 小白教程:21. 调用其他合约

Solidity 小白教程&#xff1a;21. 调用其他合约 调用已部署合约 开发者写智能合约来调用其他合约&#xff0c;这让以太坊网络上的程序可以复用&#xff0c;从而建立繁荣的生态。很多web3项目依赖于调用其他合约&#xff0c;比如收益农场&#xff08;yield farming&#xff0…

企业架构LNMP学习笔记48

数据结构类型操作&#xff1a; 数据结构&#xff1a;存储数据的方式 数据类型 算法&#xff1a;取数据的方式&#xff0c;代码就把数据进行组合&#xff0c;计算、存储、取出。 排序算法&#xff1a;冒泡排序、堆排序 二分。 key&#xff1a; key的命名规则不同于一般语言…

实时云渲染技术,元宇宙应用的核心之一

1. 元宇宙介绍 元宇宙&#xff08;Metaverse&#xff09;是一种电子世界的概念&#xff0c;它是一个由计算机生成的虚拟世界&#xff0c;允许用户在其中进行交互和体验虚拟生活。元宇宙的设计目的是创造一个与现实世界相似的体验&#xff0c;用户可以通过计算机图形或其他技术…