操作系统的概念
导言
大家好,很高兴又和大家见面了!!!
在今天的内容中,我们将开启计算机学习的一个新的章节——操作系统(Operating System, OS)。
在操作系统中,更偏重的是理论知识的学习,相比于数据结构而言,这一块内容的学习并不会涉及到太多的实操练习。要学好操作系统,最重要的还是理解记忆各个知识点。在计算机的理论知识学习中,如果只靠死记硬背的话,我个人认为这个难度还是挺大的。所以为了更好的理解吸收这些理论知识点,我会尽可能采用图文结合、联想等方式来进行学习。
【操作系统】博客专栏同样也是属于我自己的一份学习笔记,相关知识点的学习内容来自于【王道考研系列】丛书中的操作系统,如果有正在学习相关内容的朋友,咱们可以私下交流一下,成为对方的学习搭子。
接下来我们就要开始进入第一章节的内容——计算机系统概述。在这个篇章中,我们将学习以下知识点:
- 操作系统的基本概念
- 操作系统的发展历程
- 操作系统的运行环境
- 操作系统结构
- 操作系统引导
- 虚拟机
我们将在学习这些内容的过程中构建起操作系统学习的一个初步框架。在今天的内容中我们将学习操作系统的基本概念,作为操作系统的开篇内容,我们首先需要认识操作系统,因此在今天的内容中会解决两个问题:
- 什么是操作系统?
- 操作系统需要做些什么?
大家现在是不是和我一样有点迫不及待了呢?那么接下来我们就来正式进入操作系统的世界吧!
一、日常生活中的操作系统
在现在的信息化时代,绝大部分的人都会接触手机和电脑。我们在使用手机时会经常性的提到 IOS 系统和 Android 系统以及现在华为手机上搭载的HarmonyOS;而对更倾向于使用电脑的朋友则会经常提到MacOS、Windows;对于程序猿来说则会接触到Linux……这里咱们提到的这些系统,都被称为操作系统。
这么看来其实我们每天都会和操作系统打交道,操作系统可以说是最忠实的朋友,一直陪伴在我们的身边。不过很可惜之前我们并没有好好的了解咱们的这位朋友,接下来我们就来重新认识一下吧!
二、计算机系统层次结构
在计算机系统中,软件是计算机系统的灵魂,我们可以通过不同的软件进行不同的操作,如学习软件、交友软件、游戏软件等等,而作为软件核心的操作系统,已与现代计算机系统弥补可分、融为一体。计算机系统自下而上我们可以将其大致分为4个部分:
最底层的为硬件层。当我们组装一台电脑时,我们需要在机箱内安装电源、CPU、散热器、内存条、硬盘、显卡……之后我们还需要将主机与显示器、鼠标、键盘……进行连接,这些我们在生活中看得到摸得着的物件就是计算机的硬件。
与硬件紧密相连的就是操作系统。我们在安装好一台电脑后,接下来我们就可以根据自己的需求给电脑安装相应的操作系统了。
在操作系统的上层就是软件。我们安装好操作系统后,想要上网,我们需要下载浏览器;想要看视频,我们需要下载视频软件;想要跟好朋友聊天,我们可以安装交友软件;想要娱乐放松,我们还能安装游戏软件。根据我们自己的需求,我们可以在电脑上下载各式各样的软件。
在软件的上层则是用户了。在计算机上,用户是和软件进行直接交互的,我们会根据自己的需求来运行对应的软件。而对于程序猿来说,他们有时还需要直接与操作系统进行交互。
说到这里,不知道大家是否和我一样对操作系统更加好奇了。接下来我们就来看一下操作系统的定义;
三、操作系统的定义
操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件与软件资源,合理的组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统时计算机系统中最基本的软件系统。
从这个定义中,我们可以提炼出来以下几点:
- 操作系统是用来控制和管理计算机资源的;
- 操作系统能够组织、调度计算机的工作与资源的分配;
- 操作系统能够给用户和其他软件提供方便接口与环境;
- 操作系统时最基本的软件系统;
从提炼出的这四点信息中,对于前面的三点,现在我们好像还不能很好的理解它的含义,而第四点很直观的告诉我们一个信息——操作系统是一个软件系统。也就是说操作系统和我们电脑上安装的各种各样的软件一样,它同样也是一个软件,不过相比于其它的软件来说,它是电脑上最基础的一个软件。因此现在我们对操作系统有了第一个认识——它是一个软件系统。
下面我们来看看前面的三点是想向我们传达什么样的信息;
3.1 控制和管理计算机资源
什么是计算机资源?这是我对这一点的第一个疑问,于是我查阅了百度百科,在百度百科中对计算机资源给出的解释是:
- 计算资源 (resource on the computation)计算复杂性理论的一个术语。
- 在IT行业,计算资源一般指计算机程序运行时所需的CPU资源、内存资源、硬盘资源和网络资源。
原来计算机资源指的是CPU、内存、硬盘以及网络。那我们如何来观察这些资源呢?
如果大家和我一样使用的是Windows操作系统的话,那我们可以通过CTRL ALT DEL来打开任务管理器,至于使用MACOS的朋友,则可以使用Command Option Escape来打开任务管理器,另外,也可以按下shift command A键来打开任务管理器。
在任务管理器界面我们可以看到这里对计算机资源的使用情况进行了统计,而完成这项工作的对象就是计算机上安装的操作系统。在计算机系统层次结构中我们也介绍过了,这些计算机资源实际上指的就是硬件资源,现在我们再来看一下这个层次图:
从图中我们可以更直观的看到,操作系统是用来控制和管理计算机资源这句话实际上表达的意思就是操作系统对下进行的是控制与管理的工作。至于如何进行控制和管理在后面我们会继续学习。
3.2 组织、调度计算机的工作与资源的分配
有了对第一句话的理解,我们知道了操作系统是可以控制和管理计算机资源的,那它是如何组织和调度计算机的工作与资源的分配的呢?这里我们还是看到任务管理器:
在任务管理器中我们可以看到此时我的电脑上运行了7个引用,现在我们主要看一下CAD和Chrome这两个软件它们分别在电脑中占用的CPU、内存、磁盘、网络、GPU这些信息。
因为我需要画图,所以启动了CAD,但我并未在CAD上进行大量的作图,因此操作系统给CAD分配的内存是134.1MB;而我现在是在进行博客的编写并打开了一些其它的网页,对于计算机而言,此时主要运行的就是Chrome,因此操作系统为其分配了大量的内存空间。
对这些应用而言,从CPU的使用情况我们可以看到,操作系统并不会将打开的所有应用都分配CPU的资源,对于长时间未被使用的应用,或者使用频率低下的应用,操作系统则是将其搁置在一旁,而对长时间工作的应用,则会分配相应的资源来保证它的正常运行。因此,操作系统对软件同样也会进行相应的控制和管理。
要是我们能够观察一下任务管理器一段时间,我们会发现这些资源的分配并不是固定的,而是时刻在变化的,从这个现象可以说明操作系统对软件与计算机资源不仅仅是控制和管理,它还会根对相应的工作进行合理的组织和调度并对这些工作进行计算机资源的分配。
因此我们可以得到一个结论:
- 操作系统对与硬件和软件来说,它是一位管理者,它的任务是来组织和调度软件的工作,并对这些工作进行计算机资源的分配。
我们如果再来看层次图的话,则可以得到下图:
通过层次图我们可以更直观的看到操作系统作为连接硬件和软件的管理者,它所执行的工作。
3.3 给用户和其他软件提供方便接口与环境
要理解这句话,我们首先需要简单了解一下计算机组成原理的相关内容。计算机系统是由硬件系统和软件系统共同构成,这里的软件就是指的操作系统以及其它的软件,而硬件系统则是计算机系统中实际物理装置的总称。
对于计算机硬件而言,它并没有像我们使用计算机的过程中看到的内容这么智能,它在工作时只能机械的读取二进制的数据。早在计算机诞生之初,计算机是用来在战争中计算导弹轨道的。那时的计算机并没有操作系统,用户是直接与硬件进行交互的。因此人们只能将需要计算的数据手动转换成二进制序列,然后再将对应的信息传递给计算机硬件,计算机硬件才能开始正常运行。
而操作系统的诞生改变了这一局面,操作系统作为链接用户和硬件的桥梁,它主动承担起了将用户输入的数据转换成二进制的工作。有了操作系统后,用户和硬件之间的交互就变的更加方便了。同样的,在操作系统诞生后,一些搭载在操作系统上的具有各式各样功能的软件也随之诞生。因此,操作系统给用户和其他软件提供方便接口与环境。
从层次结构图中我们可以看到,不管是软件还是用户,都是位于操作系统上方的,也就是说操作系统对上的工作是帮助上层的软件和用户来和下层的硬件进行对接,它就像是一个将上下层联系起来的中间人,而对于软件而言,软件并不能直接在硬件上进行工作,它只能依附于操作系统提供的环境。
经过前面的探讨,我们已经对操作系统的定义有了一个初步的理解,下面我们就来用自己的语言来对什么是操作系统做个总结;
3.4 总结
- 操作系统对下层的硬件起到的是一个控制和管理其资源,并能够合理的组织和调度不同软件的工作并为其进行合理的硬件资源分配;
- 操作系统对上层的用户起到的是一个连接硬件的通道,上层的用户通过操作系统能够更加方便的与下层的硬件进行沟通,同时操作系统还对上层的软件提供了良好的工作环境,让不能直接在硬件上正常工作的软件能够正常工作;
- 操作系统在计算机系统中是一个最核心的软件系统。
如果我们将计算机系统这种层次结构看做是一个公司的层次结构的话,那我们就可以将用户比作董事长,软件则是经理,硬件则是基层员工,而操作系统则是处理协调这三方工作的组长。接下来我们通过这个形象的例子从三个方面来进一步加深对操作系统的理解;
- 操作系统处理硬件资源与软件工作:
从图中我们可以看到,操作系统在处理软件的各种工作时,它需要做的就是将各种工作进行合理的组织和调度,并将工作进一步传达给硬件;操作系统则会对其进行控制和管理,并合理的分配给各种工作;
- 操作系统处理用户指令
当用户想与硬件沟通时,此时用户下达的各种指令操作系统会将其简化处理成各种二进制序列,然后再将二进制序列传达给硬件,硬件介绍到这些二进制序列后,才会正常执行对应的工作;
- 操作系统处理软件工作:
当用户对软件下达工作时,软件并不能直接指向相应的工作,它还是只能通过硬件来执行,但是硬件并不会接收软件传递过来的工作信息,也就是说此时的软件无法直接在硬件上执行工作;但是对于操作系统而言,它是能够接收软件的工作信息,然后将对应的信息再传递给硬件,硬件才会去执行对应的工作,因此,软件想要在计算机系统中正常工作的话,是需要依赖于操作系统的。
现在我们知道了操作系统在计算机系统中它既是一位管理者又是一位中间人。它的管理主要体现在对计算机资源的管理,为了更好的管理计算机资源,它则需要对各个工作进行合理的组织和调度;而它作为中间人则主要体现在为用户和硬件之间的沟通提供一个更加方便的接口。现在我们需要解决一个问题——操作系统在作为管理者和中间人,它需要完成哪些目标以及它需要拥有哪些功能呢?
四、操作系统的目标和功能
4.1 作为管理者
为了给多道程序提供良好的运行环境,操作系统作为管理者,它需要对计算机的处理机、存储器、设备以及文件进行相应的管理。下面我们就来看一下操作系统对这些不同内容的管理分别需要做些什么;
4.1.1 处理机管理
在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的管理可归结为对进程的管理。并发是指在计算机内同时运行多个进程,因此进程合适创建、何时撤销、如何管理、如何避免冲突、合理共享就是进程管理的最主要的任务。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度。
4.1.2 存储器管理
存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
4.1.3 文件管理
计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统。文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
4.1.4 设备管理
设备管理的主要任务是完成用户的I/O请求(输入输出请求),方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。
看着这些文字,可能有部分朋友会觉得有点头疼,这都说的啥是啥呀?下面我们就来借助实际的例子来理解这些功能。
4.1.5 对管理者的理解
首先是进程管理,这里我们还是看到任务管理器,如下图所示:
在我的电脑上可以看到此时我是有5个应用正在运行,在任务管理器中我们会发现在应用这一栏,正好是我在运行的这五个应用,并且在下方的后台进程中我们还能看到此时我的电脑上同时还有其他的程序也是在同步运行的。如果此时我将其中的某个应用关闭,又会发生什么现象呢?
可以随着我关闭了两个应用窗口后,此时正在运行的应用同样也去掉了被关闭的两个应用,而在后台进程这里我们会发现原先只有68个后台进程,此时却变成了85,也就是说刚刚关闭的应用窗口它此时正在后台运行。
这里我们就会得到一个结论,任务管理器对进程的管理是同步进行的。而这个任务管理器实际上就是我的电脑上搭载的Windows系统。
接下来我们来看一下操作系统对存储器的管理。这里同样是看到任务管理器:
我们此时看到内存这一栏,我的电脑现在对内存的使用率是69%,那如果我将其中一个应用给关闭又会如何呢?
可以看到,当我将Chrome关闭后此时的内存利用率变为了55%,这就说明了当我在运行Chrome的时候,操作系统为该应用分配了对应的空间,而当我关闭该应用后,此时分配给它的空间就被操作系统给回收了。因此操作系统时可以管理内存的分配与回收的。下面我们再来看看操作系统时如何进行文件管理的,这里我以打开存放博客图片的文件夹为例,如下图所示:
从图中可以看到我需要找到文件管理的图片时,我需要从此电脑开始按照文件夹存放的路径依次打开对应的文件夹,在找到对应的文件后,我们还能看到各个文件在内存空间中所占空间大小,而从左侧窗口我们可以看到在我的电脑上我可以访问的所有的文件夹。左侧的内容实际上就是我的电脑上的不同的目录,而文件上方的从此电脑开始的内容就是文件存储的路径,当我们点开文件的属性时我们还能看到我们可以对文件的详细信息:
从属性这一栏可以看到我们还能对文件进行读写的修改或者是显示与隐藏的修改。
文件的所占空间大小说明的是操作系统对文件存储空间的管理,而对读写的修改和显示与隐藏的修改则是在说明操作系统对文件读写的管理和对文件的保护,而我们看到的文件目录则是说明操作系统对文件目录的管理。
最后我再来看一下操作系统时如何对设备进行管理的。这里我举个最简单的例子,电脑的鼠标、键盘以及显示器,鼠标和键盘都属于电脑的输入设备,我们可以通过鼠标与键盘来进行不同内容的输入,就比如我现在写的博客就是通过键盘来进行文字的输入,而我们能看到我的博客内容则是显示器对这些输入内容的输出。
不管是输入还是输出,这实际上都是用户与硬件之间的沟通,而操作系统在这个过程中就需要对这些硬件设备进行管理,以确保每个硬件都能执行自己对应的功能,至于这些硬件是如何执行的这就不是我们现在需要关注的问题了。
现在大家应该对操作系统作为管理者需要执行的目标和功能已经有了一定的认识了,下面我们再来看看它作为中间人有需要执行哪些目标和功能;
4.2 作为中间人
为了让用户更加方便、快捷、可靠地操纵计算机硬件并运行自己的程序,操作系统还提供了用户接口。操作系统提供的接口主要分为两类:一类是命令接口,用户利用这些从挨揍命令来组织和控制作业的执行;另一类是程序接口,编程人员可以使用它们来请求操作系统服务。
下面我们来分别了解一下这两类接口;
4.2.1 命令接口
使用命令接口进行作业控制的主要方式有两种——联机控制与脱机控制。按照作业控制方式的不同,可将命令接口分为联机命令接口和脱机命令接口。
- 联机命令接口
联机命令接口又称交互式命令接口,适用于分时或实时系统的接口。它由一组键盘操作命令组成。用户通过控制台或中断输入操作指令,向系统提出各种服务要求。用户每输入一条命令,控制权就转给操作系统的命令解释程序,让后命令解释程序解释并执行输入的命令,完成指定的功能。之后,控制权转回控制台或终端,此时用户又可输入下一条命令。
- 脱机命令接口
脱机命令接口又称为批处理命令接口,适用于批处理系统,它是由一组作业控制命令组成。脱机用户不能直接干预作业的运行,而应实现用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统。系统调度到该作业时,右系统中的命令解释程序逐条解释执行作业说明书上的命令,从而间接的控制作业的运行。
光看这些文字概念可能大家没有什么感觉,现在我们通过几个例子来认识一下这两种命令接口。
如果大家是Windows系统的话我们可以通过WIN R来打开程序运行窗口,之后在运行窗口中输入cmd来打开Windows的控制台:
在这个控制台窗口中我们可以输入对应的指令来执行对应的操作。如我这里输入title指令,我们就能修改窗口的名称:
像上面这种通过在控制台中进行输入相关命令来执行对应操作的方式就是联机命令接口。当我们想打印多份文件时,我们可以在打印设备的界面看到下面的任务清单:
这些任务清单生成后并不再需要我们去进行处理,打印机会根据清单的内容逐一进行打印。像这种通过工作清单执行命令的方式就是脱机命令接口。
相信大家现在应该能够理解这两种命令接口了。王道书上给了一个更加形象的比喻:
- 联机命令接口:雇主(用户)说一句话,工人(操作系统)做一件事,雇主和工人在进行实时的交互;
- 脱机命令接口:雇主列一份工作清单,工人按照清单逐一完成工作,工人对这些工作进行批量处理;
了解了命令接口,下面我们再来看下什么是程序接口;
4.2.2 程序接口
- 程序接口
程序接口是由一组系统调用(也称广义指令)组成。用户通过在程序中使用这些系统调用来请求操作系统为器提供服务,如使用各种外部设备、申请分配和回收内存及其他各种要求。
- 图形接口(GUI)
当前最为流行的是图形用户界面(GUI),即图形接口。GUI最终是通过调用程序接口实现的,用户通过鼠标和键盘在图形界面上单击或使用快捷键,就能很方便地使用操作系统。严格来说,图形接口不是操作系统的一部分,但图形接口所调用的系统调用命令式操作系统的一部分。
程序接口我相信大家应该都很熟悉了,就比如我们在VS上通过C语言写了一段代码用来在屏幕上输出"HELLO WORLD!!!"
,这段代码就是一个小程序,而我们实现输出的方式就是通过调用printf
这个库函数。
而图形接口我们则是天天接触到,比如我的电脑桌面:
可以看到桌面上这些应用程序的图标就是一个一个的图形接口,我们可以直接通过鼠标或者键盘来对这些图标进行相应的操作,就比如大家非常熟悉的快捷键F5,它的作用就是用来刷新桌面。
相信大家现在对程序接口也有了一定的理解了,其实不管是命令接口也好,还是程序接口也好,这些接口都让我们能够更加方便的来与硬件进行相应的交互。
那是不是说操作系统只有以上这些目标和功能呢?其实对于操作系统而言,他还有一个十分重要的功能——作为扩充者,实现对计算机资源的扩充。什么意思呢?下面我们就来一起学习一下;
4.3 作为扩充者
对于计算机而言,没有任何软件支持的计算机称为裸机。它仅构成了计算机系统的物质基础,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。裸机在嘴里层,也就是硬件层,起外面就是操作系统。操作系统所提供的资源管理功能和方便用户的各种服务功能,将裸机改造成功能更强、使用更方便的机器;因此我们通常把覆盖了软件的机器称为扩充机器或虚拟机。
对于扩充者,我是这样理解的:
- 对于计算机的各个硬件而言,各个部分的功能是相互独立存在的,就比如键盘,它能够进行敲击;鼠标,能够进行滑动与点击;显示器,它能够显示内容;存储器,它能够存储数据。
- 当我们拿到一台裸机时,我们想要将这些功能组合起来以实现更多的功能实际上是非常困难的。就好比电饭煲,它的工作原理就是连通电源后电阻进行发热。如果仅仅是这样,那只会有一个结果,就是煮饭时一定会糊锅。但是我们现在使用的多功能电饭煲却能够做到煮饭、煮汤、煮粥……一系列不同的功能,那它是如何做到的呢?
- 实际上它是通过相关的程序来对电路进行控制的,当我们需要进行煮饭、煮汤、煮粥……不同的工作时,它们对电阻加热的时间、大小都是不一样的,而这个程序很好的通过控制电路来将单一的加热功能进行了扩充。
- 而裸机也是一样,它的不同的硬件实现的功能是单一的,当我们在裸机上安装操作系统后,原本这些单一的功能通过操作系统的控制,进而实现了更强大的功能,就比如键盘原本只能进行敲击,但是在操作系统的控制下它能够跟显示器联合起来进行文字的输入与输出;而鼠标原本只能进行滑动与 点击,但是在操作系统的控制下它能够与现实器联合起来实现界面的滑动与选择;存储器原本只能进行存储数据,但是在操作系统的控制下,它可以做到对数据的存储与删除……
- 以上这些例子都是在说明操作系统将原本的裸机改造成了功能更强、更发方便的机器。
现在我们对操作系统的目标和功能就全部介绍完了,在这个内容中,我们需要重点关注的是操作系统作为管理者是如何来控制与管理计算机资源的,对于操作系统作为中间人与扩充者我们只需要对其有个印象能够理解即可。
结语
在今天的内容中我们可谓是收获满满啊。今天的内容主要介绍了两个点:
- 什么是操作系统?
- 操作系统需要做什么?
在学习的过程中我们知道了操作系统在计算机系统中有三个身份:管理者、中间人与扩充者。
- 作为管理者的操作系统能够控制并管理计算机资源;
- 作为中间人的操作系统能够给用户提供与硬件进行沟通的接口;
- 作为扩充者的操作系统能够将硬件单一的功能扩充为更加强大的功能;
今天的内容到这里就全部结束了,希望大家通过今天的内容能够对操作系统有一个初步的理解,在下一篇内容中,我们将来聊一聊操作系统的特征。最后感谢各位朋友对博主的支持,如果喜欢博主的内容,还麻烦大家能够点赞、收藏加评论。咱们下一篇再见!!!