操作系统
操作系统的基本概念
什么是操作系统
操作系统,简称OS,是管理计算机硬件和软件资源的计算机程序。在计算机系统总起着管理者的作用。
计算机系统的构成:
- 用户
- 应用程序
- 操作系统(OS)
- 硬件(裸机)
应用程序都安装在了操作系统里,操作系统是管理硬件和软件(应用程序)的系统软件
OS是一种系统软件
- 与硬件交互
- 对资源共享进行调度管理
- 解决并发操作处理中存在的协调问题
- 数据结构复杂,外部接口多样化,便于用户反复使用。
作为系统软件,OS做了那些事?
- 管理与配置内存
- 决定系统资源供需的优先次序
- 控制输出设备和输入设备
- 操作网络与管理文件系统等基本事务
- 提供一个让用户与系统交互的操作页面
操作系统的目标和功能
目标
在计算机上配置操作系统的目标:
- 有效性
- 方便性
- 可扩充性
- 开放性
功能
- 作为**计算机系统资源(硬件)**的管理者
- 作为用户与计算机硬件系统之间的接口
- 实现对计算机资源的抽象
操作系统的特征
并发
操作系统的并发性指的是同一时间间隔内执行和调度多个程序的能力。
- 宏观上,处理机同时执行多道程序
- 微观上,处理机在多道程序间高速切换
- 关注单个处理机同一时间内处理任务数量的能力
操作系统的有效性,就是提高资源利用率,优化并发。
共享
共享,即资源共享,系统中资源提供多个并发执行的应用程序共同使用,那么有几种共享方式呢?
- 同时访问方式:同一时间段允许多个程序同时访问共享资源
- 互斥访问方式:也叫独占式,允许多个程序在同一资源上独立而互不干扰工作。
虚拟
使用某种技术把一个物理实体变成多个逻辑上的对应物。
时分复用技术 TDM:把时间分成多段给别的程序使用,每一个小段的专业术语叫时间片,给每个任务去执行,执行完之后立马切换到下一个任务去执行。
空分复用技术 SDM:把空间分成多段给别的程序使用,将一个硬盘虚拟出若干个卷。
虚拟的前提也是并发,把一个物理实体变成多个逻辑上的对应物
实际上也是并发,如果CPU只是单道的,那就完全没必要搞时分空分,安顺序执行就行了。
异步
OS的异步性:多道程序环境下,允许多个程序并发执行;单处理机环境下,多个程序时分交替执行。
资源是有限的,程序的执行也并非一贯到底,它会在给每个程序一个时间片,执行完后在切换到另一个程序上去,然后再切换…这个切换我们称为调度。所以程序的执行是走走停停而非一贯到底。他以不可预知的速度向前推进,这就是所谓程序执行的的程序异步性。
获得时间片的时机、因何而暂停、每道程序走完的时间、不同的程序性能等都是无法预知的。
操作系统的发展与分类
手工操作阶段→批处理阶段→分时操作系统→实时操作系统→微机操作系统
操作系统的运行环境
操作系统的运行机制
分为五个模块:时钟管理,中断机制,原语,系统数据结构,系统调用。
用户空间:整个操作系统是安装在裸机上,操作系统包含的内容非常多,用户空间主要包含非内核功能和应用程序app。这些功能都不是必须的,卸载也不会影响操作系统的完整性。
内核空间:与之相对应的就是内核空间,都是操作系统所必须得到东西。
CPU运行的状态分为核心态和用户态,CPU是靠程序状态字来分辨是运行在内核态还是用户态的。当程序状态字的值时1的时候,是运行在用户态。当程序状态字值时0的时候,是运行在核心态。
当CPU执行内核态的这些指令时,称之为特权指令;当CPU执行用户态的这些指令时,称之为非特权指令。我们编写的代码也叫非特权指令。
时钟管理
时钟,准确来说是操作系统的硬件设备。它的主要功能之一就是计时,操作系统需要通过时钟管理来向用户(应用程序)提供标准时间。
之二就是进程(线程)切换。在分时操作系统中是使用时间片轮转调度机制,这些都是基于时钟中断来实现的。时钟中断就是时钟会产生一个中断,CPU在执行一个应用程序时突然不执行了,切换到另一个应用程序上,这个过程就需要一个中断。
中断机制
时钟中断的目的就是为了提高多道环境下CPU的利用率。CPU在一个应用程序上执行时,遇到了需要IO操作的指令,因为IO操作是低效的,操作系统只能等他执行完成。而这个时候我们让CPU不要在这里进行操作了,让他中断一个,去切换到另外一个应用程序上去执行,等IO操作完后你在回来继续执行。这样就提高了在并发情况下的CPU的利用率。
CPU的中断也分为内中断和外中断,他俩的区分就是中断信号的来源。
- 外中断:中断信号来源于外部设备,比如是IO设备、输入输出、文件操作等等。
- 内中断:中断信的来源与当前指令,比如说当前正在运行的程序内部需要CPU中断一下,由当前程序来决定。
所以说,外中断是被迫的,内中断是自愿的。
内中断的三种情况
- 陷阱/陷入:由应用程序主动引发
- 故障:由错误条件引发
- 终止:由致命错误引发
中断的处理流程
中断的处理流程不是内中断的也不是外中断的,而是所有的中断处理的流程。总共分为九步。
也可以分成三部分:产生中断,执行中断的处理程序,执行完后在回来继续执行。
- 关中断。产生中断后执行的,就是CPU对当前的中断做的响应。
- 保存断点。就是为了中端处理完成后继续回来执行后面的程序,保存的是地址,是程序计数器。
- 引出中断服务程序。中断服务程序就是真正要去处理中断的程序,这里只是引出而不代表真正去执行,这里只是读取到。
- 保存现象和屏蔽字。可以理解为保留“犯罪现场”,记录寄存器里面的数据,让中断处理完后继续在寄存器的基础上就行运算执行。
- 开中断。关的位置有个上锁,开的地方有个解锁。是因为在执行关中断的时候,CPU要判断是不是已经执行了其他中断(不同的中断优先级不同),所以第一步关中断的目的就是为了让CPU不再响应更高级别的中断请求。开中断就是开锁。
- 执行中断服务程序。在执行中断服务程序的过程中CPU可以并发的响应其他的中断。
-
-
- 然后继续加锁,恢复犯罪现场,把我们从寄存器哪来的数据再返回给寄存器,然后关锁,再执行中断返回指令,中断处理流程结束。
-
原语
原语就是程序段,由若干指令组成,用来完成某个特定功能,执行过程不会中断。拥有原子性(就是靠关中断和开中断来实现),原语运行在内核空间。
系统数据结构
我们操作系统在工作中会涉及到大量的数据结构,一般只涉及到数据结构的操作不涉及硬件。
- 进程管理:作业控制块、进程控制块
- 存储器管理:存储器分配与回收
- 设备管理:缓冲区、设备控制块
系统调用
系统调用是应用程序去访问操作系统内核的过程。操作系统通过陷入指令去 进行系统调用,他是一种内中断,由应用程序内部发起中断。
操作系统实现了一整套接口,给程序去进行调用,我们这里所谓的系统调用是操作系统实现的,用于访问内核服务的所有的接口集合。
- 由操作系统实现,给应用系统实现
- 是一套接口集合
- 应用程序访问内核的方式