路灯很多,希望你找到自己的月亮。
作者:阿润菜菜
目录
操作系统是什么
为什么设计操作系统
理解操作系统的作用
如何理解操作系统对软硬件管理?
操作系统为什么要对软硬件资源进行管理呢?
什么是系统调用和库函数
总结
操作系统是什么
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。在整个计算机软硬件架构中,操作系统的定位是: 一款进行软硬件资源管理,一款纯正的“搞管理”的软件
为什么要有操作系统?
我们知道对于一个程序而言,它为了保障自己的程序运行流畅,势必就会要求自己分配到的资源越多越好,但是计算机的资源总是有限的,大家都自顾自抢资源的话,要么就是大家一起跑不动,要么就是某几个程序把别的程序的资源都挤占掉。
更麻烦的是,由于程序设计者不可能预测到自己的程序会和什么样的别的程序同时在一个电脑中运行,所以很有可能出现某个程序的临时数据恰好和另一个程序关键数据很相似的情况,于是就会发生这个程序破坏了那个程序数据之类的问题。
更更麻烦的是,我们的电脑硬件也是由不同的厂商制造的,它们的底层硬件系统也各有不同,无论是消费者还是软件出产方肯定都不希望某个软件在这个型号的电脑上能跑,换一个就跑不了的情况。
因此,我们需要操作程序来作为一个协调者——操作系统(Operation System,OS)。
笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库, shell程序等等
为什么设计操作系统
-
与硬件交互(数据流),管理所有的软硬件资源
-
为用户程序(应用程序)提供一个良好的执行环境
理解操作系统的作用
操作系统在计算机系统中承上启下的地位:向下封装硬件,向上提供操作接口。
如何理解操作系统对软硬件管理?
对管理者进行建模:
- 管理者本质:决策作用 对被管理对象的数据进行管理
- 管理的本质:先描述,在组织
通过故事理解:
我们知道管理者与被管理者,是不需要沟通的!像是我们在大学里,谁是管理者呢?又是如何管理我们的呢?
这里可以理解成三层结构,管理者就是我们的校长,起决策作用(如校长会拿到学生的各种数据,其中连续多次挂科的同学就可能受到被劝退的决策😰);中间层是辅导员,起决策被执行作用(传达领导精神,收集数据汇总),执行者就是我们学生,起参与执行作用。对应在计算机上,就是操作系统(管理者)硬件驱动(中间层)硬件或软件(被管理者)。 其中管理者是如何拿到 被管理者的数据的呢?就是通过辅导员收集提交的数据。对应在计算机上,就是操作系统会接收来自硬件驱动收集的数据。
类似于校长通过学生的数据进行管理:
计算机管理硬件:
- 描述起来,用struct结构体,记录各种信息
- 组织起来,用链表或其他高效的数据结构,将各个对象的数据进行组织集合
操作系统为什么要对软硬件资源进行管理呢?
操作系统对下通过管理好软硬件资源(手段),对上给用户提供良好(安全、稳定、高效、功能丰富等)的执行环境(目的) 。
我们来看看银行是怎么运作的?在银行中参与执行任务的就是电脑服务器和座椅板凳这些,对应在计算机中的软硬件;IT部门会管理维护电脑服务器,保安会维护金库,就像是直接和硬件交互的硬件驱动;而银行行长就像是我们的操作系统,对软硬件各种资源进行管理和决策。
还有个问题,银行为我们用户提供各种非常好的服务,但是银行相信我们吗?答案是不会。因为银行既要给我们提供服务,同时又不会允许我们访问内部细节(不会让你随便进入金库),所以银行就会有窗口,进行柜台操作,既提供了相关服务,又保护了自身的安全。类似地操作系统也有这种需求,所以就会有操作系统的系统调用接口。
什么是系统调用和库函数
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用(OS设计的C函数)。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
操作系统作为计算机硬件之上的第一层软件,给用户提供的接口有图形界面 GUI 和命令接口,给应用程序提供的是「程序接口」,这个程序接口就是由一组系统调用组成的,是操作系统提供给开发人员使用的。可以理解为一种可供应用程序调用的特殊函数,「应用程序可以通过系统调用来请求获得操作系统内核的服务」。
我们平常写代码就是在应用层。
总结
-
操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源
-
操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及进程的管理。内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性
-
操作系统存在屏蔽了硬件层的复杂性。同时通过系统调用保证系统的稳定性和安全性,防止用户进行非法操作。