深入理解操作系统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是如何管理硬件的❓❓

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

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

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

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐唐思

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值