首先,我们通过现实生活的一个实例来对计算机系统的层次结构进行初步认识:
一台电脑的产生步骤:
1:买一台裸机
2:安装Windows操作系统
3:安装qq等应用软件
4:使用qq等应用软件
下图为计算机系统的层次结构:
操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调用计算机的工作和资源的的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的软件。
听过上述这些专业术语,相信大多数人和我第一次听到它的反应是相同的,除了懵逼,没有其他了。
下面我们用最直观的例子理解一下操作系统到底是什么?
打开Windows操作系统的“任务管理器”(快捷键:Ctrl+Alt+Del)
这些资源包括软件,硬件文件等。
如下图所示,操作系统和裸机以及应用程序之间便建立了联系。
那么它是如何对系统资源进行管理呢?
举一个生活中最常见的例子:
当我们使用微信和朋友进行视频通话这一过程,需要经历3以下几个步骤:
step1:在各个文件夹中找到微信安装的位置(逐层打开文件夹,找到WeChat.exe这个程序(可执行文件)的存放位置)
step2:双击打开微信.exe(此时操作系统将该程序的相关数据放入内存)
step3:微信程序正常运行(对应的进程被处理机(CPU)处理)
step4:即可开始和朋友进行视频通话(需要将摄像头设备分配给进程)
进程是一个程序执行的过程,执行前需要将该程序放到内存中,才能被CPU处理。
命令接口:允许用户直接使用
程序接口:允许用户通过程序间接使用
GUI:现代操作系统最流行的图形用户接口
首先来看用户接口:
系统调用=系统调用命令=广义指令
联机命令接口实例(Windows系统):联机命令接口=交互式命令接口
step1:win键+R
step2:输入cmd,按回车,打开命令解释器
step3:尝试使用time指令
脱机命令接口实例(Windows系统):脱机命令接口=批处理命令接口
使用Windows系统的搜索功能,搜索C盘中的*bat文件,用记事本任意打开一个。
程序接口:如C:\Windows\System32\user32.dll程序员在程序中调用user32.dll(该调用过程即为系统调用)即可实现创建窗口等功能,只能通过用户程序间接使用。
GUI:图形用户界面。用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令,参数。
例:在Windows操作系统中,删除一个文件夹只需要把文件“拖拽”到回收站即可。
需要提供的功能和目标:实现对硬件机器的拓展。
没有任何软件支持的计算机称为裸机,在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强,使用更方便的机器。
通常把覆盖了软件的机器称为扩充机器,又称之为虚拟机。
举个生活中的实例:
如果我们想要修建一座房子或者是一艘帆船,那么我们不仅需要原材料:锤子,锯子,钉子等等,还需要一名优秀的工匠,这里的原材料就相当于硬件,而优秀的工匠就相当于操作系统。
操作系统对硬件机器的拓展:通过优秀的工匠,这些简单的原料可以组织成房子,帆船…普通用户可直接使用工匠所提供的的成品,而不需要关注这些东西在底层是如何组织,工作的。
并发性和共享性是操作系统最基本的两个特征,二者互为存在条件。
此外还有虚拟和异步这两个其他特征。
指的是两个或多个事件在同一时间间隔内发生,这些事件宏观上是同时发生的,但在微观上是交替发生的。
还有一个和它比较容易混淆的名词—并行:指的是两个或多个事件在同一时刻同时发生。
同样,我们还是通过举例去认识这两个名词。
并发VS并行:
假设小渣和老渣每人都有两个女朋友,任务一:和一号约会,任务二:和二号约会。
理解了这两个概念之后,那么回归到我们的操作系统,操作系统的并发性即为计算机系统中同时存在着多个运行着的程序。
一个单核处理机(CPU)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替进行(这些程序微观上是交替执行的,但宏观上看起来就像在同时执行)
事实上,操作系统就是伴随着“多道程序技术”而出现的,因此操作系统和程序并发是一起诞生的。
当今的计算机,一般都是多核CPU,比如Intel的第八代i3处理器就是4核CPU,这意味着同一时刻可以有4个程序并行执行,但是操作系统的并发性依然必不可少,当代人使用计算机绝对有4个以上的程序需要同时工作。
举例:
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
所谓“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)。
举例:
互斥共享方式:使用QQ和微信视频,同一时间段内摄像头只能分配给其中一个进程。
同时共享方式:使用QQ发送文件A,同时使用微信发送文件B,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据,微观上看,两个进程是交替着访问硬盘的。
并发性是指计算机系统中,同时存在着多个运行着的程序,而共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。
那么我们上述提到的微信和QQ同时发送不同的文件这一实例,发送的这一行为是并发进行的,而访问硬盘资源这一行为是共享的。
由此,我们可得出它们之间的关系:
如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义,如果失去共享性,则QQ和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发。
虚拟是指把物理上的实体变成若干个逻辑上的对应物,物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
举例:
假设QQ需要2GB内存,微信也需要2GB内存,而浏览器和迅雷需要256MB的内存…
而此时我们的电脑内存只有4GB的大小。
当他们在我的电脑上同时运行,所需要的内存大小远大于4GB,为什么还可以正常运行?
原因即为:这是虚拟存储器技术,实际只有4GB的内存,在用户看来似乎远远大于4GB,实际是采用了虚拟技术中的“空分复用技术”。
插播一条冷知识:一个程序需要放入内存并给它分配CPU才能执行。
上面我们提到一个单核处理机(CPU)同一时刻只能执行一个程序,那么此时有一个单核CPU的计算机,该计算机用户打开了以下软件:
既然一个程序需要被分配CPU才能正常执行,那么为什么单核CPU的电脑中能同时运行这么多个程序呢?
原因即为:这是虚拟机处理技术,实际上只有一个单核CPU,在用户看来似乎有6个CPU在同时为自己服务,实际是采用了虚拟技术中的“时分复用技术”,微观上处理机在各个微小的时间段内交替着为各个进程服务。
异步是指:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
还是采用上述我们已经提到的例子,此时,老渣要和两个女孩并发约会。
1号女孩提出两个要求:
1:陪她吃饭
2:把心给她
2号女孩提出两个要求:
1:把心给她
2:陪她吃饭
那么可能出现的约会方法有:
与1号2号的约会,相当于对两个进程的处理,每个进程都有各自需要执行的指令。
老渣的心相当于有限的系统资源,由于可分配的资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,因为你并不知道老渣的心什么时候能够归还给自己,只有将心归还给老渣之后,才能够给另一个女孩,显然如果失去了并发性,则系统只能串行的处理各个进程,每个进程的执行会一贯到底,只有系统拥有并发性,才有可能导致异步性。
主要缺点:
用户独占全机,人机速度矛盾导致资源利用率极低
批处理阶段-------单道批处理阶段:
引入脱机输入/输出技术(用磁带完成),并监督程序负责控制作业的输入,输出。
单道批处理系统的优缺点:
主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
主要缺点:内存中仅能有一道程序运行,只有该程序运行结束后,才能调入下一道程序,CPU有大量的时间是在空闲等待I/O完成,资源利用率依然很低。
多道批处理系统:
主要优点:
多道程序并发执行,共享计算机资源,资源利用率大幅度提升,CPU和其他资源保持“忙碌”状态,系统吞吐量大。
主要缺点:
用户响应时间长,没有人机交互功能(用户提交自己的作业后就只能等待计算机处理完成,中间不能控制自己作业的执行)
假设计算机需要处理三个作业:
作业一:输入一秒,计算一秒,输出一秒
作业二:输入一秒,计算一秒,输出一秒
作业三:输入一秒,计算一秒,输出一秒
若采用多道批处理技术:
计算机以时间片为单位轮流为各个用户或者作业服务,一个用户可通过终端与算机进行交互。
主要优点:用户请求可以立即被响应,解决了人机交互问题,允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
主要缺点:不能优先处理一些紧急任务操作系统,对各个用户或作业都是完全公平的,循环的为每个用户作业服务一个时间片,不区分任务的紧急性。
主要优点,能够优先享用一些紧急任务,某些紧急任务不需要时间片排队。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时间线内处理完事件,实时操作系统的主要特点是及时性和可靠性。
网络操作系统是伴随着计算机网络的发展而诞生的,能够把网络中各个计算机有机的结合起来,实现数据传送等功能,实现网络中各种资源的共享,如文件共享和各台计算机之间的通信,如Windows NT就是一种典型的网络操作系统,网站服务器就可以使用。
分布式操作系统主要特点是分布性和并行性,系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由他们并行协同完成这个任务。
个人计算机操作系统如Windows XP,MacOS方便个人用。
“指令”和“代码”的区别:
简单的说,“指令”就是处理器(CPU)能识别,执行的最基本命令,例如:加法指令就是让CPU进行加法运算。
两种指令:
CPU如何判断当前是否可以执行特权指令?
两种处理器状态:
两种程序:
举例:
当我们安装完Windows操作系统后会发现操作系统提供了各种各样的功能,比如记事本,任务管理器,然而这些功能并不是必不可少的,即使没有任务管理器,我们仍然可以使用计算机。
内核是计算机上配置的底层软件,是操作系统最基本,最核心的部分,实现操作系统内核功能的那些程序就是内核程序。
大内核和微核:
类比:
操作系统的体系结构问题与企业管理问题很相似。
内核就是企业的管理层负责一些重要的工作,只有管理层才能够执行特权指令,普通员工只能执行非特权指令,用户态,核心态之间的切换相当于普通员工和管理层之间的工作交接。
大内核,企业初创时体量不大,管理层的人会负责大部分的事情,优点是效率高,缺点是组织结构混乱,难以维护。
微内核,随着企业体量越来越大,管理层只负责最核心的一些工作,优点是组织结构清晰,方便维护,缺点是效率低。