目录
- 一、概念
- 二、设计OS的目的
- 三、定位
- 四、操作系统上下的分级
- 五、如何理解 "管理"
- 六、总结
一、概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
二、设计OS的目的
- 与硬件进行交互,管理所有的软硬件资源。
- 为用户程序(应用程序)提供一个良好的执行环境。
三、定位
操作系统就是一款进行软硬件资源管理的软件。
在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件
四、操作系统上下的分级
首先,我们肉眼可见的就是计算机实物,也就是计算机底层的硬件。这些硬件看似是一个个罗列出来的,但实际在底层都遵守冯诺依曼的组织形式。
而单单只有这些硬件是不够的,还需要一个软件对这些硬件进行管理。而这个软件就是操作系统(Operator System)。
操作系统与底层硬件之间增加了一层驱动层,驱动层的主要工作就是单独去控制底层硬件的。例如,键盘有键盘驱动,网卡有网卡驱动,硬盘有硬盘驱动,磁盘有磁盘驱动。驱动简单来说就是去访问某个硬件,访问这个硬件的读、写以及硬件当前的状态等等,驱动层就是直接和硬件打交道的。而驱动一般是由硬件制造厂商提供的,或是由操作系统相关的模块进行开发的(例如网卡)。
此时操作系统就只需关心何时读取数据,而不用关心数据是如何读取的了。
操作系统主要进行以下四项管理:
- 内存管理:内存分配、内存共享、内存保护以及内存扩张等等。
- 驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作。
- 文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等等。
- 进程管理:其工作主要是进程的调度。
操作系统再往上就是我们所处的位置,在这里我们就可以用命令行或是图形化界面进行各种操作,这一层被称为用户层。
但操作系统为了保护自己,对上只暴露了一些接口,而不会让用户直接访问操作系统,这一系列接口被称为系统调用接口。
但这些系统调用接口对我们普通用户来说使用成本又太高了,因为要使用系统调用前提条件是你得对系统有一定了解。所以在系统调用接口之上又构建出了一批库,例如libc、shell外壳。实际上在语言级别上使用的各种库,就是封装了系统调用接口的,我们就是通过调用这些库当中的各种函数(例如printf和scanf)进行各种程序的编写。
五、如何理解 “管理”
其实操作系统大部分内容围绕管理,对下帮助用户管理好底层的软硬件资源,对上给用户提高一个良好(稳定,高效,安全)的运行环境。
这就有了两个角色:管理者和被管理者,什么时候做什么事,什么时候不能做什么事。
例如:我们在学校中分出俩个角色:学生和校长。很明显,校长是管理者,学生是被管理者,而我们在学校往往是与辅导员打交道,校长可能从入学到毕业都没见过几次,那么辅导员充当什么角色呢?
其实细想一下我们日常中完成任何一件事都有两个过程,1.做什么事要不要做或如何做这件事(决策),2.做这件事(执行)。校长作为管理者实际上就是做决策的人,但是校长做出决策后并不需要自己执行,而是分给辅导员去执行,所以辅导员的主要任务就是执行管理者的决策,我们通常将其称为执行者。
虽然说校长是管理学生的,但是我们在学校一般情况下是看不到校长本人的,那么校长是如何做到在不看到我们的情况下对我们进行管理的呢?
现在校长要求辅导员将计算机成绩排名前十的学生的各科资料以及平时表现记录拿过来,他将从这十名同学之中选出三名学生参加本次的编程大赛,当辅导员将资料拿来后校长选出三名学生说:“就这三个了,你找个老师对这三名学生进行一下强化训练,然后参加本次的编程大赛。”然后校长就什么也不管了。
在这个过程中,校长根本没有见过这三名同学,就对其进行了管理,他根据的是什么?没错,他根据的是数据。
实际上,学校将我们每个学生的各种信息都进行了管理和记录,基本信息、成绩信息以及健康信息等等
- 校长对应的是操作系统
- 辅导员对应的是驱动程序
- 学生对应的是软硬件资源
每这么一套信息就描述了一名学生,校长通过对这些信息的管理就能做到对学生的管理。这么一套信息在C语言当中我们称之为结构体,而在C++当中又叫做类对象。
当学生的数量多起来了,校长就可以将全部学生的信息组织起来,当然组织的方式有很多种(链表、顺序表、树),而每种组织方式都有其自己的优势,于是就有了一门课程专门教我们管理数据的方式,那就是数据结构。
管理的本质是对数据做管理,如何做管理?
先描述再组织。此时校长对学生的管理工作转换成了对链表的增删查改。这个过程叫建模。