一、操作系统的概念和功能

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

1、计算机层次结构

  • 负责管理协调硬件、软件等计算机资源的工作。
  • 为上层的应用程序、用户提供简单易用的服务
  • 操作系统是系统软件,而不是硬件

image.png

2、操作系统的作用

  • OS 作为用户与计算机硬件之间的接口:命令接口和程序接口统称为“用户接口”;
    • 命令接口:允许用户直接使用
      • 联机命令接口:用户说一句,系统做一句;
      • 脱机命令接口:用户说一堆,系统做一堆;
    • 程序接口:普通用户不能直接使用程序接口,只能通过程序代码间接使用。由一组系统调用组成(程序接口=系统调用=系统调用命令=广义命令);
    • GUI:图形化用户界面;
  • OS 作为计算机系统资源的管理者;
  • OS 实现了对计算机资源的抽象,即对硬件机器的拓展。通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机。

3、总结

image.png

二、操作系统的特征

  操作系统的特征有:并发、共享、虚拟、异步。并发和共享是两个最基本的特征,二者互为存在条件。

1、并发

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

  操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。 单核 CPU 同一时刻只能执行一个程序,各个程序只能并发地执行;多核 CPU 同一时刻可以同时执行多个程序,多个程序可以并行地执行。

2、共享

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

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

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

(1)并发和共享的关系
  • 并发性指计算机系统中同时存在着多个运行着的程序。
  • 共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。

  如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义;如果失去共享性,则 QQ 和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发。所以并发和共享是互为存在条件的

3、虚拟

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

  • 空分复用:电脑上同时运行的程序所需的内存远大于电脑内存,为什么他们可以在电脑上正常运行。
  • 时分复用:每一个程序需要被分配 CPU 才能正常执行,那么为什么单核 CPU 的电脑中能同时运行这么多个程序。虚拟技术中的“时分复用技术”:微观上处理机在各个微小的时间段内交替着为各个进程服务。

4、异步

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

5、总结

MZARKABTDR8E45G4.png

三、操作系统的发展和分类

1、手工操作阶段

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

7JDMIAI6KCSLEDV9RM4.png

2、单道批处理系统

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

  • 主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
  • 主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序;CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。

  程序员先通过外围机把程序提前存到磁带里,磁带的读/写速度比纸带机快很多。

3P0S00HMD56WZ01T.png

3、多道批处理系统

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

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

image.png

4、分时操作系统

  分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。

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

5、实时操作系统

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

  • 硬实时系统:必须在绝对严格的规定时间内完成处理,如:导弹控制系统、自动驾驶系统。
  • 软实时系统:能接受偶尔违反时间规定,如:12306火车订票系统。

6、其他几种操作系统

  网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如:文件共享)和各台计算机之间的通信。(如: WindowsNT 就是一种典型的网络操作系统,网站服务器就可以使用)。

  分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。

  个人计算机操作系统:如WindowsXP、MacOS,方便个人使用。

7、总结

image.png

四、操作系统的运行机制与体系结构

1、两种指令

  “指令” 就是处理器(CPU) 能识别、执行的最基本命令。比如:加法指令就是让 CPU 进行加法运算。

  • 特权指令:不允许用户程序使用,如 I/O 指令、内存清零指令等;
  • 非特权指令:如:运算指令。

2、两种处理器状态

  CPU 是根据处理器的状态来判断当前是否可以执行特权指令。用程序状态字寄存器(PSW)中的某标志位来标识当前处理处于什么状态。如 0 为用户态,1 为核心态。

  • 用户态(目态):此时 CPU 只能执行非特权指令;
  • 核心态(管态):特权指令、非特权指令都可以执行。

3、两种程序

  • 内核程序:操作系统的内核程序是系统的管理者,即可以执行特权指令,也可以执行非特权指令,运行在核心态。
  • 应用程序:为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态。

image.png

4、操作系统的内核

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

image.png

image.png

  操作系统的体系结构问题与企业的管理问题很相似:

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

image.png

ARADQA5CNTVXSA8UG.png

5、总结

J9PEA8LH9ONUES1.png

五、中断和异常

  CPU 上会运行两种程序,一种是操作系统内核程序(整个系统的管理者),一种是应用程序。“中断”会使 CPU 由用户态变为内核态,使操作系统重新夺回对 CPU 的控制权(唯一途径)。在合适的情况下,操作系统内核会把 CPU 的使用权主动让给应用程序。

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

1、中断类型

  • 内中断:与当前执行的指令有关,中断信号来源于 CPU 内部。例:有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令(陷入指令 = trap 指令 = 访管指令),该指令会引发一个内部中断信号。(执行“陷入指令”,意味着应用程序主动地将 CPU 控制权还给操作系统内核。“系统调用”就是通过陷入指令完成的)
  • 外中断:与当前执行的指令无关,中断信号来源于 CPU 外部。每一条指令执行结束时,CPU 都会例行检查是否有外中断信号。例:时钟中断——由时钟部件发来的中断信号。

image.png

2、中断机制的基本原理

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

检查中断信号

  • 内中断:CPU 在执行指令时会检查是否有异常发生;
  • 外中断:每个指令周期末尾,CPU 都会检查是否有外中断信号需要处理。

外中断的处理过程

  • Step1:执行完每个指令之后,CPU 都要检查当前是否有外部中断信号;
  • Step 2:如果检测到外部中断信号,则需要保护被中断进程的 CPU 环境(如程序状态字 PSW、程序计数器 PC、各种通用寄存器);
  • Step 3:根据中断信号类型转入相应的中断处理程序;
  • Step 4:恢复原进程的 CPU 环境并退出中断,返回原进程继续往下执行。

3、总结

AW1U1DZS5KIHMTJ.png

六、系统调用

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

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

image.png

1、系统调用与库函数的区别

  系统调用是操作系统向上层提供的接口。库函数分为:不涉及系统调用的库函数(如的“取绝对值”的函数);涉及系统调用的库函数(如“创建一个新文件”的函数)。

对象功能
普通应用程序可直接进行系统调用,也可使用库函数;
有的库函数涉及系统调用,有的不涉及。
编程语言向上提供库函数。有时会将系统调用封装成库函数,
以隐藏系统调用的一些细节,使程序员编程更加方便。
操作系统向上提供系统调用,使得上层程序能请求内核的服务。
裸机

2、为什么系统调用是必须的?

  假如 A 和 B 都使用打印机打印论文。两个进程并发运行,打印机设备交替地收到两个进程发来的打印请求,结果两篇论文的内容混杂在一起了…

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

3、什么功能要用到系统调用?

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

image.png

4、系统调用的过程

  传递系统调用参数 → 执行陷入指令(用户态)→ 执行系统调用相应服务程序(核心态)→ 返回用户程序。

注意:

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

5、总结

B6T96W2HXZXPTDL41T1.png


标题:操作系统引论——操作系统笔记
作者:Yi-Xing
地址:http://47.94.239.232/articles/2020/11/19/1605797137791.html
博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!