linux进程周边知识——内核对硬件的管理——计算机世界的管理

news2024/9/22 2:11:46

        前言:本节主要讲解内核也就是操作系统对于硬件的管理, 本节内容同样为进程的周边知识。 主要是关于软件方面, 和我的上一篇——冯诺依曼体系结构可以说是兄弟文章, 这篇文章主要是关于硬件方面。 两篇文章都是为学习进程做准备。但不能说本篇文章内容不重要, 本篇文章内容不管是对于理解整个计算机世界, 还是接下来理解进程, 都有重要的作用。

        ps:本节内容适合了解一些冯诺依曼体系的友友进行观看。

目录

操作系统的概念

什么是操作系统的管理

为什么要进行管理

如何进行软硬件管理

库函数


操作系统的概念

        内核:内核主要进行进程管理、内存管理、驱动管理、文件管理

        其他程序: 例如语言库、 shell外壳。

这些合起来叫做宏观的操作系统。 (内核加上操作系统配套的软件)

狭义上就是内核。

什么是操作系统的管理

        在我们的电脑上, 我们应用qq和微信, 或者游戏等软件。那么请问, qq或者微信, 为什么能够被打开, 为什么操作系统要跑qq或者微信。这个是由操作系统控制的。 

        为了能够更好的使用冯诺依曼结构, 更好地统筹里面的硬件, 必须要有人对硬件或者软件进行统筹, 而操作系统就是跟这个的。 

        所以, 由上面两段论述就可以说——操作系统是一款进行管理的软件!操作系统管理硬件, 软件。 为什么能够管理软硬件, 因为操作系统的下层就是驱动器, 是软件, 而驱动器的下层就是硬件。  所以, 操作系统向下管理, 本质上就是管理软硬件。

为什么要进行管理

计算机的层状结构, 是由上图的层状结构构成的。 

        最底层的就是上层的底层硬件, 这些硬件是根据冯诺依曼体系结构, 由总线串连起来的。 这些硬件之所以能够被软件去访问, 都是因为这些硬件上面有一层驱动器——这些驱动器也是软件。 

        这些驱动器是和硬件打交道的一些软件。 他们能够让硬件动起来, 至于如何动, 需要让更上层的驱动器提出需求。 

        所以, 那么为什么要有操作系统?

        我们可以思考这个问题:如果我们买完笔记本回来没有操作系统, 那么就只有一堆硬件,用户根本没有办法使用计算机。

        所以第一个理由——操作系统帮助用户管理好下层软硬件资源。 

        如果一个电脑, 经常用着用着就蓝屏, 如果这个电脑的信息容易被盗取, 或者游戏玩着非常卡。 那么很显然, 这样的操作系统用户就不愿意用, 要知道, 计算机是一个工具, 他是为了给用户提供服务的。 所以, 操作系统就是要给用户提供良好的(稳定, 高效, 安全)的运行环境。 

        所以, 即: 操作系统通过管理软硬件资源——手段

                            为用户提供良好的运行环境——目的(这里的用户可以是普通用户, 也可以是程序员)

        那么再来考虑另一个问题: 操作系统里面会有各种数据, 可是, 操作系统不相信任何用户!这是因为操作系统为了保证自己的数据安全, 为了保证给用户提供服务, 操作系统以接口的方式给用户提供调用的入口, 来获取操作系统内部的数据。 也就是说, 如果用户想要获取系统内部的数据, 就要使用相关的系统接口访问操作系统内部的数据。 

        接口是操作系统提供的用c实现的, 自己内部的函数调用——系统调用。 

        所有的访问操作系统的行为, 都只能通过系统调用完成!

        系统调用可以对用户提供的参数进行审核, 又因为系统接口是操作系统内部的接口, 所以不存在恶意修改的问题, 所以操作系统就在既保证自己安全的情况下, 又为上层提供服务, 有了这些系统调用接口, 就有人在这些系统调用接口上, 实现各种各样的软件了。 

        任何一门语言, 在访问底层硬件的时候, 都要经过操作系统, 都要经过系统调用。 

        操作系统是世界上少有不变的东西, 语言可以变, 但是操作系统永远不变。 我们把这种基于系统接口之上的开发, 叫做系统编程。 

如何进行软硬件管理

        我们想这么一个例子, 就比如在大学中, 有校长, 有辅导员, 有学生。 其中, 校长就是管理者, 学生就是被管理者。 辅导员是什么暂且不谈。 那么, 校长对我们进行管理的时候, 需要见到我们吗?我们平时见不到校长, 为什么校长还能把我们管理的很好呢? 因为校长平时只需要知道我们的个人信息, 知道我们有没有犯纪律, 知道我们有什么奖项。 他就能对我们进行奖惩或者奖励。由此可见——

        1、管理者和被管理者是不需要见面的。

        2、管理者在不见被管理者的情况下, 如何做好的管理呢? ——只要能够得到被管理者的管理信息, 就可以在未来进行决策。 ——管理的本质:是通过对数据的管理, 达到对人的管理。 

        3、那么, 管理者和被管理者都不见面, 管理者又是如何获得被管理者的数据的呢?

        那么我们就要考虑一个问题, 既然在大学中, 校长是管理者, 学生是被管理者。 那么辅导员的身份是什么呢? 

        想一想我们生活中就两件事——决策与执行。 比如说我们今天放假, 现在你很无聊, 就想打一局王者荣耀还是歇一会写作业?你想了想, 觉得还是先打一把王者荣耀——这就是做决策, 然后做完决策, 你就开始打开游戏玩了——这是执行。 

        那么我们知道校长更偏向于做决策, 那么执行是谁来做呢?答案就是辅导员。 辅导员不是决策者, 他是执行者。

        那么就是说, 对于校长, 学生, 辅导员。 他们的关系是这样的:

        那么对于操作系统, 它是主要的决策者。 但是硬件那么多, 它是如何对某个硬件进行管理的呢?

        那么我们还是使用上面的校长的例子进行解释: 其实对于校长来说, 每一个学生都是类似的。每一个学生都有自己的学号、姓名、性别、班级、家庭住址等等。 那么, 一般的校长可能会使用excel表格, 弄成下面的一个表格:        

        然后, 校长就会让辅导员们以这个表格的形式, 去获取学生的信息——其中, 校长将学生的属性罗列出来, 这个过程, 就叫做描述的过程。 

        但是, 今天校长变了一个方法, 他不用excel表格了, 他自己创建了一个结构体。 这个结构体里面定义了学号, 性别, 班级, 住址等等。 如下:

        那么, 原本校长要保存全学校学生的信息需要建立一个excel表格。 但是现在就不需要了, 校长只需要创建一个学生链表, 就可以保存下全校学生的信息。 

        在上面这个过程中, 创建结构体就是描述的过程。 

        而我们保存学生的信息, 保存一个学生的信息, 就是创建一个学生的对象。 并且使用对应学生的信息初始化这个对象。 当我们创建一个又一个对象, 比如创建了学生1对象, 学生2对象, 学生3,4对象。 那么我们就可以使用对象里面链表的指针将这些对象串联起来, 所以, 这些学生对象都会被连接起来,那么校长就能获得一个学生基本信息的链式结构

        至此, 校长就不需要再使用人工管理excel表格了——只需要管理好链表结构就可以了!

        那么, 校长就成功地将对学生地管理工作, 转化为了对链表的增删查改

        以后校长想要对学生进行什么样的处理, 只需要使用相应的链表接口就可以了。比如说想要查找全体学生中分数最高的学生, 或者分数最低的学生等等。那么, 以上校长将一个个学生对象创建,并且连接成链表, 这个过程, 就叫做组织

        对于上面的整个逻辑也就是说:对于校长来说, 想要获取学生信息, 但是每个学生的情况不太一样, 很繁杂。 所以他就将学生信息描述成了一个个属性,让辅导员去获取每个学生的属性信息。然后绘制成excel表格, 但是全校学生很多。人工查找excel很慢,校长就利用属性, 创建一个结构体, 描述了一个学生。 然后将每个学生的信息放到一个结构体对象里面保存起来, 并且将这些对象组织起来, 成为一个链表。 

        那么我们回到操作系统, 对于操作系统来说, 它是由c语言写的, 那么操作系统要描述一个对象, 它只能使用结构体来描述。 

        所以在操作系统当中, 他管理软硬件资源, 一定和上面校长使用的链表管理的思路是一样的——我们把这种思路, 叫做先描述, 再组织。 (在操作系统中, 管理任何对象, 最终都可以转化为对某种数据结构的增删查改。)

        这里有个例子进行辅助理解, 是关于c++的, 没学过c++的容器的友友可以自行跳过——就是我们在学习c++的时候, 是不是先学习c++的类, 然后才开始学习的容器。 对于c++的类来说, 它不是就是c语言的结构体吗?也就是说, 它不就是一种描述方式吗。 然后容器不就是将类组织的方式吗? 所以对于c++来说, 类就是描述方式, stl容器就是组织方式。 即——c++天然就是让我们先描述, 再组织的。 

        为什么, 因为任何一个程序, 它或多或少, 都要进行一些管理工作。 有管理工作, 那么就要对数据进行描述, 进行组织。 不光c++, 任何一门语言, 他都要提供描述, 组织的方式, 这是由整个计算机世界所决定的。 整个计算机世界, 都是围绕上面六个字展开——先描述, 再组织(计算机只能这么做,这就是建模的过程)。 语言提供相应的方式, 我们未来写的程序, 永远都会描述数据, 然后对数据进行管理。 

        操作系统是一个管理软硬件资源的软件, 他就是建立了底层硬件设备的属性的结构体。 然后根据这些属性创建相应的结构体对象。 通过管理这些结构体对象, 来达到管理硬件的目的。 那么就是说, 操作系统内部, 一定存在了大量的数据结构!!

库函数

        知道了操作系统如何管理硬件之后, 我们还要知道,对于库函数, 它是如何调用底层硬件的?

        那么假如有两个学校的校长, 一个A学校, 一个B学校。 那么假如A学校有一个算法很厉害的学生, 但是B学校没有。 有一天, B学校的校长想要让A学校这名学生代替他们学校出去比赛, 那么请问, 这个时候, B学校的校长应该找A学校的校长还是这名学生?

        很明显, 应该找A学校的校长, 因为这名学生是被校长管理起来的, 他要服从管理。 那么就不能直接访问到他。 所以, B学校校长就必须先和A学校校长协商。 

        那么, 我们库函数也是一样, 他们如何调用底层硬件?比如说printf, 它如何将数据打印到显示器上, 显示器是硬件, 被操作系统管理起来, 那么printf函数就不能直接访问到显示器, 而是要先沟通操作系统, 然后才能访问底层硬件。 也就是说, 库函数想要访问底层硬件, 那么就要贯穿整个操作系统。 

         而沟通操作系统, 我们知道, 操作系统不相信任何人, 他只是开了一扇窗——系统调用。那么就是说, 我们的库函数想要调用底层硬件, 就势必要封装系统调用。 也就是说, 我们的C/C++标准库的库函数与系统调用, 他们之间的关系就是调用与被调用的关系。 

-------------以上就是本节的全部内容, 下面是本人的笔记

        

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

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

相关文章

论文翻译 | LEAST-TO-MOST: 从最少到最多的提示使大型语言模型中的复杂推理成为可能

摘要 思维链提示(Chain-of-thought prompting)在多种自然语言推理任务上展现了卓越的性能。然而,在需要解决的问题比提示中展示的示例更难的任务上,它的表现往往不佳。为了克服从简单到困难的泛化挑战,我们提出了一种新…

Spring系统学习 - Spring事务的概念

提到事务,这个我们应该比较熟悉了,在数据库学习的过程中,我们或多或少接触过了事务,当然你可能没有用到,也可能用到了,这篇博客我们将围绕Spring的相关事务的概念进行,了解Spring中的事务和事务…

【开源 Mac 工具推荐之 1】gibMacOS:方便快捷的 macOS 完整包下载 Shell 工具

简介 gibMacOS 是由 GitHub 开发者 corpnewt 编写的一款 Shell 工具。它采用 Python 编程语言,可以让用户打开后在纯文本页面中轻松选择并下载来源于 Apple 官方的 macOS 完整安装包。 Repo 地址:https://github.com/corpnewt/gibMacOS (其…

《机器学习中的数学》:探索算法背后的数学奥秘

在当今这个数据驱动的时代,机器学习已经成为科技发展的关键力量。然而,很多人可能不知道,机器学习的高效运作离不开背后的数学基础。今天,我要向大家推荐一本关于机器学习数学基础的书籍——《机器学习中的数学》。这本书不仅详细…

【Python】下载与安装

目录 一、 下载安装Python 1. 配置环境变量 2. 检查是否配置成功 一、 下载安装Python 在我上传的资源可以免费下载!!! https://download.csdn.net/download/m0_67830223/89536665?spm1001.2014.3001.5501https://download.csdn.net/dow…

cpp随笔——如何实现一个简单的进程守护模块

前言 在前面我们已经实现过调度模块和进程的心跳模块了,而今天我们要讲的是作为服务端后台服务程序运行三个通用模块的最后一项:进程的守护模块,在开始讲解进程的守护模块之前我们首先来看究竟什么是进程的守护模块: 守护模块(有…

torch之从.datasets.CIFAR10解压出训练与测试图片 (附带网盘链接)

前言 从官网上下载的是长这个样子的 想看图片,咋办咧,看下面代码 import torch import torchvision import numpy as np import os import cv2 batch_size 50transform_predict torchvision.transforms.Compose([torchvision.transforms.ToTensor(),…

Microsoft Graph 是什么?怎么用?

Microsoft Graph 是一个统一的 API 端点,用于访问 Microsoft 云服务中的数据和功能,包括但不限于 Microsoft 365、Dynamics 365、Windows 10、Azure Active Directory (Azure AD) 和其他 Microsoft 服务。通过 Microsoft Graph,开发者和企业可…

钡铼高性能Modbus转EtherCAT网关BL123

随着工业4.0和物联网(IoT)概念的兴起,传统工厂正经历着一场深刻的变革,新型的网络架构,如EtherCAT,因其高速度、高精度及开放性,正在逐渐取代传统的现场总线技术。然而,这并不意味着现有基于旧协议&#xf…

引用与指针的关系

C中指针和引⽤就像两个性格迥异的亲兄弟,指针是哥哥,引⽤是弟弟,在实践中他们相辅相成,功能有重叠性,但是各有⾃⼰的特点,互相不可替代。 • 语法概念上引⽤是⼀个变量的取别名不开空间,指针是…

【高中数学/指数、对数】已知a=e^0.03-1,b=3/103,c=ln1.03,则a、b、c的大小关系为?

【问题】 已知ae^0.03-1,b3/103,cln1.03,则a、b、c的大小关系为? 【解答】 这个问题比较令人挠头,其背后考察的其实是对ye^x-1,yx/1x,yln(1x)的图线的高度、位置、斜率的掌握程度。 首先我们可以将三个数变成函数式: ae^0.03-1,b0.03/10…

医日健集团技术力量体现测试的背后

医日健集团覆盖式更新 科技日新月异的时代,医日健集团始终走在行业的前列。近日,医日健集团外勤技术人员全面对市场点位投放的数智药房进行了新系统升级和机器测试,这是医日健对于科技创新的最新尝试。 以客户体验为核心优化新体验 医日健集团…

window下tqdm进度条

原代码是linux下运行&#xff0c;修改后可在window下运行。 #ifndef TQDM_H #define TQDM_H#include <chrono> #include <ctime> #include <numeric> #include <ios> #include <string> #include <cstdlib> #include <iostream> #i…

帕金森病友,你们需要的维生素秘籍来啦!✨

哈喽&#xff0c;小伙伴们~ &#x1f44b; 今天来跟大家聊聊帕金森病友们应该补充哪些维生素的小知识。&#x1f4a1; 帕金森病虽然是一种神经系统疾病&#xff0c;但合理的营养补充也能在一定程度上帮助缓解病情哦&#xff01;&#x1f4aa; &#x1f34e; 维生素C&#xff1a…

初步探究Rust生态与图形界面编程

引言 Rust作为一种现代的、安全的系统编程语言&#xff0c;自2010年问世以来&#xff0c;逐渐在开发社区中崭露头角。它的内存安全保证、并发处理能力、以及无需垃圾回收机制的高性能特性&#xff0c;使得它成为了开发系统工具、网络服务、以及嵌入式系统的热门选择。然而&…

通过maven基于springboot项目构建脚手架archetype

1、引入脚手架构建的插件依赖 <!--构建脚手架archetype--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>3.2.1</version></plugin><plugin><…

Go语言---网络编程基础知识

网络协议 从应用的角度出发&#xff0c;协议可理解为“规则”&#xff0c;是数据传输和数据的解释的规则。 假设&#xff0c;A、B 双方欲传输文件。规定: 第一次&#xff0c;传输文件名&#xff0c;接收方接收到文件名&#xff0c;应答OK 给传输方;第二次&#xff0c;发送文件…

美食菜谱点评小程序

美食菜谱点评小程序 功能介绍 用户注册登录&#xff1a;注册账号&#xff0c;然后使用注册的账号登录。 资讯功能&#xff1a;用户可以任意浏览资讯列表和详细信息。 美食菜谱库&#xff1a;点击所有菜谱菜单&#xff0c;支持查看所有的菜谱信息。 菜谱查询&#xff1a;在菜谱…

网络基础知识--网络硬件设备介绍(含eNSP模拟器命令使用)

华为 eNSP 模拟器安装教程可参考&#xff1a;华为 eNSP 模拟器安装教程&#xff08;内含下载地址&#xff09;_ensp下载-CSDN博客 华为eNSP&#xff08;Enterprise Network Simulation Platform&#xff09;模拟器是一款由华为提供的免费网络仿真平台&#xff0c;主要用于模拟和…

MES实时监控食品加工过程中各环节的安全

在实时监控食品加工过程中各环节的安全风险方面&#xff0c;万界星空科技的MES&#xff08;制造执行系统&#xff09;解决方案发挥了至关重要的作用。以下是具体如何通过MES系统实现实时监控食品加工过程中各环节安全风险的详细阐述&#xff1a; 一、集成传感器与实时监控 MES…