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

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

        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.rhkb.cn/news/377677.html

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

相关文章

Databend 开源周报第 153 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend。 支持必须更改密码…

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)

​​​​​​​ 目录 一、引言 二、自动语音识别(automatic-speech-recognition) 2.1 概述 2.2 技术原理 2.2.1 whisper模型 2.2.2 Wav2vec 2.0模型 2.3 pipeline参数 2.3.1 pipeline对象实例化参数​​​​​​​ 2.3.2 pipeline对象使用参数…

JavaScript 匿名函数

https://andi.cn/page/621568.html

css的三大特性

一、层叠性, 选择器的优先级

Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器

章节内容 上节我们完成了: ZNode的基本介绍ZNode节点类型的介绍事务ID的介绍ZNode实机测试效果 背景介绍 这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 VM 虚拟机上搭建过一次&#xff…

FlinkErr:org/apache/hadoop/hive/ql/parse/SemanticException

在flink项目中跑 上面这段代码出现如下这个异常&#xff0c; java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…

ORB_SLAM2 ORBSLAM2 Ubuntu18.04 ROS Melodic虚拟机镜像 下载

下图为build.sh和build_ros.sh的编译结果&#xff1a; 下面的视频是slam测试&#xff1a; orbslam2_test 下载地址&#xff08;付费资料&#xff0c;不能接受请勿浪费时间下载&#xff09;&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1BCl_egUbNjM4nHc4DX4hkw?pwd…

为什么渲染农场渲染的是帧,而不是视频?

在3D动画产业的壮阔画卷中&#xff0c;渲染农场作为幕后英雄&#xff0c;以其庞大的计算能力支撑起无数视觉奇观的诞生。这些由高性能计算机集群构成的系统&#xff0c;通过独特的逐帧渲染策略&#xff0c;解锁了单机难以企及的创作自由与效率。本文将深入剖析这一策略背后的逻…

FUSE使用总结

1.FUSE简介 由于近期一个项目用到FUSE实现一个文件系统&#xff0c;所以有一些使用FUSE的经验。现总结如下&#xff1a; FUSE&#xff08;Filesystem in Userspace&#xff09;是一个开源项目&#xff0c;它可以为用户提供编写用户态文件系统的接口。 运行架构如下&#xff1…

产品经理的AI大模型学习之旅

随着人工智能技术的飞速发展&#xff0c;大模型&#xff08;Large Language Models, LLMs&#xff09;正逐渐成为产品经理&#xff08;Product Manager, PM&#xff09;在产品开发过程中不可或缺的工具。大模型&#xff0c;尤其是语言模型&#xff0c;能够处理和理解自然语言&a…

GB35114控制信令认证流程

GB35114控制信令认证说明&#xff1a; 注册成功后,信令发送方与信令接收方进行交互时,采用基于带密钥的杂凑方式保障信令来源安 全&#xff61;对除REGISTER消息以外的消息做带密钥的杂凑&#xff61;启用Date字段,扩展信令消息头域,在头域中 增加 Note 字 段 (值 为 Digest…

【Python爬虫教程】第7篇-requests模块的cookies保存和使用

文章目录 为什么要保存cookiesrequests.utils工具类保存cookies到本地文件从本地文件解析cookies使用使用实践 为什么要保存cookies 保存cookies是避免每次都登录获取权限&#xff0c;一遍权限是有过期时间的&#xff0c;不需要每次重复登录&#xff0c;可以将cookies保存起来…

【Web服务与Web应用开发】【C#】VS2019 创建ASP.NET Web应用程序,以使用WCF服务

目录 0.简介 1.环境 2.知识点 3.详细过程 1&#xff09;创建空项目 2&#xff09;添加Web表单 3&#xff09;使用Web表单的GUI设计 4&#xff09;添加服务引用 5&#xff09;在Web的button函数中调用服务&#xff0c;获取PI值 6&#xff09;测试 0.简介 本文属于一个…

【数据集处理工具】根据COCO数据集的json标注文件实现训练与图像的文件划分

根据COCO数据集的json标注文件实现训练与图像的文件划分 一、适用场景&#xff1a;二、COCO数据集简介&#xff1a;三、场景细化&#xff1a;四、代码优势&#xff1a;五、代码 一、适用场景&#xff1a; 适用于一个常见的计算机视觉项目应用场景&#xff0c;特别是当涉及到使…

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

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

数据结构——单链表详解(超详细)(1)

前言&#xff1a; 小编在近日学习了单链表的知识&#xff0c;为了加强记忆&#xff0c;于是诞生了这一篇文章&#xff0c;单链表是数据结构比较重要的知识&#xff0c;读者朋友们一定要去好好的学习&#xff01;这个可以说是比顺序表更好用的线性表&#xff0c;下面废话不多说&…

AV1 编码标准帧间预测技术概述

AV1 编码标准帧间预测 AV1&#xff08;AOMedia Video1&#xff09;是一种开源的视频编码格式&#xff0c;它在帧间预测技术上做出了显著的改进和扩展&#xff0c;以提供比现有标准更高的压缩效率和更好的视频质量。以下是AV1帧间预测技术的几个关键点&#xff1a; 参考帧扩展&a…

结合实体类型信息(2)——基于本体的知识图谱补全深度学习方法

1 引言 1.1 问题 目前KGC和KGE提案的两个主要缺点是:(1)它们没有利用本体信息;(二)对训练时未见的事实和新鲜事物不能预测的。 1.2 解决方案 一种新的知识图嵌入初始化方法。 1.3 结合的信息 知识库中的实体向量表示&#xff0b;编码后的本体信息——>增强 KGC 2基…

文件安全传输系统,如何保障信创环境下数据的安全传输?

文件安全传输系统是一套旨在保护数据在传输过程中的安全性和完整性的技术或解决方案。通常包括以下几个关键组件&#xff1a; 加密&#xff1a;使用强加密算法来确保文件在传输过程中不被未授权访问。 身份验证&#xff1a;确保只有授权用户才能访问或传输文件。 完整性校验…

RFID涉密载体管控系统|DW-S402功能介绍

文件载体管控系统DW-S402是用于对各种载体进行有效管理的智能柜&#xff08;智能管理系统&#xff09;&#xff0c;实现对载体的智能化、规范化、标准化管理&#xff0c;广泛应用于保密、机要单位以及企事业单位等有载体保管需求的行业。 区域监控管理 主要是通过在需要监控的…