当前位置: 首页 > news >正文

1.1.1+1.1.3 操作系统的概念、功能

首先来看一下大家都熟悉的操作系统都有哪些,对于一些手头比较宽裕的同学来说可能会比较喜欢苹果的设备,比如说苹果的电脑使用的操作系统是MacOS,苹果的手机使用的是IOS系统,但是对于我自己来说,比起苹果的浮夸,我还是比较喜欢安卓和Windows操作系统质朴的优雅。对于普通老百姓来说,可能百分之九十九的人都在使用这几种操作系统,对于技术专业的同学来说,Linux操作系统也是我们必须学习使用的一个操作系统。另外,现在可能还会有一些野人还在使用诺基亚的塞班系统。可以看到我们其实在学习这门课之前,已经积累了很多关于操作系统的这种体验,感性的经验。因此我们在学习这门课的时候我们可以用自己平时使用操作系统的经验,来结合我们学习到的一些知识点进行思考,这样可以帮助大家更好的理解课程的内容,并且把操作系统知识和我们的现实生活给连接起来,做到学以致用。

在这个小节中我们只介绍操作系统的一些最基础的概念和定义,并且会结合一些例子来加深大家的理解。操作系统的概念和定义要回答的就是什么是操作系统这样一个问题,它的功能和目标要回答的是操作系统需要做什么这样的一个问题。

首先来看第一个部分内容,操作系统的概念和定义。首先我们来结合生活经验看一下操作系统在整个计算机体系当中所处的位置和角色,我们现在所使用的电脑是怎么样一步一步变成我们现在看到的样子的。第一步厂家会把CPU主板等等一系列的硬件给组装成一台裸机,所谓的裸机就是只有硬件的机器不包含操作系统,但是在这个机器出售之前一般这个厂家还会在这个裸机的基础之上,为我们安装一个操作系统,比如说最常用的就是Windows的操作系统,当我们买到这个电脑之后,就可以在这个操作系统之上来安装一些我们想要使用的应用程序,比如说QQ,之后我们作为用户就可以来使用这些应用程序了,所以我们根据一台电脑的诞生过程,就可以看出计算机系统的层次结构,最底层的当然是纯硬件又称之为裸机,在裸机上面会安装一层操作系统,而基于操作系统我们又可以安装一系列的应用软件,用户是处于最上面一层,这个地方细心的同学可能会发现用户和操作系统的边界是有一些相连的部分,应用程序和操作系统也会有一些相连的部分,这个问题我们一会儿会进行进一步的解释。在了解了操作系统在整个计算机系统当中所处的位置之后,我们来给出操作系统的定义。

这是王道书上给出的定义,操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理的组织调度计算机的工作和资源的分配;其实这句话想表达的无非就是操作系统是系统资源的一个管理者,是一个这样的角色,系统资源包含了硬件和软件资源。我们来看一个直观的例子,如果大家使用的是Windows 操作系统的话,可以用上图这种方式来打开任务管理器,然后在任务管理器界面,我们就可以看到现在系统当中正在运行的进程有哪些,所谓的进程其实就是正在运行的软件,正在运行的程序,比如说大家熟悉的QQ、Google Chrome等等,左边可以看到操作系统在对软件资源进行管理,再看右边界面,可以看到操作系统对CPU、内存等等这一系列硬件资源的使用情况也是在监控的,比如说现在QQ这个进程它使用了138.9兆字节的内存空间,所以从右半部分的界面来看,操作系统它肯定是在对硬件进行管理的。因此操作系统它作为软件和硬件中间的一个层次,它是系统资源的管理者,既管理了软件资源也管理了硬件资源。再来看第二句话操作系统它要提供给用户和其他软件方便的接口和环境,其实这句话想表达的就是操作系统它要向上层提供方便易用的服务,上层包括用户和普通的应用程序,再来看第三句话,操作系统它是计算机系统当中最基本的系统软件,也就是说操作系统它其实是一种软件而不是硬件,但是从最右边图当中也可以看到操作系统它是最接近硬件的一层软件,接下来对操作系统的圈1到圈3三个功能进行进一步的细分和分析,让大家更形象的体会操作系统的作用。

首先要看的是操作系统它作为软件和硬件中间的层次,它是系统资源的管理者,用大家使用QQ和朋友视频聊天的例子帮助理解它作为系统资源的管理者要做什么事情。首先我们肯定是需要在文件夹当中找到QQ的安装位置,比如说像我的电脑当中,我的QQ就是安装在了D盘的一系列的路径下面,所以当找到QQ的这个启动程序之后,就可以双击打开QQ.exe,当双击之后,QQ程序就可以正常的运行,然后就可以用QQ和朋友进行视频聊天了,在这个过程当中我们可以看到,第一步我们是通过一层一层的文件夹目录来找到了我们的QQ启动程序,除了这个文件之外,系统当中还有各式各样的其他的文件,这些文件的组织和管理其实是操作系统在帮我们完成的,所以这就涉及到了操作系统它作为系统资源的管理者,所要提供的一个功能叫做文件管理的功能,第二步当我们双击QQ.exe的时候,程序就可以开始正常的运行,在这个地方我们需要补充一个知识点,就是我们的一个程序在执行之前其实是需要把这个程序的数据放到内存里的,所以在我们双击打开QQ.exe的时候,其实在背后操作系统帮我们做了一个很重要的事情,就是把这个程序的数据从我们的磁盘放入了内存当中,并且这些数据要放到内存中的什么位置,这些都是操作系统在帮我们完成的,所以这一步就涉及到了操作系统所要提供的第二个功能,叫做存储器管理或者叫主存管理、内存管理,当QQ程序运行的过程当中,是需要被处理机也就是CPU进行处理的,什么时候给QQ程序分配处理机资源,这个事情是操作系统在背后替我们完成的。因此这就涉及到了第三个功能叫做处理机管理,而第四步我们开始使用QQ程序和朋友视频聊天,在视频聊天的过程当中肯定需要把摄像头这个设备分配给QQ程序使用,因此像摄像头这一类设备资源也是要由操作系统替我们管理,由操作系统来决定应该要把设备分配给哪个程序使用,所以这就涉及到了操作系统要提供的第四个功能叫做设备管理。王道书的第二章讲的其实就是处理机管理,而第三章讲的是存储器管理,第四章讲的是文件管理,第五章讲的是设备管理。所以操作系统这门课在后期我们要重点学习的就是它作为系统资源的管理者,要如何设计和实现处理机管理、存储器管理、文件管理、设备管理这些功能。对于各个部分的理解大家会随着之后的学习不断的深入,这儿就暂且不展开,在这个地方大家只需要建立一个全局观就可以。这是第一部分操作系统它作为系统资源的管理者所需要实现的一些事情。

第二部分我们来看一下操作系统它要向上层提供方便易用的服务,这是什么意思呢?通过刚才的分析我们知道,计算机的最底层其实是裸机,也就是纯硬件,最底层的这些硬件其实它只能听得懂二进制指令,也就是机器语言,就是说如果要直接和这些硬件打交道的话,只能通过二进制的语言和这些硬件进行交互,所以我们说最底层的这些硬件它对外暴露的其实是一些丑陋的、不友好的交互接口,正常的人类很难和这些纯硬件直接来打交道,但是在硬件之上安装的操作系统会向它的上层提供一种更美丽、更友好的交互接口,在安装了操作系统之后,我们的用户和应用程序不需要直接和硬件打交道,我们只需要告诉操作系统我们想要得到的服务就可以,而操作系统会把用户的这些命令需求翻译成二进制来告诉硬件,然后由硬件来执行我们想要的这些操作,这其实是一个很典型的封装的思想,操作系统把一些丑陋的硬件功能封装成了一些简单易用的服务,使用户能够更方便的使用计算机,上层的用户不需要再关心底层的硬件细节,而只需要对操作系统发出命令就可以,剩下的操作系统会替我们来完成。其实这种封装思想在我们日常生活中也经常被使用,比如说我们的汽车如果把它拆解了的话,会发现它里面有很多很复杂的构件,但是汽车设计师们会把这些底层复杂的构件隐藏起来,封装成一个简单易用的接口,对用户暴露出的就只有方向盘、刹车、油门
这些用户能够理解的简单易用的接口,但是用户不需要再关心它底层到底是怎么实现转向、加速、减速这些功能的,所以其实操作系统做的事情本质上和这种封装没有任何的区别。

接下来我们来看一下操作系统屏蔽了底层硬件细节之后,对上层提供了哪些方便易用的服务呢?首先来看一个我们最熟悉的操作系统提供的服务,叫做GUI,又叫图形化用户接口,用户可以使用上图这些形象的图形界面,来对整个系统进行操作,比如说在Windows操作系统当中,如果我们要删除一个文件的话只需要把文件拖拽到回收站即可,这种操作方式对于我们用户来说是很形象、很容易理解的,但是在这样一个简单的拖拽动作之后,操作系统其实在背后做了很多很多的事情。现代的操作系统一般都会对上层用户提供图形化的用户接口。

不过一些早期的操作系统并没有这种图形化界面的,早期的操作系统都是让用户通过命令接口的方式和操作系统进行交互,也就是用命令行的方式和操作系统进行交互,命令接口又分为两种,一种是联机命令接口,一种是脱机命令接口。我们先来看第一种联机命令接口,它又叫交互式的命令接口,我们来看一个直观的例子,如果使用的是Windows操作系统的话,我们可以用上图的方式来打开命令解释器,也就是我们平时经常会看到的小黑框,然后我们可以在命令解释器当中输入一个命令叫做time,输入time这个命令之后,操作系统会告诉我们当前的时间是几点几分,接下来操作系统又会让用户输入一个新的时间,也就是说想把系统时间调到几点几分几秒,像time命令就是一个很典型的交互式的命令,也就是用户说一句,系统会跟着做一句,接下来用户需要再说一句,然后系统才会跟着再做一句,整个过程用户和操作系统是在不断的交互的。除了time命令之外,还有很多别的用于和操作系统交互的命令,由这些命令组成了所谓的交互式的命令接口,或者叫联机命令接口。

第二种命令接口叫做脱机命令接口,又叫批处理命令接口。还是以Windows操作系统为例,我们可以在C盘当中搜索以.bat作为后缀的文件,然后随便打开其中的一个文件,可以看到里面有密密麻麻的一系列的命令,但别看它复杂,其实本质上和我们刚才所看到的time命令没有任何区别,我们只不过是把这一系列的命令罗列在了这样一个清单里,然后当我们执行.bat文件的时候操作系统其实就是根据这个文件当中的这些命令,一条一条的往后执行,也就是说我们使用这种脱机命令接
口或者叫批处理命令接口,和操作系统进行交互的话,我们其实是一次提出一堆的请求,然后操作系统会根据我们的指示一条一条的执行这一堆的请求,所以这也是为什么这种命令接口称作为批处理命令接口的原因。这就是操作系统对上层提供的两种命令接口。刚才我们提到的三种接口GUI、联机命令接口和脱机命令接口,都是可以让普通用户直接使用的。

操作系统还有一种对外提供的接口叫做程序接口,这种接口它是给程序员使用的,可以在我们写的程序当中通过系统调用的方式来使用程序接口,注意普通用户是不能直接使用程序接口的,我们只能通过编写程序代码的方式来间接的使用程序接口。我们用一个例子来帮助大家加深理解什么叫系统调用,什么叫程序接口。在我们写C语言的Hello world程序的时候,我们会使用到printf这个函数,然后在执行这个程序的时候会在我们的电脑屏幕上打印出Hello world 这两个单词。虽然我们只是简单的调用了printf函数,但是这个函数在底层实现的时候肯定是使用到了操作系统提供的和显示相关的系统调用的功能,也就说普通程序员使用了C语言提供的库函数,也就是printf这个函数,而这个库函数在底层实现的时候其实是使用了操作系统提供的系统调用的功能,而操作系统在收到系统调用相关的请求之后,才会替我们去操作这个硬件,也就是显示器,并且在显示器上面,显示出Hello world这两个单词。所以系统调用很类似于函数调用,很多操作系统当中都提供了上百种的系统调用,由这些系统调用组成了程序接口,应用程序请求操作系统服务的唯一方式就是通过系统调用的方式。这个地方有一个小细节,有的教材当中系统调用又会被称为广义指令,所以这个术语大家也稍微注意一下。

这个部分我们讲了很多内容,操作系统向上层提供了很多方便易用的服务,有的接口是直接给用户使用的,比如说GUI和命令接口,而有的接口是给软件或者说给程序员使用的,比如说程序接口,
讲到这里我们就可以理解为什么用户和操作系统中间有一段相接的部分了,因为用户通过GUI和命令接口这些方式,直接的和操作系统进行交互,而应用程序需要通过系统调用的方式,也就是通过程序接口来和操作系统进行交互。联机命令接口和脱机命令接口的区别大家也需要注意,有可能在选择题当中进行考察,联机命令接口或者叫交互式命令接口是用户说一句,系统做一句,而脱机命令接口或者叫批处理命令接口是用户说一堆,然后系统跟着做一堆。在有的教材当中会把命令接口和程序接口统称为用户接口,也就是说狭义的用户接口其实不包含GUI,这点大家稍微注意一下。

接下来来看这个小节最后一个内容。操作系统它作为最接近硬件的层次,所需要做的事情就是要实现对硬件机器的拓展,如果一个计算机当中没有任何的软件支持,这种计算机就称之为裸机,如果我们在裸机上安装了操作系统的话,就可以把裸机改造成功能更强、使用更方便的机器,我们会把覆盖软件的这种机器称为扩充机器或者称为虚拟机,当然这些只是一些无关紧要的概念。对于我们来说,更重要的事情是要理解为什么操作系统可以实现对硬件机器的拓展。为了理解这个特点,还是用刚才汽车的例子来进行类比。比如说汽车当中原本只有一些零碎的硬件,比如发动机,它只有一个功能就是会转,轮胎它也只有一个功能就是会滚,但是如果我们在这种原始的硬件机器上再覆盖上一层传动系统的话,我们就可以让发动机来带动着轮子转,这样的话汽车就可以开始往前行走了。所以增加了这样系统之后,以前的简单的硬件机器就得到了功能上的拓展,而我们的操作系统对硬件机器的拓展也是类似的,操作系统把CPU、内存等等这一系列的硬件合理的组织起来,并且让这些硬件能够相互协调配合着工作,这样的话,这些简单的硬件就可以组合起来实现更多、更复杂的功能,所以说操作系统实现了对硬件机器功能的拓展,使单纯的硬件功能更强、使用更方便。 

在这个小节当中用了很多例子帮助大家感性的认识什么是操作系统,操作系统需要实现什么样的功能。操作系统这门课最关注的是它作为系统资源的管理者所需要实现的处理机管理、存储器管理、文件管理、设备管理这些功能。这些功能应该怎么实现、怎么设计是我们之后的课程当中会重点详细讲解的,这个小节当中有可能会作为选择题进行考察的是操作系统对上层提供了哪些服务。大家要理解什么是GUI,什么是命令接口,连接命令接口和脱机命令接口的区别是什么。另外由一系列的系统调用组成了程序接口,系统调用这个概念会在后面专门用一个小节进行更进一步的分析和讲解。

以上就是这个小节的全部内容。

http://www.lryc.cn/news/586957.html

相关文章:

  • 新手向:使用Python构建高效的日志处理系统
  • 深入理解Java中的hashCode方法
  • 磁悬浮轴承控制全攻略:从原理到实战案例深度解析
  • Python自动化:每日销售数据可视化
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十二课——图像增强的FPGA实现
  • java+vue+SpringBoo中小型制造企业质量管理系统(程序+数据库+报告+部署教程+答辩指导)
  • Git Commit Message写错后如何修改?已Push的提交如何安全修复?
  • NoSQL 介绍
  • 前端-CSS-day3
  • 20250713-`Seaborn.pairplot` 的使用注意事项
  • Spring Boot 安全登录系统:前后端分离实现
  • [Subtitle Edit] 语言文件管理.xml | 测试框架(VSTest) | 构建流程(MSBuild) | AppVeyor(CI/CD)
  • Augment AI 0.502.0版本深度解析:Task、Guidelines、Memory三大核心功能实战指南
  • 海豚远程控制APP:随时随地,轻松掌控手机
  • iOS高级开发工程师面试——关于优化
  • DMDIS文件到数据库
  • 基于springboot的大学公文收发管理系统
  • 求解线性规划模型最优解
  • 跨域中间件通俗理解
  • 【QT】使用QSS进行界面美化
  • 005_提示工程与工具使用
  • 用Python实现一个Windows计算器练习
  • 011_视觉能力与图像处理
  • sklearn study notes[1]
  • Linux内核高效之道:Slab分配器与task_struct缓存管理
  • 基于Leaflet调用天地图在线API的多层级地名检索实战
  • Matlab批量转换1km降水数据为tiff格式
  • Java性能优化权威指南-JVM概述和监控调优
  • [特殊字符] Python自动化办公 | 3步实现Excel数据清洗与可视化,效率提升300%
  • 技术实现、行业变革及可视化呈现角度,系统性解析AI技术(特别是模型训练平台)