计算机系统概述

操作系统定义

计算机系统层次

在这里插入图片描述
操作系统定义:

操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调

度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本

的系统软件。

操作系统提供的功能

作为系统资源的管理者

  1. 文件管理
  2. 存储器管理
  3. 处理机管理
  4. 设备管理

向用户提供方便的服务

对于一台硬件设备,它只能听懂二进制指令,对我们操作并不友好;操作系统就是把这些不友好的接口封装成友好的接口;封装思想:操作系统把一些丑陋的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。

GUI:图形化用户接口(Graphical User Interface),用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令、参数。

联机命令接口实例(Windows系统) 联机命令接口=交互式命令接口(就是用户说一句系统跟着做一句,就是我们常用的cmd)

脱机命令接口实例(Windows系统) 脱机命令接口=批处理命令接口(就是我们平常用的.bat文件,用户说一堆。系统跟着做一堆)

程序接口:可以在程序中进行系统调用(系统调用类似于函数调用,是应用程

序请求操作系统服务的唯一方式)来使用程序接口。普通用户不能直接使用程序接口,只能通过程

序代码间接使用

作为最接近硬件的层次

需要实现对硬件机器的拓展

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

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

操作系统特征

  • 并发(最基本)

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

注意:并行是指两个或多个事件在同一时刻同时发生。两者是有区别的

操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观

上看是交替运行的。

重点

  1. 单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
  2. 多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行
  3. n核CPU意味着可以并行的执行n个程序
  • 共享(最基本)

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

资源共享方式:

  1. 互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
  2. 同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问(同时指的是宏观,微观上可能是交替的对资源进行访问)

并发和共享区别:

如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义。

如果失去共享性,则QQ和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发。

并发和共享互为存在条件

  • 虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上

对应物(后者)是用户感受到的;没有并发性就谈不上虚拟性。

虚拟技术:

  1. 空分复用技术
  2. 时分复用技术
  • 异步

异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,

而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。

总结:没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征

OS的发展与分类

在这里插入图片描述

操作系统运行机制

对于我们平时写的程序,都会通过编译器或者解释器“翻译成”机器指令(二进制),然后交给CPU执行一条一条的指令。

指令”就是处理器(CPU)能识别、执行的最基本命令(二进制的)

我们程序员平时写的程序是“应用程序”;而实现操作系统功能的程序是“内核程序”;很多的内核程序就组成了“操作系统内核”,简称内核(Kernel);内核是操作系统最重要最核心的部分,也是最接近硬件的部分

注意:操作系统的功能未必都在内核中,如图形化用户界面 GUI

内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态。

**应用程序:**为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态。

特权指令:操作系统内核可以让CPU执行特权指令。

非特权指令:我们平时的程序只能使用非特权指令。

CPU的两种状态:

  • 内核态

处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令

  • 用户态

处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令

**区分CPU状态:**CPU 中有一个寄存器叫 程序状态字寄存器(PSW),其中有个二进制位,1表示

“内核态“,0表示”用户态“。

黑客攻击的角度:如果我们在应用程序中嵌入一段特权指令破坏当前系统,会发生什么结果呢?

当黑客在应用程序中嵌入特权指令时,首先执行应用程序CPU处于用户态,此状态的CPU是不能执行特权指令的,遇到特权指令后会引发一个中断信号,CPU检测到中断信号之后会立即变为内核态(但是不会执行该恶意特权指令),并且停止当前程序的运行,转而处理中断信号的内核程序。

CPU状态的切换

内核态——>用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统

将主动让出CPU使用权

用户态——>内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。(触发中断信号不仅仅是非法使用特权指令,还有很多事件会触发中断信号。但凡需要操作系统介入的地方,都会触发中断信号)

操作系统的内核

在这里插入图片描述

内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。

实现操作系统内核功能的那些程序就是内核程序。
在这里插入图片描述

大内核和微内核

在这里插入图片描述

中断和异常

基础知识:CPU上会运行两种程序,一种是操作系统内核程序(整个系统的管理者),一种是应用程序。在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序;中断是让操作系统内核夺回CPU使用权的唯一途径。

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

中断的类型:

  • 内中断(CPU在执行指令时会检查是否有异常发生)

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

两个内中断的例子:

  1. 就是我们上面所说的在应用程序中嵌套特权指令(就是在用户态下执行特权指令);执行除法运算时也会引发一个中断信号
  2. 就是应用程序想要请求操作系统内核的服务,此时会执行一种特殊的指令——陷入指令(注意:他是在用户态可以执行的,所以并不是特权指令),该指令会引发一个内部中断信号。执行”陷入指令“,意味着应用程序主动地将CPU控制权还给操作系统内核。系统调用就是通过陷入指令完成的。
  • 外中断(每个指令周期末尾CPU都会检查是否有外中断信号需要处理)

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

外中断的例子:

  1. 时钟中断——由时钟部件发来的中断信号。

当CPU在执行应用程序时,时钟部件会每隔一段事件给CPU发出一个时钟中断信号;CPU会执行内核指令,然后CPU会分配给另一个程序。这样也就形成了并发

2.I/O中断——由输入/输出设备发来的中断信号

在这里插入图片描述

注意:我们平时所说的中断就是指外中断。内中断称为异常。

中断机制的基本原理:不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。(很显然,中断处理程序一定是内核程序,需要运行在”内核态“)。

系统调用

背景知识:操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用完成。

“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。

系统调用与库函数:
在这里插入图片描述

不涉及系统调用的库函数:取绝对值的函数

涉及系统调用的库函数:创建一个新文件的函数

系统调用的必要性:

由操作系统内核对共享资源进行统一的管理,并向上提供“系统调用” ,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。

应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

在这里插入图片描述

系统调用的过程:

当应用程序在用户态执行指令时,会执行一条陷入指令,引发中断信号,此时CPU进入相应的中断处理程序——即系统调用的入口程序;执行指令时候都会向寄存器发送一个参数,根据该参数判断用户需要哪种系统调用服务。当处理完系统调用后,CPU又回到用户态,继续执行应用程序的指令。

在这里插入图片描述

注意

  1. 陷入指令是在用户态执行的,执行陷入指令后立即引发一个内中断,使CPU进入核心态
  2. 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态进行。

操作系统体系结构

操作系统的内核

在这里插入图片描述

内核是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序。操作系统内核需要运行在内核态,操作系统给非内核功能运行在用户态
在这里插入图片描述

大内核:包括时钟管理、中断管理、原语、进程管理、存储器管理、设备管理等功能。

微内核:只包括时钟管理、中断管理、原语。

大内核体系结构

将操作系统的主要功能模块都作为系统内核,运行在内核态
在这里插入图片描述

优点:高性能

缺点:内核代码庞大、结构混乱、难以维护;大内核的某个功能模块出错,就可能导致整个系统崩溃

微内核体系结构

只是把基本的功能保留在内核
在这里插入图片描述

优点:内核功能少、结构清晰、方便维护

缺点:需要频繁的在核心态和用户态之间切换,性能低;用户态下的各功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信

声明:变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能

分层结构

最底层是硬件,最高层是用户接口,每层可调用更低一层。

思想:内核分多层,每层可单向调用更低一层提供的接口

优点:

  1. 便于调试和验证,自底向上逐层调式验证
  2. 易于扩充和维护,各层之间调用接口清晰固定

缺点:

  1. 仅可调用相邻低层,难以合理定义各层的边界
  2. 效率低,不可跨层调用,系统调用执行时间长

模块化

将内核划分为多个模块,各模块之间相互协作;内核=主模块+可加载内核模块

主模块:只负责核心功能,如进程调度、内存管理

可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核

优点:

  1. 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发
  2. 支持动态加载新的内核模块(eg:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
  3. 任何模块都可以直接调用其它模块,无需采用消息船传递进行通信,效率高

缺点:

  1. 模块间的接口定义未必合理、使用
  2. 模块间相互依赖、难以调试和验证
    在这里插入图片描述

外核

内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源、且由外核负责保证资源使用安全。
优点:

  1. 外核可直接给用户进程分配 “不虚拟 不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源。
  2. 减少了虚拟硬件资源的的“映射层” ,提升效率。

缺点:

  1. 降低了系统的一致性
  2. 使系统变得更复杂

操作系统引导

操作系统的引导就是我们电脑开机时候,操作系统是如何运行起来的

安装操作系统后的磁盘:
在这里插入图片描述

操作系统引导过程:

  1. CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)
  2. 将磁盘的第一块——主引导记录 读入内存,执行磁盘引导程序,扫描分区表
  3. 从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
  4. 从根目录下找到完整的操作系统初始化程序(即 启动管理器)并执行,完成“开机”的一系列动作

虚拟机

虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine, VM),每个虚拟机器都可以独立运行一个操作系统。

  • 第一类虚拟机,直接运行在硬件上
    在这里插入图片描述

  • 第二类虚拟机,运行在宿主操作系统之上
    在这里插入图片描述

比较:

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凌晨四点半sec

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

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

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

打赏作者

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

抵扣说明:

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

余额充值