作者:@小萌新
专栏:@Linux
作者简介:大二学生 希望能和大家一起进步!
本篇博客简介:简单介绍下操作系统的概念
操作系统
操作系统是什么?
操作系统是管理软硬件资源的软件
为什么要设计操作系统
为什么要设计操作系统 难道我们直接去使用计算机不可以嘛?
不可以 因为直接去操作硬件的难度太高了 势必不可能大规模的使用 所以说要设计出来一个操作系统简化操作
同样的 对于硬件来说用户的一些非法操作可能会对其造成破坏 所以说需要操作系统去保护硬件
所以说设计操作系统的目的就很明显了
- 统筹管理软硬件资源
- 为用户提供一个良好的操作环境
操作系统的上下有什么
我们肉眼看过去计算机大概是这个样子
这些硬件看上去是分散开来的 但是在底层都严格遵守着冯诺依曼体系
然后单单存在这些硬件是没有意义的 因为我们需要操作系统去统筹管理他们
那么这里问题就来了 操作系统是直接和硬件去打交道的嘛?
答案肯定是否
为什么呢?
比如说我们今天的键盘坏掉了 去换了一块新的键盘 但是呢这块键盘比我们原来的键盘多了几个按键
那么这个时候怎么办呢? 难道要通过修改操作系统的源码来适配这些键嘛?
显然是不可能的 这样子的成本太高了
我们给出的解决方案是在操作系统和硬件之间添加一道驱动层
驱动一般是由各个硬件的厂商自主开发的 驱动程序和硬件直接打交道 管理者硬件的读取数据
而操作系统只需要决定何时读取数据就可以了
那么操作系统到底在管理些什么呢?
它主要对于下面四点进行着管理
- 内存管理:内存分配、内存共享、内存保护以及内存扩张等
- 驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作
- 文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等
- 进程管理:其工作主要是进程的调度
操作系统再往上就是用户层了
但是操作系统为了保证整个计算机的安全肯定不可能全部暴露给用户
于是它只对上提供了一些系统接口 用户通过这些系统结构来调用操作系统
(其实这些接口就是函数)
但是调用系统接口对于没有系统学习过编程的普通人来说太难了 而且体验也十分不好
所以说基于系统调用接口程序员们开发出来了用户调用接口
如何管理? 先描述 再组织
先描述 再组织是贯穿整个操作系统的一句话
我们这里举个学校的例子来说明操作系统是如何管理的 以及为什么说先描述后组织
我们在一个学校里 校长是毫无疑问的管理者 学生是毫无疑问的被管理者
那么校长是怎么管理学生的呢?
是对每个学生都特别了解 然后做出相应的决策嘛?
这显然是不可能的 一个学校少则几千 多则几万的学生 想要全部了解理论上是不可能的
那么假如说校长想要组织一场考试 这个考试应该怎么进行开展呢?
首先校长说完要组织考试之后开始联系各个院的辅导员 然后辅导员去各系进行组织
如果说校长是操作系统 那么辅导员就是驱动 学生就是硬件
考完试之后校长决定对于各个学生进行奖惩 这个时候应该如何去操作呢?
很显然不可能去一个个的了解 这个时候还是通过辅导员收集各个学生的成绩 然后汇总上交给校长
所以说整个过程中 校长和学生之间并没有直接的接触 而是通过学生的一些数据就做出奖惩的决策
将学生数据化的过程就叫做描述
校长拿到学生成绩的时候肯定不是只拿到一个人的成绩 肯定是拿到所有学生的成绩
将这些成绩关联起来的行为就叫做组织 我们可以使用各种数据结构 比如说链表 双链表 二叉数 红黑树等进行数据的组织
所以说数据结构其实是操作系统所衍生出来的一个学科
我们这里总结一下
管理分两步走 首先描述被管理对象的各种属性将其数据化 之后使用数据结构将这些数据组织起来