操作系统
文章目录
- 操作系统
- 一、上次的问题
- 二、什么是操作系统(Operator System)
- 设计操作系统的目的
- 三、操作系统上下层分别是什么
- 四、先描述,后组织
一、上次的问题
为什么程序运行之前必须先加载到内存?
因为可执行程序(文件)是在硬盘(外设)上的,而CPU只能从内存当中获取数据,所以必须先将硬盘上的数据加载到内存,也就是必须先将程序加载到内存。
二、什么是操作系统(Operator System)
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。
简单来说操作系统就是管理软硬件资源的软件。
设计操作系统的目的
-
与硬件交互,管理所有的软硬件资源
-
为用户程序(应用程序)提供一个良好的执行环境
三、操作系统上下层分别是什么
从我们普通人的视角来看只能看到计算机的硬件:鼠标、显示器、键盘、网卡等,这些硬件看似是互不相干的,但他们的底层是严格遵守冯诺依曼体系结构的。
但是,只有硬件是完全不行的,我们需要有一个软件对硬件进行管理。
这个软件就是我们称呼的操作系统(OS)。
但是操作系统是如何管理的呢,操作系统是直接面向这些硬件的吗?
答案是否定的,如果硬件由OS进行维护,那么成本就太高了。
例如,我们有两把键盘,一个87键,一个96键,如果我们目前使用的OS是对应87键的,当我们把键盘换成96键,那么多出来的几个键OS岂不是无法识别?岂不是需要修改OS的源码来适配这个键盘吗?
所以又出现了一个解决思路,驱动。
我们在OS和硬件之间又加了一层驱动,驱动主要就是去单独控制底层的各种硬件的。不同的驱动有不同的控制对象,例如键鼠有键鼠的驱动,网卡有网卡驱动。驱动才是直接与硬件进行打交道的。而驱动是各个硬件厂家提供的,可以对OS相关的模块进行开发,由此一来驱动适配不同的硬件。OS则可以高枕无忧,只需要关注什么时候读数据,而不用关心数据的读取过程了。
所以说操作系统到底在管理什么?
答案是
-
内存管理:内存分配、内存共享、内存保护以及内存扩张等。
-
驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作。
-
文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等等。
-
进程管理:其工作主要是进程的调度。
操作系统再往上一层就是我们用户层了,如Windows系统下我们的图形化桌面。
但是为了避免普通人对操作系统进行某种不当的操作,又向用户层和操作系统层面加了一层,系统调用层。
这样可以极大的保证操作系统的安全性和保密性:操作系统暴露出来的系统调用,才是我们能做的,我们看不到的则是操作系统不想让我们看到的。
但是这些系统调用对我们普通用户来说使用成本又太高了(需要时间和精力去了解学习),所以又在系统调用层面上构建出了一些库,如libc和libc++等。
实际上,语言上使用的各种库都是调用封装了系统调用的。
四、先描述,后组织
什么是先描述,后组织呢?
先描述,后组织是操作系统管理的精髓。
举个例子,一个学校的校长要挑出几个学生去参加比赛。校长是管理者,学生是被管理者。学校有这么多学生,校长总不可能一个一个去看吧,所以需要体育老师(执行者)对学生们进行测试,把学生的成绩归纳到一个表中,再由校长进行挑选。其中校长没有直接面对学生,而是通过学生的成绩来决定谁来参加比赛。这样的方式就是先描述后组织。
这个例子中校长就类似于操作系统,体育老师就类似于驱动,学生就类似于各种硬件外设,将学生成绩信息数据化的过程就是描述,将学生成绩通过链表、顺序表、树等数据结构关联起来就是组织。
总结:先将被管理者的某种信息数据化,再将它们用数据结构关联起来,这就是先描述后组织。
感谢阅读,欢迎指正。