深入理解操作系统Operator System(1)

目录

OS概念

设计OS的目的

OS定位

操作系统对下的结构层次示意图

理解操作系统的"管理"❗❗

"管理"被管理者的数据

怎么获取被管理者的数据

获取被管理者什么"数据"

数据过多&先描述再组织❗

C/C++中的体现

解释OS对硬件的"管理"


OS概念

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

在我们开机的时候,操作系统是启动最早的一款软件。(例如:app的下载卸载,U盘的插入和弹出等都是由操作系统来控制的)

  • 操作系统是一款对软硬件资源管理的软件。

操作系统的又分为广义的和狭义的认识。

  • 广义的认识:操作系统的内核+操作系统的外壳周边程序。
  • 操作系统的内核:对文件,内存,外设的管理
  • 操作系统的外壳周边程序:给用户提供使用操作系统的方式(例如:图形化界面,office)
  • 狭义的认识:只是操作系统的内核。

笼统的理解,操作系统包括:

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

设计OS的目的

为什么要有操作系统❓

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

OS定位

在整个计算机软硬件架构中,操作系统的定位是:

  • 一款纯正的“搞管理”的软件。

如何理解"管理"呢?

下面我们会以学校(校长,辅导员,学生)管理的例子展开详细讲解。

  • 管理是收集被管理对象的数据
  • 描述被管理对象
  • 组织被管理对象

操作系统对下的结构层次示意图

操作系统主要功能是:进程管理,内存管理,文件系统管理,驱动管理(硬件管理)。当然还有许多其他的功能,主要是这几个功能。

  • 谈到"管理",操作系统是如何对硬件管理的呢❓❓

操作系统为了管理硬件,操作系统要能访问到硬件。

  • 如果让操作系统直接和硬件交互,每个硬件的物理特性不一样。每个硬件都是由不同的厂商独立生产和提供的,如果硬件的特性改变了,那么操作系统也要随着改变❓❓
  1. 所以生产硬件的厂商都提供了每个硬件自己的驱动层(每个硬件都有自己的驱动层,可能多个硬件对应一个驱动层)。
  2. 驱动层是一层软件。
  3. 驱动层由生产硬件厂商提供。(可能提供一些协议等)
  4. 驱动层功能:向操作系统提供一些接口。操作系统通过这些驱动层的接口能访问到硬件,对硬件管理。(读取)(极小部分硬件直接由操作系统管理)

【操作系统的向下体系结构的层状结构】 

理解操作系统的"管理"❗❗

我们遇到事情通常分为两步:决策+执行。对于管理者来说,管理者通常大部分事情是决策。

"管理"被管理者的数据

假设一个场景:学校。校长是管理者,学生是被管理者。

❓请问我们见到过校长吗。

当然没有。所以不需要管理者和被管理者直接接触。"管理"是不需要接触的。接触不是目的不是必要的。 

❓目的是什么。校长通过我们的成绩,年纪,籍贯等来管理我们。

所以,目的拿到被管理者的数据。

  • 综上所述:"管理"不必直接接触,"管理"的核心本质是对被管理者的数据做管理。

怎么获取被管理者的数据

 ❓校长需要去拿学生身上的数据,怎么去那呢

  • 直接接触(见面询问)+直接采集数据+决策+执行
  • 不接触+辅导员/班长+表格+间接采集数据+决策+执行

获取被管理者什么"数据"

❓校长关心学生身上的什么数据呢。

  •  校长只关心部分学习相关/个人基本信息的数据。
  • 校长关心的群体落实到个人上是学生。

数据过多&先描述再组织❗

❓一个学校有很多个年级,每个年级有几千人,校长可能要"管理"几万人。这么多的数据如果全部放在表格里面去管理是非常复杂和不方便的。怎么办

【先描述】

  • 虽然被管理者人很多,但是被管理者的数据的属性是一样的,只是值不一样而已
  • 可以把所有的不同数据的相同属性集合到一起
  • 在C语言中,结构体就可以达到这个目的。只要每次怎加一个被管理者,定义一个结构体去填充不同的信息在里面即可。

【再组织】

  • 虽然把多个被管理者的数据用相同的属性(结构体)管理起来了,但是它们都是独立的,一个一个的,校长不可能拿着一堆定义的结构体去管理学生。增删查改这些都是非常不方便的。
  • 我们前面学习过了【数据结构】,数据结构就是把一个一个独立的数据管理起来,让他们之间有联系。
  • 所以可以用链表把独立的数据管理起来。(二叉树/顺序表/栈/队列都可以,只是效率和适应场景不同而已)

校长对学生的管理(日常),变成了对链表的增删查改(计算机语言)。完成了学生的管理工作,计算机建模的过程。

【自动建模的过程=先描述再组织】

  • 先收集数据(接触否)
  • 对被管理对象进行属性级别的描述
  • 对特定的对象按照特定的数据结构组织起来
  • >>>>>>>>对数据机构的增删查改

C/C++中的体现

C中的扫雷/通讯录游戏都可以回忆下:

  • 先描述通讯里人的相同属性(结构体)。
  • 再组织(数组)管理起来,对这些数据进行增删查改。

 C++的语法+STL(容器)

  • C++语言封装继承多态。【封装】就是描述对象。
  • STL(容器)本质就是数据结构,就是组织对象。
  • 把一个一个对象先描述,再组织起来。语言的设计也是按照这个”管理"的思路来的。语言就是直接/间接管理对象(数据)。

综上所述:凡是对特定的对象进行管理,先描述,再组织❗❗

解释OS对硬件的"管理"

Linux内核是用C语言写的一款软件(可执行程序.exe)。操作系统对软件的管理后序博文展开。那操作系统OS是如何管理硬件的❓❓

  • 通过驱动程序读取硬件的属性数据(识别硬件)
  • 先描述:属性信息数据
  • 把硬件的数据信息填充到对应属性里
  • 再组织:在操作系统内部用数据结构组织起来,进行增删查改的管理

操作系统的内部是充满大量的数据结构/算法。

 🙂感谢大家的阅读,若有错误和不足,欢迎指正。后面可能还会有部分补充更新。

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

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

相关文章

RabbitMQ(控制台模拟收发消息与数据隔离)

1.RabbitMQ架构图 publisher:生产者,也就是发送消息的一方 consumer:消费者,也就是消费消息的一方 queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理 exchange&…

获取数据库最新的一条打卡时间数据SQL语句

获取数据库最新的一条打卡时间数据SQL语句 上班表创建SQL语句 CREATE TABLE "PunchIn" ("id" INT NOT NULL,"emp_code" VARCHAR(50) NOT NULL COLLATE Chinese_PRC_CI_AS,"punch_in_time" DATETIME NOT NULL,"status" VAR…

Java 抽象类与方法:实现安全性与代码重用

Java 内部类 简介 在 Java 中,可以嵌套类(即类内部的类),称为内部类。嵌套类的目的是将属于一起的类分组,从而使您的代码更可读和可维护。 访问内部类 要访问内部类,请创建外部类的对象,然后…

c语言-函数-009

2.函数传参: 2.1赋值传递&#xff08;复制传递&#xff09;函数体内部想要使用函数体外部变量值的时候使用复制传递2.2全局变量传递#include <stdio.h>int Num1 100; int Num2 200; int Ret 0;void Add(void) {Ret Num1 Num2;return; }int main(void) {Add();printf…

深度解析速卖通商品详情API:Python实战与高级技术探讨

速卖通商品详情API接口实战&#xff1a;Python代码示例 一、准备工作 在开始之前&#xff0c;请确保你已经完成了以下步骤&#xff1a; 在速卖通开放平台注册账号并创建应用&#xff0c;获取API密钥。阅读速卖通商品详情API接口的文档&#xff0c;了解接口的使用方法和参数要…

什么是物联网?物联网如何工作?

物联网到底是什么&#xff1f; 物联网(Internet of Things&#xff0c;IoT)的概念最早于1999年被提出&#xff0c;官方解释为“万物相连的互联网”&#xff0c;是在互联网基础上延伸和扩展&#xff0c;将各种信息传感设备与网络结合起来而形成的一个巨大网络&#xff0c;可以实…

[SpringCloud] OpenFeign核心架构原理 (一)

Feign的本质: 动态代理 七大核心组件 Feign底层是基于JDK动态代理来的, Feign.builder()最终构造的是一个代理对象, Feign在构建对象的时候会解析方法上的注解和参数, 获取Http请求需要用到基本参数以及和这些参数和方法参数的对应关系。然后发送Http请求, 获取响应, 再根据响…

Python Web开发记录 Day6:MySQL(关系型数据库)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 六、MySQL1、MySQL-概述和引入①MySQL是什么&am…

liunx安装jdk、redis、nginx

jdk安装 下载jdk,解压。 sudo tar -zxvf /usr/local/jdk-8u321-linux-x64.tar.gz -C /usr/local/ 在/etc/profile文件中的&#xff0c;我们只需要编辑一下&#xff0c;在文件的最后加上java变量的有关配置&#xff08;其他内容不要动&#xff09;。 export JAVA_HOME/usr/l…

docker部署aria2-pro

前言 我平时有一些下载视频和一些资源文件的需求&#xff0c;有时候需要离线下载&#xff0c;也要速度比较快的方式 之前我是用家里的玩客云绝育之后不再写盘当下载机用的&#xff0c;但是限制很多 我发现了aria2 这个下载器非常适合我&#xff0c;而有个大佬又在原来的基础…

10 OpenCV 形态学的应用

文章目录 算子形态学提取直线示例 算子 adaptiveThreshold 二值化算子 adaptiveThreshold(src, dstNone,maxValue, adaptiveMethod, thresholdType, blockSize, C, ) /* *src&#xff1a;灰度化的图片 *dst&#xff1a;输出图像&#xff0c;可选 *maxValue&#xff1a;满足条件…

关于程序员如何选择职业赛道

程序员作为一个独具特色的职业群体&#xff0c;面临着诸多挑战和机遇。在选择职业赛道方面&#xff0c;程序员需要考虑自身兴趣、技能、发展前景等因素&#xff0c;以便找到最适合自己的发展路径。本文将从不同角度探讨程序员如何选择职业赛道。 首先&#xff0c;程序员应该认…

C#中对象的相等性与同一性的判断方法总结

C#对象的相等性与同一性 1. 概述与准备1.1 概述1.2 准备 2. Equals(Object)2.1 功能&#xff1a;2.2 实例&#xff1a;2.3 扩展&#xff1a;2.4 重写此方法 3. Equals(Object, Object)3.1 功能3.2 实例 4. ReferenceEquals(Object, Object)4.1 功能4.2 使用场景&#xff1a;4.3…

人工智能+

上上一个风口是互联网&#xff0c;信息分享。 上一个风口是物联网&#xff0c;实现万物互联。 如今再提人工智能&#xff0c;传感器大数据AI算法&#xff0c;尽量地减少人为干预&#xff0c;替代人工作或实现人无法执行的工作。 弱人工智能 所谓弱人工智能就是仅在单个领域…

Java必须掌握的多态的优势和弊端(含面试大厂题和源码)

Java中的多态是面向对象编程的核心特性之一&#xff0c;它允许一个引用类型变量在运行时绑定到多个不同的类型的对象。多态的使用带来了许多优势&#xff0c;同时也存在一些潜在的弊端。在面试大厂时&#xff0c;理解和能够讨论这些优缺点显示出深入的知识和对技术的全面理解。…

桥梁工程AR增强现实模拟情景实训教学演练

在传统的桥梁工程专业课堂中&#xff0c;理论知识的学习往往占据了大部分时间。然而&#xff0c;对于桥梁工程这样的专业领域&#xff0c;实践操作的重要性不言而喻。而AR技术的出现&#xff0c;恰恰解决了这个问题。 首先&#xff0c;AR技术可以模拟真实的桥梁环境&#xff0c…

数据结构学习(四)高级数据结构

高级数据结构 1. 概念 之所以称它们为高级的数据结构&#xff0c;是因为它们的实现要比那些常用的数据结构要复杂很多&#xff0c;能够让我们在处理复杂问题的过程中&#xff0c; 多拥有一把利器&#xff0c;同时掌握好它们的性质&#xff0c;以及所适应的场合&#xff0c;在…

《剑指offer》76--删除链表中重复的结点[C++]

目录 题目&#xff1a; 思路&#xff1a; 贴代码&#xff1a; 代码输出 题目&#xff1a; 在一个排序的链表中&#xff0c;存在重复的结点&#xff0c;请删除该链表中重复的结点&#xff0c;重复的结点不保留&#xff0c;最后返回链表头指针。 如&#xff1a; 链表1->…

Windows下定时器SetTimer以及KillTimer的用法

前言 在Windows下&#xff0c;定时器通常用于周期性地执行某些任务或在一定延迟后执行特定的操作。Windows提供了一些API函数来操作定时器&#xff0c;其中主要包括 SetTimer、KillTimer 和 SetTimerProc。 什么时候我们需要用到SetTimer函数呢&#xff1f;当你需要每个一段时…

PaddleOCR基于PPOCRv4的垂类场景模型微调——手写文字识别

PaddleOCR手写文字识别 一. 项目背景二. 环境配置三. 数据构造四. 模型微调五. 串联推理六. 注意事项七. 参考文献 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;ORC是指对包含文本资料的图像文件进行分析识别处理&#xff0c;获取文字…