【操作系统篇】第一篇——计算机系统概述(上)

​前言

​概念

​功能

​系统资源的管理者

向上层提供方便易用的服务

​GUI

​命令接口

​程序接口

​作为最接近硬件的层次

​特征

 ​并发

 ​共享

 ​虚拟

 ​异步

​发展与分类

 ​手工操作阶段

 ​批处理阶段

 ​分时操作系统

 ​实时操作系统

​运行机制

 ​内核程序VS应用程序

 ​特权指令VS非特权指令

 ​内核态VS用户态

 ​内核态和用户态的切换

 ​操作系统内核

​中断和异常

 ​中断的作用

 ​中断的类型

 ​内中断(异常,例外)

 ​外中断(中断)

 ​中断机制的基本原理


前言

准备24考研的我,开始着手准备408,跟的课程是王道,我大致会按照操作系统,计算机网络,数据结构,计算机组成原理地顺利来进行更新,希望和大家一起学习,共同上岸!

在次之前我们需要先了解它们四个之间地大致关系,如下图所示:

概念

首先我们先来想一下,一台电脑诞生地流程:

Step1:厂家组装一台裸机(纯硬件:包含CPU,内存,硬盘等)

Step2:出售前安装操作系统(如:window10)

Step3:用户安装应用程序(eg:qq)

Step4:使用QQ聊天

概念:是指控制和管理整个计算机系统的硬件软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。

概括为以下三点:

1.操作系统是系统资源的管理者

2.是最接近硬件的一层软件

3.是向上层提供方便易用的服务

例子: 打开Windows操作系统的"任务管理器"

功能

系统资源的管理者

操作系统作为系统资源的管理者,它提供什么样的功能以供管理囊?这里举个简单的例子让大家更好的理解:

当我们用QQ和朋友视频聊天的时候:

Step1:在各个文件夹中找到QQ安装的位置(比如:D:/Tencent/QQ/Bin)

逐层打开文件夹,找到QQ.exe这个可执行文件的存放位置,这个就叫做文件管理。

Step2:双击打开QQ.exe

补充:在打开QQ之前,操作系统会把该程序放到内存中,这样才能被CPU处理。

这个把程序相关数据放入内存的,就是存储器管理。

Step3:QQ程序正常运行

对应的进程被处理机(CPU)处理,即处理机管理。

Step4:开始和朋友视频聊天

需要将摄像头设备分配给进程,即设备管理

通过上面的例子,可以总结出操作系统提供文件管理,存储器管理,处理机管理,设备管理四个功能,这里不做详细介绍,在后面章节一一说明.

 向上层提供方便易用的服务

如果没安装操作系统的话,我们知道裸机是纯硬件,只能听得懂二进制指令,如果要想何其交流,必须使用二进制,对用户来说是非常不友好的,使用成本太高,对外暴露了"丑陋",不友好的交互接口,这时在硬件之上安装操作系统,操作系统对外暴漏的是"美丽",友好的交互接口,用户不需要知道底层的原理,只要告诉操作系统需要什么服务,操作系统帮忙完成,这里其实用到的是一种封装思想,操作系统把一些硬件功能封装成简单易用的服务,使用户能更方便使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。

现在直接给用户使用的有GUI(图形用户界面),比如Windows,安卓的图形化操作界面,还有用户可以直接使用的命令接口。也有给软件/程序员使用的程序接口。

GUI

很多现代操作系统都提供GUI,即图形化用户接口,用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令,参数。

例如:在Windows操作系统中,删除一个文件只需要把文件"拖拽"到回收站即可。

命令接口

命令接口又分为联机命令接口和脱机命令接口。联机命令接口又叫做交互式命令接口,特点是用户说一句,系统跟着做一句。以Windows系统为例,如下:

Step1:WIN+R

Step2:输入cmd,按回车,打开命令解释器

Step3:尝试使用time命令。

脱机命令接口又称批处理命令接口,特点是用户说一堆,系统跟着做一堆,使用windows系统的搜索功能,搜索C盘中的*.bat文件,用记事本任意打开一个。

程序接口

可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。例如:写C语言"hello world"程序时,在printf函数的底层就使用到了操作系统提供的显式相关的"系统调用"。

 操作系统向上层提供了方便易用的服务,有直接给用户使用的GUI,命令接口,也有给软件/程序员使用的程序接口。

作为最接近硬件的层次

没有任何软件支持的软件我们称为裸机,在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强,使用更方便的机器。

通常把覆盖了软件的机器称为扩充机器,又称为虚拟机。

类比汽车:
发动机 —— 只会转;轮胎 —— 只会滚;
在原始的硬件机器上覆盖一层传动系统 —— 让发动机带着轮子转 —— 使原始的硬件机器得到拓展
操作系统对硬件机器的拓展:将 CPU 、内存、磁盘、显示器、键盘等硬件合理地组织起来,让各种硬件
能够相互协调配合,实现更多更复杂的功能
普通用户无需关心这些硬件在底层是怎么组织起来工作的,只需直接使用操作系统提供的接口即可。

特征

 并发

概念:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。

常考易混概念--并行:指两个或多个事件在同一时刻同时发生。

操作系统的并发性指计算机系统中"同时"运行着多个程序,这些程序宏观上看是同时运行的,而围观上看是交替运行的。

操作系统就是伴随着"多道程序技术"而出现的。因此,操作系统和程序并发是一起诞生的

注意(重要考点):

单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。

多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。

注意:即使对于4核CPUC来说,只要有4个以上地程序需要"同时"运行,那么并发性依然是必不可少地,因此并发性是操作系统一个最基本的特性

并行和并发对比

例子:假设小渣和老渣每个人都有两个女朋友。小渣和一号,二号同时约会,老渣则是选择分时间段。

这里的小渣就是并行约会:同一时刻同时进行两个约会任务;老渣是并发约会:宏观上,这一天老渣在同时进行两个约会任务。微观上,在某一时刻,老渣最多正在进行一个约会任务。

 共享

概念:共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

资源共享方式:1.互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。2.同时共享方式:系统中的某些资源,允许一个时间段内由多个进程"同时"对它们进行访问。

所谓的"同时"往往是宏观的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)

生活实例:

互斥共享方式:使用QQ和微信视频。同一时间段内摄像头只能分配给其中一个进程。

同时共享方式:使用QQ发送文件A,同时使用微信发送文件B.宏观上看,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是交替访问硬盘的.。

并发和共享的关系

并发性 指计算机系统中同时存在着多个运行着的程序。
共享性 是指系统中的资源可供内存中多个并发执行的进程共同使用。
通过上述例子来看并发与共享的关系:
使用 QQ 发送文件 A ,同时使用微信发送文件 B
1. 两个进程正在并发执行 (并发性): 如果失去并发性,则系统中只有一个程序运行,则共享性失去存在的意义。
2. 需要共享地访问硬盘资源 (共享性): 如果失去共享性,则QQ和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发。
因此,并发性和共享性是互为存在条件。

 虚拟

概念:是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。

用一个例子来理解
背景知识:一个程序 需要放入内存 并给它 分配 CPU 才能执行
例1:GTA5 需要 4GB 的运行内存, QQ 需要 256MB 的内存,迅雷需要 256MB 的内存,网易云音乐需要256MB 的内存 …… 我的电脑:4GB 内存  问题:这些程序同时运行需要的内存远大于4GB,那么为什么它们还可以在我的电脑上同时运行呢?
答:这是虚拟存储器技术。实际只有 4GB 的内存,在用户看来似乎远远大于4GB
这里就运用到了虚拟技术当中的" 空分复用技术"
例2:某单核CPU的计算机中,用户打开了QQ,QQ音乐,谷歌浏览器等。
问题:既然一个程序需要被分配CPU才能正常执行,那么为什么单核CPU的电脑中能同时运行这么多个程序呢?
答:这是虚拟处理器技术。实际上只有一个单核 CPU ,在用户看来似乎有
好几个CPU 在同时为自己服务。
这里就是虚拟技术中的"时分复用技术"。微观上处理机在各个微笑的时间段内交替着为各个进程服务。
注意:如果失去了并发性,则一个时间段内系统中只需要运行一道程序,那么就失去了实现虚拟性的意义了。因此, 没有并发性,就谈不上虚拟性。

 异步

概念:异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,以不可预知的速度向前推进,这就是进程的异步性。

例子:一号的指令1:老渣陪我吃饭,一号的指令2:老渣把心给我;二号的指令1:老渣把心给我,二号的指令2:老渣陪我吃饭;

与一、二号的约会 = 两道并发执行的程序

老渣的心 = 有限的系统资源

由于并发运行的程序会争抢着使用系统资源,而系统中的资源有限,因此进程的执行不是一贯到底的,而是走走停停的,以不可预知的速度向前推进如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性。

上面介绍了操作系统的四个特征,并发,共享,虚拟,异步。

并发和共享互为存在条件
没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征

发展与分类

 手工操作阶段

程序员把程序写到纸带上,有孔的地方代表二进制的1,没有孔的地方代表二进制的0,然后把写好的程序放到纸带机上,由计算机读取计算,把结果再写到纸带机上打印出,最后由程序员读取。

 主要缺点:用户独占全机,人机速度矛盾导致资源利用率极低。

 批处理阶段

单道批处理系统

引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入,输出。

这里体现出了操作系统的雏形。

主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。

主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。

 多道批处理系统

每次往内存中读入多道程序,这时候操作系统正式诞生,用于支持多道程序并发运行。

主要优点:多道程序 并发 执行, 共享 计算机资源。 资源利用率大幅提升 CPU 和其他资源更能保持“忙碌”状态,系统吞吐量增大。
主要缺点:用户响应时间长, 没有人机交互功能 (用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。eg :无法调试程序 / 无法在程序运行过程中输入一些参数)

 分时操作系统

分时操作系统:计算机以 时间片 为单位 轮流为各个用户 / 作业服务 ,各个用户可通过终端与计算机进行交互。
主要优点:用户请求可以被即时响应, 解决了人机交互问题 。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
主要缺点: 不能优先处理一些紧急任务 。操作系统对各个用户 / 作业都是完全公平的,循环地为每个用户 /作业服务一个时间片,不区分任务的紧急性。

 实时操作系统

实时操作系统:
主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且 要在严格的时限内处理完事件 。实时操作系统的主要特点是 及时性和可靠性。

运行机制

在开始之前,我问下大家,程序是如何运行的?

C语言代码通过编译器"翻译"成机器指令也就是二进制,一条高级语言的代码翻译过来可能对应多条机器指令,如下所示:

 程序运行的过程其实就是CPU执行一条一条机器指令的过程。

"指令"就是处理器(CPU)能识别,执行的最基本命令

注意:很多人习惯把Linux,Windows,MacOS的"小黑框"中使用的命令也称为"指令",其实这是"交互式命令接口",注意与本文的"指令"区别开。

 内核程序VS应用程序

我们普通程序员写的程序就是“ 应用程序
微软、苹果有一帮人负责实现操作系统,他们写的是“ 内核程序
由很多内核程序组成了“ 操作系统内核 ”,或简称“ 内核( Kernel 内核 是操作系统最重要最核心的部分,也是 最接近硬件的部分 甚至可以说,一个操作系统只要有内核就够了(eg Docker—> 仅需 Linux 内核)操作系统的功能未必都在内核中,如图形化用户界面 GUI。

 特权指令VS非特权指令

应用程序只能使用"非特权指令",如:加法指令,减法指令等等。

内核程序作为"管理者",有时会让CPU执行一些"特权指令",如:内存清零指令,这些指令影响重大,只允许"管理者"--即操作系统内核来使用。

CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判读初其类型。

 内核态VS用户态

CPU能判断出指令类型,但是它怎么区分此时正在运行的是内核程序or应用程序?

CPU 有两种状态,“ 内核态 ”和“ 用户态
处于 内核态时 ,说明此时正在 运行的是内核程序, 此时 可以执行特权指令
处于 用户态时 ,说明此时正在 运行的是应用程序, 此时 只能执行非特权指令
拓展: CPU 中有一个寄存器叫 程序状态字寄存器( PSW ,其中有个二进制位, 1 表示 “内核态”,0 表示“用户态”
别名 :内核态 = 核心态 = 管态 ;用户态 = 目态

 内核态和用户态的切换

内核态-> 用户态: 执行一条 特权指令 —— 修改 PSW 的标志位为“用户态”,这个动作意味着操作系统
将主动让出 CPU 使用权
用户态-> 内核态: “中断” 引发, 硬件自动完成变态过程 ,触发中断信号意味着操作系统将强行夺
CPU 的使用权
举个例子:

1.刚开机时,CPU 为“内核态”,操作系统内核程序先上CPU运行

2.开机完成后,用户可以启动某个应用程序

3.操作系统内核程序在合适的时候主动让出 CPU,让该应用程序上CPU运行

操作系统内核在让出CPU之前,会用一条特权指令把PSW的标志位设置为"用户态"

4.应用程序运行在“用户态"

5.此时,一位猥琐黑客在应用程序中植入了一条特权指令,企图破坏系统

6.CPU发现接下来要执行的这条指令是特权指令,但是自己又处于“用户态”

7.这个非法事件会引发一个中断信号

CPU检测到中断信号后,会立即变为"核心态",并停止运行当前的应用程序,转而运行处理中断信号的内核程序。

8.“中断”使操作系统再次夺回CPU的控制权

9.操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的应用程序

 操作系统内核

内核 是计算机上配置的底层 软件 ,是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是 内核程序

大内核:将操作系统的主要功能都作为系统内核,运行在核心态;优点:高性能;缺点:内核代码庞大,结构混乱,难以维护

微内核:只把最基本的功能保留在内核;优点:内核功能少,结构清晰,方便维护;缺点:需要频繁在核心态和用户态之间切换,性能低。

类比:
操作系统的体系结构问题与企业的管理问题很相似。
内核 就是企业的 管理层 ,负责一些重要的工作。只有管理层才能执行 特权指令 ,普通员工只能
执行 非特权指令 用户态 核心态 之间的 切换 相当于普通员工和管理层之间的 工作交接
大内核 :企业初创时体量不大,管理层的人会负责大部分的事情。优点是效率高;缺点是组织
结构混乱,难以维护。
微内核 :随着企业体量越来越大,管理层只负责最核心的一些工作。优点是组织结构清晰,方
便维护;缺点是效率低。

中断和异常

 中断的作用

“中断"会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。

CPU 上会运行两种程序,一种是 操作系统内核程序 ,一种是 应用程序。
在合适的情况下,操作系统内核会把 CPU 的使用权主动让给应用程序(第二章进程管理相关内容)
“中断”是 让操作系统内核夺回 CPU 使用权 的唯一途径
如果没有“中断”机制,那么一旦应用程序上 CPU 运行, CPU 就会一直运行这个应用程序
既然如此,如果没有中断技术,那何来的"并发"?
内核态-> 用户态: 执行一条 特权指令 —— 修改 PSW 的标志位为“用户态”,这个动作意味着操作系统
将主动让出 CPU 使用权
用户态-> 内核态: “中断” 引发, 硬件自动完成变态过程 ,触发中断信号意味着操作系统将强行夺
CPU 的使用权   

 中断的类型

 内中断(异常,例外)

与当前执行的指令有关,中断信号来源于CPU内部

例子1:试图在用户态下执行特权指令

例子2:执行除法指令时发现除数为0

若当前执行的指令是非法的,则会引发一个中断信号。

例子3:有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令,该指令会引发一个内部中断信号

指令"陷入指令",意味着应用程序主动地将CPU控制权还给操作系统内核。"系统调用"就是通过陷入指令完成的。

 外中断(中断)

与当前执行的指令无关,中断信号来源于CPU外部

每一条指令执行结束时,CPU都会例行检查是否有外中断信号

例子 1 :时钟中断 —— 由时钟部件发来的中断信号
通过这个就可以实现两个进程并发运行。

总结:

 中断机制的基本原理

不同的中断信号,需要用不同的中断处理程序来处理 。当 CPU 检测到中断信号后,会根据中断信号
的类型去查询“ 中断向量表 ”,以此来找到相应的中断处理程序在内存中的存放位置。

总结:

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钱up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值