CHS_01.1.1.1+1.1.3+操作系统的概念、功能
- 操作系统的概念和定义
- 那我们看一下我们现在所使用的电脑是怎么样一步一步变成我们现在看到的这个样子的
- 操作系统 它是计算机系统当中最基本的系统软件
- 操作系统 它要向上层提供方便应用的服务 这是什么意思呢
- 我们先来看第一种联机命令接口
- 那第二种命令接口叫做脱机命令接口 又叫批处理命令接口
好的 那么下面让我们正式开始这个课程内容 首先来看一下大家都熟悉的操作系统都有哪些
对于一些手头比较宽裕的同学来说 可能会比较喜欢苹果的这些设备
比如说 苹果的电脑使用的操作系统是Mac os 然后苹果的手机使用的是ios系统
但是对于我自己来说 比起苹果的这种浮夸 我还是比较喜欢这个安卓和windows操作系统的这种质朴的优雅
那对于普通老百姓来说 可能99%的人都在使用这几种操作系统
但是对于技术专业的同学来说 琳达操作系统也是我们必须学习使用的一个操作系统
另外呢 现在可能还会有一些野人还在使用诺基亚的塞班系统 所以可以看到我们其实在学习这门课之前 我们自己已经积累了很多关于操作系统的这种体验 感性的经验 因此我们在学习这门课的时候
我们可以用自己平时使用这些操作系统的一些经验来结合我们学习到的一些知识点进行思考
这样可以帮助大家更好的理解课程的内容并且把操作系统知识和我们的
现实生活给连接起来做到学以致用 那在这个小节中我们只介绍操作系统的一些
最基础的概念和定义 并且会结合一些例子来加深大家的理解 那操作系统的概念和定义要回答的就是什么是操作系统这样一个问题
它的功能和目标要回答的是操作系统它需要做什么这样的一个问题 那首先来看第一个部分内容
操作系统的概念和定义
首先 我们来结合生活经验看一下操作系统在整个计算机体系当中它所处的一个位置和角色
那我们看一下我们现在所使用的电脑是怎么样一步一步变成我们现在看到的这个样子的
第一步 厂家会把cpu 主板等等这一系列的硬件给组装成一台裸机 那所谓的裸机就是只有硬件的机器 它不包含操作系统
但是在这个机器出售之前 一般这个厂家还会在这个逻辑的基础之上为我们安装一个操作系统
比如说最常用的就是windows的操作系统 那当我们买到这个电脑之后 就可以在这个操作系统之上来安装一些我们想要使用的应用程序 比如说像qq
那之后 我们作为用户就可以来使用这些应用程序了 所以我们根据一台电脑的诞生过程 就可以看出这个计算机系统的一个层次结构 最底层的当然是纯硬件 又称之为裸机
在裸机上面会安装一层操作系统 而基于操作系统我们又可以安装一系列的应用软件 那我们用户是处于最上面一层
这个地方 细心的同学可能会发现 用户和操作系统的这个边界是有一些相连的部分
用程序和操作系统也会有一些相连的部分 那为什么是这样呢 这个问题我们一会会进行进一步的解释
那在了解了操作系统在整个计算机系统当中所处的一个位置之后 我们来给出操作系统的定义
那这是书上给出的一个定义
操作系统是指控制和管理整个计算机系统的硬件和软件资源
并合理的组织调度计算机的工作和资源的分配
那其实这句话他想表达的无非就是
操作系统 它是系统资源的一个管理者 它是一个这样的角色 那这个系统资源呢 当然就包含了硬件和软件资源
我们来看一个直观的例子 如果大家使用的是windows操作系统的话 可以用这种方式来打开任务管理器
然后在任务管理器这个界面 我们就可以看到现在系统当中正在运行的进程有哪些
那所谓的进程 其实就是正在运行的软件正在运行的程序 比如说大家熟悉的qq crome等等
所以从这个地方可以看到 操作系统肯定是在对这些软件资源进行管理的 那再看右边这个界面
可以看到 操作系统对cpu 内存等等这一系列硬件资源的使用情况其实也是在监控的
比如说现在qq这个进程 它使用了138 9兆字节的内存的空间
所以从右半部分的这个界面来看操作系统 它肯定是在对硬件进行管理的
因此 操作系统 它作为软件和硬件中间的一个层次 它是系统资源的管理者
既管理了个软件资源 也管理了硬件资源 再来看第二句话 操作系统 他要提供给用户和其他软件方便的接口和环境
其实这句话想表达的就是操作系统 它要向上层提供方便应用的服务 那上层包括用户和普通的应用程序
再来看第三句话
操作系统 它是计算机系统当中最基本的系统软件
也就是说 操作系统 它其实是一种软件而不是硬件 但是从这个图当中我们也可以看到操作系统 它是最接近硬件的一层软件
那接下来我们会对操作系统的这三个功能进行更进一步的细分和分析 让大家
更形象的来体会操作系统的一个作用 首先要看的是操作系统 它作为软件和硬件中间的层次
他是系统资源的一个管理者 我们用大家使用qq和朋友视频聊天的例子帮助大家来理解他作为系统资源的管理者要做一些什么事情
首先 我们肯定是需要在文件夹当中找到qq的安装位置 比如说像我的电脑当中 我的qq就是安装在了地盘的的这一系列的路径下面
所以当我找到qq的这个启动程序之后 我就可以双击打开qq 点
那当我双击之后 qq程序就可以正常的运行 然后我就可以用qq和我的朋友进行视频聊天了
那在这个过程当中 我们可以看到 第一步我们是通过了这些一层一层的文件夹目录来找到了我们的qq启动程序
那除了这个文件之外 系统当中还有各式各样的其他的文件 但是这些文件的组织和管理其实是操作系统在帮我们完成的
所以 这就涉及到了操作系统 它作为系统资源的管理者所要提供的一个功能叫做文件管理的功能
然后第二步 当我们双击qq 点一x的时候 这个程序就可以开始正常的运行
那在这个地方 我们需要补充的一个跨考的同学可能不知道的知识点 就是我们的一个程序在执行之前其实是需要把这个程序的数据放到内存里的
所以在我们双击打开qq点ex的时候 其实在背后操作系统帮我们做了一个很重要的事情
就是把这个程序的数据从我们的磁盘放入了内存当中 并且这些数据要放到内存中的什么位置 这些其实都是操作系统在帮我们完成的
所以这一步就涉及到了操作系统 它所要提供的第二个功能叫做存储器管理 或者叫储存管理 内存管理
那当qq程序运行的过程当中 其实是需要被处理机 也就是cpu进行处理的
而什么时候给qq程序分配处理及资源这个事情 是操作系统在背后替我们完成的
因此 这就涉及到了第三个功能 叫做处理机管理 而第四步我们开始使用qq程序和朋友视频聊天
在视频聊天的过程当中 肯定需要把摄像头这个设备分配给qq程序使用
因此 像摄像头这一类设备资源也是要由操作系统替我们管理 由操作系统来决定
应该要把这些设备分配给哪个程序使用 所以这就涉及到了操作系统要提供的第四个功能叫做设备管理
我们书的第二章讲的其实就是处理机管理 而第三章讲的是存储期管理 第四章讲的是
文件管理 而第五章讲的是设备管理 所以其实操作系统这门课 在后期我们要重点学习的就是
它作为系统资源的管理者 要如何设计和实现这些功能 那对于各个部分的理解大家会随着之后的学习不断的深入
这儿就暂且不展开 在这个地方 大家只需要建立这样一个全局观就可以好的 那么 这是第一部分
操作系统 它作为系统资源的管理者所需要实现的一些事情 第二部分 我们来看一下
操作系统 它要向上层提供方便应用的服务 这是什么意思呢
那通过刚才分析 我们知道计算机的最底层其实是裸机 也就是纯硬件
那最底层的这些硬件 其实他只能听得懂二进制指令 也就是极其语言 也就是说 如果我们要直接和这些硬件打交道的话
那我们只能通过这种二进制的语言和这些硬件进行交互 所以我们说最底层的这些硬件 它对外暴露的其实是一些丑陋的
不友好的交互接口 正常的人类很难和这些纯硬件直接来打交道 但是在硬件之上安装的操作系统其实会向它的上层提供一种更美丽 更友好的交互接口 在安装了操作系统之后
我们的用户和应用程序不需要直接和硬件打交道 我们只需要告诉操作系统我们想要得到的服务就可以
而操作系统会把用户的这些命令需求翻译成二进制来告诉硬件 然后由硬件来执行我们想要的这些操作
那这其实是一个很典型的封装的思想 操作系统把一些丑陋的硬件功能把它封装成了一些简单易用的服务
使用户能够更方便的使用计算机 上层的用户不需要再关心底层的硬件细节 而只需要用这种更简单的方式对操作系统发出命令就可以
剩下的操作系统会替我们来完成 其实这种封装思想在我们日常生活中也经常被使用
比如说我们的汽车 如果把它拆解了的话 会发现它里面有很多很多很复杂的一些构件
但是我们的汽车设计师们会把这些底层复杂的这些构件把它隐藏起来
把封装成一个我们简单易用的接口 对用户暴露出的就只有方向盘啊 刹车 油门 这些用户能够理解的简单易用的接口
但是用户不需要再关心它底层到底是怎么实现转向加速 减速这些功能的
所以 其实操作系统做的事情本质上和这种封装没有任何的区别 那接下来我们来看一下操作系统
它屏蔽了底层硬件细节之后 它对上层提供了哪些方便应用的服务呢
首先来看一个我们最熟悉的操作系统提供的服务 叫做gui 又叫图形化用户接口
我们用户可以使用这些形象的图形界面来对我们的整个系统进行操作
比如说 在windows操作系统当中 如果我们要删除一个文件的话 只需要把文件拖拽到那个回收站即可
这种操作方式对于我们用户来说是很形象 很容易理解的 但是在我们这样一个简单的拖拽动作之后 操作系统其实在背后为我们做了很多很多的事情
那现代的操作系统一般都会对我们的上层用户提供这种图形化的这种
用户接口 不过一些早期的操作系统其实是并没有这种图形化的界面的 那早期的操作系统都是让用户通过命令接口的方式和操作系统进行交互
也就是用命令行的方式和操作系统进行交互 那命令接口又分为两种一种是联机命令接口 一种是脱机命令接口
我们先来看第一种联机命令接口
他又叫交互式的命令接口 我们来看一个直观的例子 如果使用的是windows操作系统的话 我们可以用这样的方式来打开命令解释器
也就是我们平时经常会看到的这个小黑框 然后我们可以在这个命令解释器当中输入一个命令 叫做time
那输入了time这个命令之后 操作系统他会告诉我们当前的时间是几点几分
接下来 操作系统又会让用户输入一个新的时间 也就说你想把系统时间调到几点几分几秒
那像这个time秘密就是一个很典型的交互式的秘密 也就是 我们用户说一句 然后系统会跟着做一句 接下来用户需要再说一句 然后系统才会跟着再做一句
整个过程我们用户和操作系统是在不断的交互的 那除了探命令之外 还有很多别的用于和操作系统交互的这种命令
由这些命令组成了所谓的交互式的命令接口 或者叫连接命令接口
那第二种命令接口叫做脱机命令接口 又叫批处理命令接口
还是 到操作系统为例
我们可以在c盘当中搜索一个一点b a t作为后缀的一个文件 然后随便打开其中的一个文件
可以看到里面有密密麻麻的一系列的命令 但别看他复杂 其实他本质上和我们刚才所看到的time命令没有任何区别 我们只不过是
把这一系列的命令把它罗列在了这样的一个清单里 然后当我们执行这个点 bt文件的时候
操作系统其实就是根据这个文件当中的这些命令一条一条的往后执行
也就说 我们使用这种拖机命令接口 或者叫p处理命令接口和操作系统进行交互的话
那么我们其实是一次提出一堆的请求 然后操作系统会根据我们的指示
一条一条的执行这一堆的请求 所以这也是为什么这种命令接口称作为批处理命令接口的原因
那这就是操作系统对上层提供的两种命令接口 那刚才我们提到的三种接口
gui连接命令接口和拖机命令接口都是可以让普通用户直接使用的
那操作系统还有一种对外提供的接口 叫做程序接口 这种接口它是给我们程序员使用的
我们可以在我们写的程序当中啊通过系统调用的方式来使用程序接口
注意 普通用户是不能直接使用程序接口的 我们只能通过编写程序代码的方式来间接的使用这个程序接口
那我们用一个例子来帮助大家加深理解什么叫系统调用 什么叫程序接口 在我们写c语言的程序的时候
我们会使用到printf这个函数 然后在执行这个程序的时候 会在我们的电脑屏幕上打印出
这两个单词 虽然我们只是简单的调用了print f函数 但是其实这个函数在底层实现的时候肯定是使用到了操作系统
提供的和显示相关的那些系统调用的功能 也就说我们普通程序员其实使用了c语言提供的酷函数 也就是print f这个函数
而这个库函数在底层实现的时候 其实是使用了操作系统提供的系统调用的功能
而操作系统在收到这个系统调用相关的请求之后 他才会替我们去操作这个硬件 也就是显示器 并且在这个显示器上面显示出helloword的这两个单词
所以其实这个系统调用很类似于我们很熟悉的这种函数调用 那很多操作系统当中都提供了上百种的系统调用
由这些系统调用组成了所谓的程序接口 我们的应用程序请求操作系统服务的唯一方式就是通过系统调用的方式
那这个地方有一个小细节 有的教材当中系统调用又会被称为广义指令 所以这个术语大家也稍微注意一下
好了 这个部分我们讲了很多内容操作系统 它向上层提供了很多方便应用的服务
有的接口是直接给用户使用的 比如说g u i和命令接口 而有的接口是给软件 或者说给程序员使用的
比如说程序接口 那讲到这里 我们就可以理解为什么用户和操作系统中间有一段相接的
部分了 因为用户通过这些方式可以直接的来和操作系统进行交互
而应用程序呢需要通过系统调用的方式 也就是通过程序接口来和操作系统进行交互
那联机命令接口和拖机命令接口的区别大家也需要注意 有可能在选择题当中进行考察 联机命令接口或者叫交互式命令接口 是用户说一句
系统做一句 而拖机命令接口或者叫批处理命令接口是用户说一堆 然后系统跟着做一堆
另外 在有的教材当中会把命令接口和程序接口统称为用户接口
也就是说 狭义的用户接口其实不包含g u i 这点大家稍微注意一下 接下来我们来看这个小节最后一个内容
操作系统 它作为最接近硬件的这个层次所需要做的事情就是要实现对硬件机器的拓展
如果一个计算机当中没有任何的软件支持 那这种计算机就称之为裸机
而如果我们在裸机上安装了操作系统的话 就可以把裸机改造成功能更强 使用更方便的机器
我们会把覆盖的软件的这种机器称为拓充机器 或者称为虚拟机 当然这些只是
一些无关紧要的概念对于我们来说 更重要的事情是要理解为什么说操作系统可以实现对硬件机器的拓展
那为了理解这个特点 我们还是用刚才汽车的例子来进行类比
比如说我们汽车当中原本只有一些零碎的一些硬件 比如发动机 其实它只有一个功能 就是会转
然后轮胎 它也只有一个功能 就是会滚 但是如果我们在这种原始的硬件机器上再覆盖上一层传动系统的话
我们就可以让发动机来带动着轮子来转 这样的话 我们的汽车就可以开始往前行走了
所以增加了这样的一个系统之后 我们以前的这些简单的硬件机器就得到了一种功能上的拓展
而我们的操作系统对硬件机器的拓展也是类似的 操作系统把cpu 内存等等这一系列的硬件合理的组织起来
并且让这些硬件能够相互协调配合着工作 这样的话这些简单的硬件就可以组合起来 实现更多更复杂的功能
所以说 操作系统 它实现了对这些硬件机器功能的一个拓展 使这些单纯的硬件功能更强 使用更方便
好的 那么在这个小节当中 我们用了很多例子 帮助大家感性的认识了什么是操作系统 操作系统需要实现一些什么样的功能
那操作系统这门课最关注的是它作为系统资源的管理者所需要实现的这些功能
这些功能应该怎么实现 怎么设计 这是我们之后的课程当中会重点会详细讲解的
而这个小节当中有可能会作为选择题进行考察的是操作系统 它对上层提供了哪些服务
大家要理解什么是g u i 什么是命令接口 连击命令接口和脱击命令接口的区别是什么
另外 由一系列的系统调用组成了程序接口系统 调用这个概念会在后面专门用一个小节再进行更进一步的分析和讲解
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习