目录
一、操作系统
1、概念
2、操作系统的结构
3、操作系统的理解
二、进程
一、操作系统
1、概念
操作系统是一个软件,一款进行软硬件资源管理的软件
电脑开机的时间,就是把操作系统加载到内存并运行的过程。
对操作系统广义的认识:内核+外壳周边程序
侠义的认识:仅仅内核
2、操作系统的结构
操作系统四大核心工作:进程管理、内存管理、文件系统、驱动管理
驱动管理:
因为操作系统要管理硬件,这就需要二者匹配
如果不匹配,要么改操作系统,要么改硬件
这就很蛋疼
因此,在硬件和操作系统之间有设计了一层驱动层
作用是给操作系统提供硬件对应的通信接口,以匹配硬件与操作系统
一个硬件对应一个通信接口,而驱动程序是由厂商自定义提供的
每当新的硬件设备连接到计算机,都需要安装驱动程序,否则操作系统就无法对该硬件进行管理
例如我们每一次插入一个U盘,都会显示如下,这就是驱动程序的安装
所以,为什么要有操作系统?
对软硬件进行管理(手段),为用户提供一个良好(安全、稳定、高效)的运行环境(目的)
如果没有操作系统,就需要用户自己去底层管理软硬件的资源调配,那是不现实的。
3、操作系统的理解
我们下面从管理的角度进行理解
一个管理者是如何管理被管理者的?
例如校长对学生是如何管理的?
本质是对学生的数据进行管理的
因此,重要的是拿到数据。
任何管理:先描述,再组织
对任何对象的管理都遵循先描述,再组织的原则
例如我们写c++程序,一般第一步做的就是定义类,这其实就是描述对象
然后再对该对象进行相应的功能管理完善,即组织
依这个原则,我们就可以理解操作系统是如何对硬件进行管理:
当识别到一个新的硬件设备时,
先描述基本属性,例如说一个驱动类型的结构体
每一个设备都是一个结构体对象,但是各个设备的属性各异,数据也就各异
如厂商、类型、状态等。
而管理的本质是对数据的管理。
这样,我们就获取了各个硬件的结构体对象
之后,我们就可以使用合适的数据结构,例如数组、链表、二叉树等
对各个硬件的结构体对象进行组织管理
操作系统本质是一个软件,是用编程语言写的
所以,操作系统内部对硬件的管理,就变成了对硬件创建对应的结构体对象的管理
这个过程实际上也就是面向对象的过程
这就是先描述,再组织
大体的思路过程是这样的:
把特定对象的管理,编程特定数据的增删查改
至于具体的如何实现,我们不需要关心
因此,我们也可以预测:
操作系统内部将会存在大量的结构体
同时,操作系统大部分的工作,就是对这部分结构的组织和管理。
用户不能绕过操作系统这一层,直接访问底层硬件
因为,用户对底层的访问可能会改变底层数据
这样就会影响操作系统的对底层硬件的管理,有安全隐患
甚至可能导致操作系统的运行崩溃
这类似于用户和银行的关系
银行对用户是一个黑箱子的状态,对用户开放的,只有一个银行窗口
因为银行不可能对用户开放。
总结
因此,我们对整个操作系统的架构进行总结如下:
1、硬件底层不能对用户开放,但是用户使用计算机必然要使用到底层
怎么办?
因此,操作系统必须对用户提供系统调用接口
2、但是,我用户不懂什么操作系统,更不懂什么接口,我只懂双击666,那里亮了点那里。
怎么办?
因此,操作系统再系统调用的基础上,还需要对上提供专门针对用户的接口
因此,总的操作系统的整体构架如下: