前言
一开始还没打算做这个博客,这个学习资料原来准备在平板上自己手写的,但是后面觉得在平板上又重新手写一便写过的知识点很累且很蠢,所以我打算整成一篇博客,正好壮大一下我的博客。
文章中所有知识点均来自本人在听了王道考研课程,看了《计算机操作系统》第四版 后的理解和原文。
这个我估计会一周一更吧,打算边学边写的。
一.计算机系统概述
首先了解一下计算机系统的层次结构
最底层:裸机(仅包含CPU,内存等硬件的设备)
之后:操作系统(比如windows,mac等)
再接着:应用程序和用户。
一般而言,是应用程序与操作系统紧密贴合,但是特殊情况下,比如用户接口,用户也可以直接和操作系统联系。
操作系统的基本概念
阐述操作系统的概念:
控制和管理整个计算机系统的硬件与软件资源,合理地组织,调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的
总结三点要点:
- 系统资源的管理者
- 向上层提供方便易用的服务
- 最接近硬件的一层软件
操作系统的功能和目标
一. 系统资源的管理者
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
之后的篇章会详细学习,这里只列名字了
二. 向上层提供方便易用的服务
硬件只能听懂二进制的指令,但是操作系统提供了更加方便的交互接口
- 命令接口
命令接口分为两类:联机命令接口(交互式命令接口),我的理解是及时反馈,即用户输入一条命令,设备就能完成指定的功能,这也强调了交互性。 脱机命令接口(批处理命令接口),我的理解是批量反馈,就类似于写程序代码,将整体全部写完后再运行,用户将一大堆指令汇集在一起提交,然后设备集中处理实现。 - 程序接口
程序接口由一组系统调用(也称作广义指令)组成。用户通过在程序中使用这些系统调用来请求操作系统提供服务。普通用户不能直接地使用程序接口,只能通过程序代码来间接使用。
命令接口和程序接口合在一起统称为用户接口。
三. 对计算机资源的扩充
对硬件机器的拓展,让各类硬件相互配合协调。
操作系统的特征
操作系统的基本特征包括以下四个:并发,共享,虚拟,异步 其中并发和共享是最基本的两个特征,二者互为存在条件。
并发
指两个或者多个事件在同一时间间隔内发生,宏观上看它们是同时发生的,比如我一天内干了很多事情,一天这个概念我们暂且看作宏观,微观上看它们其实是隔开发生的,比如细化到一天的每个小时,我做的事情都是在不同时间段完成的。注意和并行区别开来,并行就是在同一时间内同时进行两件或者多个事情。
一个重要考点:单核CPU在同一时刻只能执行一个程序,各个程序能够并发执行。多核CPU能够在同一时刻实现并行。
共享
共享即资源共享,指系统中的资源可供内存中多个并发执行的进程共同使用。
共享可分为两类:互斥共享方式和同时访问方式。互斥共享方式:简单来说,一段时间内只允许一个进程访问该资源,比如打印机的使用,假如有两个人想同时使用同一个打印机,那就无法做到,只能两个人分时间段来进行打印。
同时访问方式:和互斥共享方式相反,该方式允许一个时间段内资源可被多个进程同时访问,比如磁盘设备。
虚拟
这个东西很难理解,是指将一个物理上的实体变为若干逻辑上的对应物,就比如通过时分复用技术,让多道程序并发执行,来分时使用一个处理器从而达到“多个处理器”的效果。还有空分复用技术等。异步 由于资源有限,进程的进行总是走走停停的,比如当一个进程进行时,突然有一个更高优先级的进程插队,或者当前进程的时间片到了,导致这个进程不得不停止下来。这种情况导致进程以“不可预知的速度向前推进”,这就是异步。
操作系统发展历程
- 手工操作阶段:在这个阶段,操作系统还没有出现,用户在计算机上的所有工作,都需要人工来进行干预,比如利用纸条打孔来装入程序,结果的输出也是反映在纸条上。两个显著的缺点:1. 一个用户独占了机器,导致计算机资源的利用率极其低下。2.CPU等待手工操作,CPU的利用并不充分。
- 批处理阶段:操作系统开始出现,引入了脱机输入和输出。分为两类:1. 单道批处理系统:将一系列的作业脱机输入进磁带,并在系统上配置上监督程序,但是这一系列的作业仍然是按顺序依次进行的,内存中始终只有一个作业。主要特征:自动性,顺序性,,单道性。仍然有较大问题,只能串行。2. 多道批处理系统:可以实现并行,用户提交的作业先在外存上,排成一个队列,然后调度程序再在队列中选取一系列作业调入内存中,让他们在管理程序的控制下并发,穿插的进行,使得各种资源都能得到有效的利用,极大地提高了效率。
- 分时操作系统:分时技术:将处理器地运行时间分割成若干个时间片,按照时间片轮流将处理器分配给每个作业。若在单个时间片内,该作业不能完成,则暂时停止该作业的进行,转而进行下一个作业,直到下一个属于该作业的时间片的到来。特点 多个用户通过终端同时操作共享一台主机。但是用户之间无法相互感知到对方.1)同时性 2)交互性 3)独立性 4)及时性。 缺点 不能优先反馈相应一些紧急任务。
- 实时操作系统:为了能在某个时间限制内能够及时的完成某些紧急的任务,而不会存在像分时操作系统一样,导致需要时间片排队。1)硬实时系统:绝对保证,让某个特定的动作在规定的时间内完成,不得超过。2)软实时系统:能偶尔接受违反时间规定,且不会引起永久性的重大损害。
- 后续还有网络操作系统,分布式操作系统等这里不多介绍。
操作系统的运行环境
CPU通常执行两种不同性质的程序模式:操作系统内核程序和用户自编程序(应用程序);通常来说两种模式的作用是不同的,前者是后者的管理者;内核程序能执行一些特权指令,但是应用程序通常为了考虑安全性不能执行这些特权指令。
特权指令和非特权指令
特权指令:不允许用户直接使用的指令,如I/O指令,关中断指令,内存清零指令等
非特权指令:允许用户直接使用的指令,不能直接访问系统中的软硬件资源,仅能访问用户的地址空间。
处理器的运行模式
CPU的运行模式分为两类:用户态和内核态(核心态),当CPU处于内核态时:既可以执行特权指令,也可以执行非特权指令。
当CPU通过切换到用户态这个特权指令之后。CPU处于用户态,就只能执行非特权指令。应用程序向系统请求服务时通过使用访管指令。访管指令在用户态执行,自然也是一种非特权指令。
内核:内核时操作系统中最重要最核心的部分。多个内核程序组成了操作系统内核。
中断和异常
前面提到过内核态和用户态两种工作状态,我们需要考虑如何在这两种状态之间进行转换。因为用户态下有时是需要内核态下的功能的,但是系统并不允许在用户态下实现内核态的功能,这时就需要一个方法来进行形态的转换————中断或者异常。
在发生中断或者异常时,处于用户态的CPU会直接跳转为内核态(通过硬件实现) “中断”可以实现计算机资源的高效利用,通过将未使用资源却在占用资源的程序中断,从而释放资源。 中断是操作系统让系统内核夺回CPU使用权的唯一途径
中断分为两类:
- 内中断,也被称为异常。是指来自CPU执行指令内部的事件。例如
- 程序的非法操作码
- 地址越界
- 运算溢出
- 虚存系统的缺页
- 陷入指令(非特权指令)等等 异常并不能被屏蔽掉,一旦出现了,就必须立即进行处理。
- 外中断,也简称中断。指来自CPU执行指令外部的事件。常用于信息的输入和输出。例如I/O中断(用来表示输入/输出的资源使用完成),时钟中断(用于表示时间片已经用完等)。
中断和异常又分别分为几类:
中断又分为可屏蔽中断和不可屏蔽中断。 3. 可屏蔽中断是指通过INTR线发出的中断请求,可以通过修改屏蔽字来实现多重中断。 4. 不可屏蔽中断是指通过NMI线发出的中断请求。通常是紧急的硬件故障,比如电源掉电。
异常可分为故障,自陷和终止
- 故障一般是指令执行引起的异常,如非法操作码,运算溢出等。
- 自陷是一种“事先安排好”的异常事件,一般用在用户态尝试调用操作系统内核程序,如条件陷阱指令。
- 终止是指出现了使得CPU无法继续执行的硬件故障,如控制器出错,存储器检验错等。
