前言

一开始还没打算做这个博客,这个学习资料原来准备在平板上自己手写的,但是后面觉得在平板上又重新手写一便写过的知识点很累且很蠢,所以我打算整成一篇博客,正好壮大一下我的博客。

文章中所有知识点均来自本人在听了王道考研课程,看了《计算机操作系统》第四版 后的理解和原文。

这个我估计会一周一更吧,打算边学边写的。

一.计算机系统概述

首先了解一下计算机系统的层次结构
最底层:裸机(仅包含CPU,内存等硬件的设备)
之后:操作系统(比如windows,mac等) 再接着:应用程序和用户。 一般而言,是应用程序与操作系统紧密贴合,但是特殊情况下,比如用户接口,用户也可以直接和操作系统联系。

操作系统的基本概念

阐述操作系统的概念:
控制和管理整个计算机系统的硬件与软件资源,合理地组织,调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本
总结三点要点:

  1. 系统资源的管理者
  2. 向上层提供方便易用的服务
  3. 最接近硬件的一层软件

操作系统的功能和目标

一. 系统资源的管理者

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

之后的篇章会详细学习,这里只列名字了

二. 向上层提供方便易用的服务
硬件只能听懂二进制的指令,但是操作系统提供了更加方便的交互接口

  1. 命令接口
    命令接口分为两类:联机命令接口(交互式命令接口),我的理解是及时反馈,即用户输入一条命令,设备就能完成指定的功能,这也强调了交互性。 脱机命令接口(批处理命令接口),我的理解是批量反馈,就类似于写程序代码,将整体全部写完后再运行,用户将一大堆指令汇集在一起提交,然后设备集中处理实现。
  2. 程序接口
    程序接口由一组系统调用(也称作广义指令)组成。用户通过在程序中使用这些系统调用来请求操作系统提供服务。普通用户不能直接地使用程序接口,只能通过程序代码来间接使用。

命令接口和程序接口合在一起统称为用户接口

三. 对计算机资源的扩充
对硬件机器的拓展,让各类硬件相互配合协调。

操作系统的特征

操作系统的基本特征包括以下四个:并发,共享,虚拟,异步 其中并发和共享是最基本的两个特征,二者互为存在条件。

  1. 并发
    两个或者多个事件在同一时间间隔内发生,宏观上看它们是同时发生的,比如我一天内干了很多事情,一天这个概念我们暂且看作宏观,微观上看它们其实是隔开发生的,比如细化到一天的每个小时,我做的事情都是在不同时间段完成的。

    注意和并行区别开来,并行就是在同一时间内同时进行两件或者多个事情。

    一个重要考点:单核CPU在同一时刻只能执行一个程序,各个程序能够并发执行。多核CPU能够在同一时刻实现并行。

  2. 共享
    共享即资源共享,指系统中的资源可供内存中多个并发执行的进程共同使用
    共享可分为两类:互斥共享方式和同时访问方式。

    互斥共享方式:简单来说,一段时间内只允许一个进程访问该资源,比如打印机的使用,假如有两个人想同时使用同一个打印机,那就无法做到,只能两个人分时间段来进行打印。

    同时访问方式:和互斥共享方式相反,该方式允许一个时间段内资源可被多个进程同时访问,比如磁盘设备。

  3. 虚拟
    这个东西很难理解,是指将一个物理上的实体变为若干逻辑上的对应物,就比如通过时分复用技术,让多道程序并发执行,来分时使用一个处理器从而达到“多个处理器”的效果。还有空分复用技术等。

  4. 异步 由于资源有限,进程的进行总是走走停停的,比如当一个进程进行时,突然有一个更高优先级的进程插队,或者当前进程的时间片到了,导致这个进程不得不停止下来。这种情况导致进程以“不可预知的速度向前推进”,这就是异步。

操作系统发展历程

  1. 手工操作阶段:在这个阶段,操作系统还没有出现,用户在计算机上的所有工作,都需要人工来进行干预,比如利用纸条打孔来装入程序,结果的输出也是反映在纸条上。两个显著的缺点:1. 一个用户独占了机器,导致计算机资源的利用率极其低下。2.CPU等待手工操作,CPU的利用并不充分。
  2. 批处理阶段:操作系统开始出现,引入了脱机输入和输出。分为两类:1. 单道批处理系统:将一系列的作业脱机输入进磁带,并在系统上配置上监督程序,但是这一系列的作业仍然是按顺序依次进行的,内存中始终只有一个作业。主要特征:自动性,顺序性,,单道性。仍然有较大问题,只能串行。2. 多道批处理系统:可以实现并行,用户提交的作业先在外存上,排成一个队列,然后调度程序再在队列中选取一系列作业调入内存中,让他们在管理程序的控制下并发,穿插的进行,使得各种资源都能得到有效的利用,极大地提高了效率。
  3. 分时操作系统:分时技术:将处理器地运行时间分割成若干个时间片,按照时间片轮流将处理器分配给每个作业。若在单个时间片内,该作业不能完成,则暂时停止该作业的进行,转而进行下一个作业,直到下一个属于该作业的时间片的到来。特点 多个用户通过终端同时操作共享一台主机。但是用户之间无法相互感知到对方.1)同时性 2)交互性 3)独立性 4)及时性。 缺点 不能优先反馈相应一些紧急任务。
  4. 实时操作系统:为了能在某个时间限制内能够及时的完成某些紧急的任务,而不会存在像分时操作系统一样,导致需要时间片排队。1)硬实时系统:绝对保证,让某个特定的动作在规定的时间内完成,不得超过。2)软实时系统:能偶尔接受违反时间规定,且不会引起永久性的重大损害。
  5. 后续还有网络操作系统,分布式操作系统等这里不多介绍。

操作系统的运行环境

CPU通常执行两种不同性质的程序模式:操作系统内核程序和用户自编程序(应用程序);通常来说两种模式的作用是不同的,前者是后者的管理者;内核程序能执行一些特权指令,但是应用程序通常为了考虑安全性不能执行这些特权指令。

特权指令和非特权指令
特权指令:不允许用户直接使用的指令,如I/O指令,关中断指令,内存清零指令等
非特权指令:允许用户直接使用的指令,不能直接访问系统中的软硬件资源,仅能访问用户的地址空间。

处理器的运行模式
CPU的运行模式分为两类:用户态和内核态(核心态),当CPU处于内核态时:既可以执行特权指令,也可以执行非特权指令。 当CPU通过切换到用户态这个特权指令之后。CPU处于用户态,就只能执行非特权指令。应用程序向系统请求服务时通过使用访管指令。访管指令在用户态执行,自然也是一种非特权指令。

内核:内核时操作系统中最重要最核心的部分。多个内核程序组成了操作系统内核。

中断和异常

前面提到过内核态和用户态两种工作状态,我们需要考虑如何在这两种状态之间进行转换。因为用户态下有时是需要内核态下的功能的,但是系统并不允许在用户态下实现内核态的功能,这时就需要一个方法来进行形态的转换————中断或者异常。

在发生中断或者异常时,处于用户态的CPU会直接跳转为内核态(通过硬件实现) “中断”可以实现计算机资源的高效利用,通过将未使用资源却在占用资源的程序中断,从而释放资源。 中断是操作系统让系统内核夺回CPU使用权的唯一途径

中断分为两类:

  1. 内中断,也被称为异常。是指来自CPU执行指令内部的事件。例如
    1. 程序的非法操作码
    2. 地址越界
    3. 运算溢出
    4. 虚存系统的缺页
    5. 陷入指令(非特权指令)等等 异常并不能被屏蔽掉,一旦出现了,就必须立即进行处理。
  2. 外中断,也简称中断。指来自CPU执行指令外部的事件。常用于信息的输入和输出。例如I/O中断(用来表示输入/输出的资源使用完成),时钟中断(用于表示时间片已经用完等)。

中断和异常又分别分为几类:

中断又分为可屏蔽中断和不可屏蔽中断。 3. 可屏蔽中断是指通过INTR线发出的中断请求,可以通过修改屏蔽字来实现多重中断。 4. 不可屏蔽中断是指通过NMI线发出的中断请求。通常是紧急的硬件故障,比如电源掉电。

异常可分为故障,自陷和终止

  1. 故障一般是指令执行引起的异常,如非法操作码,运算溢出等。
  2. 自陷是一种“事先安排好”的异常事件,一般用在用户态尝试调用操作系统内核程序,如条件陷阱指令。
  3. 终止是指出现了使得CPU无法继续执行的硬件故障,如控制器出错,存储器检验错等。