文章目录
- 第一章 计算机系统概述
- 操作系统的概念(定义)、功能和目标
- (一)操作系统的概念(定义)
- (二)操作系统的功能和目标
- 1、作为系统资源的管理者
- 2、向上层提供方便易用的服务
- 3、作为最接近硬件的层次
- 小结
第一章 计算机系统概述
操作系统的概念(定义)、功能和目标
概念(定义)
- 什么是操作系统
功能和目标
- 操作系统要做些什么?
(一)操作系统的概念(定义)
一台电脑的诞生
Step1:厂家组装一台裸机
裸机(纯硬件):包含CPU、内存、硬盘、主板等
Step2:出售前安装操作系统
Step3:用户安装应用程序(如:QQ)
Step4:使用QQ聊天
最底层的是裸机、纯硬件,在裸机上面安装一层操作系统,在操作系统之上我们可以安装一系列的应用软件,用户是处于最上面一层的。
这张图中,应用程序和操作系统相连,是因为应用程序能够通过系统调用和操作系统进行交互。用户和操作系统相连,是因为用户可以通过GUI、命令接口和操作系统进行交互。(下文有具体讲解)
至此,给出操作系统的定义:(来自王道资料书)
操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
这段话想表达的是:
①操作系统是系统资源的管理者。
直观的例子,如,我们打开Windows操作系统的“任务管理器”,能够看到
②向上层提供方便易用的服务。
③是最接近硬件的一层软件。
(二)操作系统的功能和目标
1、作为系统资源的管理者
- 提供的功能
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
- 目标
- 安全、高效
用QQ和朋友视频聊天的过程
Step1:在各个文件夹中找到QQ安装的位置(如D:/Tencent/QQ/Bin)
通过一层一层的文件夹(目录),找到了QQ的启动程序QQ.exe,但是除了这个可执行文件外,目录下还有很多其他文件,而对于这些文件的组织和管理,是操作系统来帮我们完成的。
这就涉及到了操作系统作为系统资源的管理者,所要提供的文件管理的功能。
Step2:双击打开QQ.exe
执行一个程序前需要将该程序放到内存中,才能被CPU处理。
我们在双击完QQ.exe后,操作系统帮我们做了一个很重要的事情,把我们的数据从磁盘放到了内存中,具体放在什么位置,都是由操作系统帮我们完成的。
这一步就涉及到操作系统的另一个功能:存储器管理(或者叫主存管理、内存管理)
Step3:QQ程序正常运行
在QQ程序运行的过程中,是需要经过CPU(处理机)进行处理的,而什么时候给这个进程分配处理机资源,这个事情是操作系统在背后为我们完成的。
这就涉及到操作系统的又一个功能:处理机管理。
Step4:开始和朋友视频聊天
在视频聊天的过程中,肯定要把摄像头这一设备分配给QQ使用,因此,像摄像头这一类设备资源,也需要操作系统来帮助我们管理,由操作系统来决定把哪一设备分配给哪个进程使用。
这就又涉及到设备管理。
2、向上层提供方便易用的服务
- 直接给用户使用的
- GUI(图形用户界面)
- 命令接口(用户可直接使用)
- 联机命令接口(说一句做一句)
- 脱机命令接口(说一堆做一堆)
- 给软件/程序员使用的
- 程序接口(即“系统调用”,用户通过程序间接使用)
【注】在有的教材中,命令接口与程序接口被统称为“用户接口”,即狭义的用户接口不包括GUI。
硬件只听得懂二进制指令,如:01010111101110111010101。
硬件对外暴露了“丑陋”、不友好的交互接口。
通过刚才的分析可知,计算机的最底层是裸机(纯硬件),最底层的这些硬件,它只听得懂二进制指令,即机器语言。也就是说,如果我们直接和这些硬件打交道的话,那么我们只能用二进制的语言和这些硬件进行交互。所以我们说,最底层的纯硬件,它对外暴露出的,是不友好的、“丑陋的”交互接口,正常的人类很难和这些纯硬件直接来打交道。
在硬件之上安装了操作系统,操作系统对外暴露了“美丽”、友好的交互接口。
但是在硬件之上,安装的操作系统,会向它的上层提供一种更美丽、更友好的交互接口。在安装了操作系统之后,用户/应用程序不需要直接和硬件打交道,而只需要告诉操作系统想要得到的服务就可以。操作系统会把这些命令/需求翻译成二进制,来告诉硬件,然后由硬件执行操作。
封装思想:操作系统把一些丑陋的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机。用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。
这其实是一种典型的封装思想。这种封装思想在生活当中也很普遍,比如一辆汽车,如果我们把它拆解了的话,里面有很多很复杂的构件,但是汽车的设计师们会把这些底层复杂的构造隐藏起来,对外只暴露用户能够理解的、简单易用的接口(方向盘、刹车、油门……),但是用户不需要关注它底层是怎么实现这些功能的(转向、加速、减速……)。而操作系统对底层硬件的封装,其实和汽车的这种封装本质上没有区别。
刚刚说操作系统对底层进行封装,向上层提供方便易用的服务。那么提供了哪些服务呢?
- GUI:图形化用户接口(Graphical User Interface)
用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令、参数。
例如,在Windows操作系统中,删除一个文件只需要把文件“拖拽”到回收站即可。但这一简单的“拖拽”动作背后,操作系统其实做了很多事情。
很多现代操作系统都提供GUI,而一些早期的操作系统是并没有这些图形化界面的。早期的操作系统都是让用户通过命令接口的方式和操作系统进行交互,也就是用命令行的方式和操作系统进行交互。
命令接口又分为两种:联机命令接口、脱机命令接口。
- 联机命令接口
联机命令接口实例(Windows系统)
联机命令接口 = 交互式命令接口。
特点:用户说一句,系统跟着做一句。
Step1:win键+R
Step2:输入cmd,按回车,打开命令解释器
Step3:尝试使用time命令
time命令的功能是显示当前时间,并允许用户输入一个新时间来修改时间,是一个典型的交互式命令,整个过程,用户是在和操作系统不断进行交互的。
- 脱机命令接口
脱机命令接口实例(Windows系统)
脱机命令接口 = 批处理命令接口
特点:用户说一堆,系统跟着做一堆。
使用Windows系统的搜索功能,搜索C盘中的*.bat
文件,用记事本任意打开一个。
虽然其内容看起来很复杂,但本质上和刚才我们使用的time命令没有区别。它只不过是把一系列的命令都罗列成了一个清单,当我们执行这个.bat
文件的时候,操作系统就会根据这个文件当中的命令,一条一条地执行。我们使用这种脱机命令接口(批处理命令接口)和操作系统进行交互的话,我们其实是一次提出一堆的请求,操作系统根据我们的指示,一条一条地执行这一堆的请求。这也是这种命令接口被称为“批处理”命令接口的原因。
到此我们讲了三种接口:GUI、联机命令接口、脱机命令接口,都是可以让普通用户直接使用的。操作系统还有一种对外提供的接口,叫做程序接口,这种接口是给我们程序员使用的。
- 程序接口
程序接口:可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
如:写C语言“Hello world”程序时,虽然我们只利用简单的printf函数就实现了,但是在其底层一定使用到了操作系统提供的显示相关的“系统调用”。
程序员在写C语言时,调用C语言库函数,而库函数的底层使用到了一系列系统调用,操作系统在接收到了系统调用后,就会让底层硬件执行相关功能。系统调用类似于函数调用,是应用程序请求操作系统服务的唯一方式。
在有的教材中,系统调用,又会被称为广义指令。
3、作为最接近硬件的层次
需要实现对硬件机器的扩展。
没有任何软件支持的计算机称为裸机。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。
通常把覆盖了软件的机器称为扩充机器,又称之为虚拟机。
这些概念无关紧要,更重要的是要理解:为什么操作系统能够实现对硬件机器的扩展?
类比汽车:
发动机——只会转;轮胎——只会滚。
在原始的硬件机器上覆盖一层传动系统——让发动机带着轮子转——使原始的硬件机器得到拓展。
操作系统对硬件机器的拓展:将CPU、内存、磁盘、显示器、键盘等硬件合理地组织起来,让各种硬件能够相互协调配合,实现更多更复杂的功能。
小结
操作系统的概念、功能和目标