专栏 : @Linux
本篇博客简介:简单介绍下操作系统的概念
操作系统是什么
操作系统是管理软硬件资源的主要软件
为什么要设计操作系统
直接使用计算机不是更好吗,为什么还要设计操作系统?
原因是因为不是所有人都是程序员 操作难度太高 肯定不可能这样使用 所以设计操作系统可以简化一部分操作
同样的 对于硬件来说用户的一些非法操作可能会造成不必要破坏 所以操作系统可以对硬件提供保护措施
所以操作系统设计目的就很明显了
1. 统一管理软硬件资源
2. 为用户提供简单良好的使用环境
操作系统的整个体系
计算机用眼睛大概是这个样子的
硬件在表面是散开来的,但是都遵守着 冯诺依曼 体系
单单硬件我们是没法使用的 因此我们需要操作系统去统筹它们
那么这样就足够了吗 操作系统是直接和硬件去打交道的嘛?
答案是那肯定 NO 为啥呢?
比如说我们今天的键盘坏掉了 去换了一块新的键盘 但是呢这块键盘比我们原来的键盘多了几个按键
那么这个时候怎么办呢? 难道要通过修改操作系统的源码来适配这些键嘛?
显然是不可能的 这样子的成本太高了
我们给出的解决方案是在操作系统和硬件之间添加一个驱动层 用来管理各 不同厂商 或 不同架构 的 硬件
驱动一般是由各个硬件的厂商自主研发的 驱动程序 和 硬件直接打交道 管理硬件的数据 而操作系统只需要直接用 驱动管理 硬件就行了
操作系统在管理着什么呢?
它主要管理四个方面
1. 内存管理:内存分配、内存共享、内存保护以及内存扩张等
2. 驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作
3. 文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等
4. 进程管理:其工作主要是进程的调度
操作系统在往上就是用户层了
但是操作系统不可能完全相信用户,于是它只能对上提供一些系统接口 用户通过这些系统结构来调用操作系统
但是调用系统接口对于没有系统学习过编程的普通人来说太难了 而且体验也十分不好
所以说基于系统调用接口程序员们开发出来了用户调用接口
如何管理 先描述 在组织
先描述 在组织 贯穿了 linux 整个体系
我们这里举个自行车的例子来说明操作系统是如何管理的 以及为什么说先描述后组织
我们想要组装一个自行车里 自己毫无疑问是管理者 自行车零件是被管理者
那么自己是怎么管理自行车零件的呢?
是对每个零件都特别了解 然后做出相应的决策嘛?
这显然是不可能的 一个自行车少很多很多 想要全部了解理论上是不可能的
那么假如说自己想要组装一个自行车 这个自行车应该怎么进行开展呢?
首先我想要组装自行车之后开始联系各个懂各个零件的工程师 然后在去各个进行组织
如果说自己是操作系统 那么工程师员就是驱动 零件就是硬件
将零件数据化的过程就叫做描述
将这些零件关联起来的行为就叫做组织 我们可以使用各种数据结构 比如说链表 双链表 二叉数 红黑树等进行数据的组织
所以说数据结构其实是操作系统所衍生出来的一个学科
我们这里总结一下
管理分两步走 首先描述被管理对象的各种属性将其数据化 之后使用数据结构将这些数据组织起来