目录
OS概念
设计OS的目的
OS定位
操作系统对下的结构层次示意图
理解操作系统的"管理"❗❗
"管理"被管理者的数据
怎么获取被管理者的数据
获取被管理者什么"数据"
数据过多&先描述再组织❗
C/C++中的体现
解释OS对硬件的"管理"
OS概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。
在我们开机的时候,操作系统是启动最早的一款软件。(例如:app的下载卸载,U盘的插入和弹出等都是由操作系统来控制的)
- 操作系统是一款对软硬件资源管理的软件。
操作系统的又分为广义的和狭义的认识。
- 广义的认识:操作系统的内核+操作系统的外壳周边程序。
- 操作系统的内核:对文件,内存,外设的管理
- 操作系统的外壳周边程序:给用户提供使用操作系统的方式(例如:图形化界面,office)
- 狭义的认识:只是操作系统的内核。
笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
设计OS的目的
为什么要有操作系统❓
- 与硬件交互,管理所有的软硬件资源
- 为用户程序(应用程序)提供一个良好的执行环境
OS定位
在整个计算机软硬件架构中,操作系统的定位是:
- 一款纯正的“搞管理”的软件。
如何理解"管理"呢?
下面我们会以学校(校长,辅导员,学生)管理的例子展开详细讲解。
- 管理是收集被管理对象的数据
- 描述被管理对象
- 组织被管理对象
操作系统对下的结构层次示意图
操作系统主要功能是:进程管理,内存管理,文件系统管理,驱动管理(硬件管理)。当然还有许多其他的功能,主要是这几个功能。
- 谈到"管理",操作系统是如何对硬件管理的呢❓❓
操作系统为了管理硬件,操作系统要能访问到硬件。
- 如果让操作系统直接和硬件交互,每个硬件的物理特性不一样。每个硬件都是由不同的厂商独立生产和提供的,如果硬件的特性改变了,那么操作系统也要随着改变❓❓
- 所以生产硬件的厂商都提供了每个硬件自己的驱动层(每个硬件都有自己的驱动层,可能多个硬件对应一个驱动层)。
- 驱动层是一层软件。
- 驱动层由生产硬件厂商提供。(可能提供一些协议等)
- 驱动层功能:向操作系统提供一些接口。操作系统通过这些驱动层的接口能访问到硬件,对硬件管理。(读取)(极小部分硬件直接由操作系统管理)
【操作系统的向下体系结构的层状结构】
理解操作系统的"管理"❗❗
我们遇到事情通常分为两步:决策+执行。对于管理者来说,管理者通常大部分事情是决策。
"管理"被管理者的数据
假设一个场景:学校。校长是管理者,学生是被管理者。
❓请问我们见到过校长吗。
当然没有。所以不需要管理者和被管理者直接接触。"管理"是不需要接触的。接触不是目的不是必要的。
❓目的是什么。校长通过我们的成绩,年纪,籍贯等来管理我们。
所以,目的拿到被管理者的数据。
- 综上所述:"管理"不必直接接触,"管理"的核心本质是对被管理者的数据做管理。
怎么获取被管理者的数据
❓校长需要去拿学生身上的数据,怎么去那呢
- 直接接触(见面询问)+直接采集数据+决策+执行
- 不接触+辅导员/班长+表格+间接采集数据+决策+执行
获取被管理者什么"数据"
❓校长关心学生身上的什么数据呢。
- 校长只关心部分学习相关/个人基本信息的数据。
- 校长关心的群体落实到个人上是学生。
数据过多&先描述再组织❗
❓一个学校有很多个年级,每个年级有几千人,校长可能要"管理"几万人。这么多的数据如果全部放在表格里面去管理是非常复杂和不方便的。怎么办
【先描述】
- 虽然被管理者人很多,但是被管理者的数据的属性是一样的,只是值不一样而已
- 可以把所有的不同数据的相同属性集合到一起
- 在C语言中,结构体就可以达到这个目的。只要每次怎加一个被管理者,定义一个结构体去填充不同的信息在里面即可。
【再组织】
- 虽然把多个被管理者的数据用相同的属性(结构体)管理起来了,但是它们都是独立的,一个一个的,校长不可能拿着一堆定义的结构体去管理学生。增删查改这些都是非常不方便的。
- 我们前面学习过了【数据结构】,数据结构就是把一个一个独立的数据管理起来,让他们之间有联系。
- 所以可以用链表把独立的数据管理起来。(二叉树/顺序表/栈/队列都可以,只是效率和适应场景不同而已)
校长对学生的管理(日常),变成了对链表的增删查改(计算机语言)。完成了学生的管理工作,计算机建模的过程。
【自动建模的过程=先描述再组织】
- 先收集数据(接触否)
- 对被管理对象进行属性级别的描述
- 对特定的对象按照特定的数据结构组织起来
- >>>>>>>>对数据机构的增删查改
C/C++中的体现
C中的扫雷/通讯录游戏都可以回忆下:
- 先描述通讯里人的相同属性(结构体)。
- 再组织(数组)管理起来,对这些数据进行增删查改。
C++的语法+STL(容器)
- C++语言封装继承多态。【封装】就是描述对象。
- STL(容器)本质就是数据结构,就是组织对象。
- 把一个一个对象先描述,再组织起来。语言的设计也是按照这个”管理"的思路来的。语言就是直接/间接管理对象(数据)。
综上所述:凡是对特定的对象进行管理,先描述,再组织❗❗
解释OS对硬件的"管理"
Linux内核是用C语言写的一款软件(可执行程序.exe)。操作系统对软件的管理后序博文展开。那操作系统OS是如何管理硬件的❓❓
- 通过驱动程序读取硬件的属性数据(识别硬件)
- 先描述:属性信息数据
- 把硬件的数据信息填充到对应属性里
- 再组织:在操作系统内部用数据结构组织起来,进行增删查改的管理
操作系统的内部是充满大量的数据结构/算法。
🙂感谢大家的阅读,若有错误和不足,欢迎指正。后面可能还会有部分补充更新。