关注、星标公众号,不错过精彩内容
作者:Cyapirear
来源:华为开发者论坛
01
操作系统是什么
操作系统(Operation System,OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统也是用户与计算机硬件系统之间的接口,同时也是计算机硬件和其他软件的接口。
02
操作系统发展历程
手工阶段
单道批处理系统
多道批处理系统
分时操作系统
实时操作系统
网络操作系统和分布式操作系统,两者的不同之处在于:
在分布式操作系统中,若干台计算机相互协同完成同一任务。
在网络操作系统中,每台计算机都是相互独立的,它们并不能相互协同完成同一任务。
03
操作系统中的基本概念
CPU(Central Processing Unit,中央处理器)
是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心 (Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
进程
可以认为是程序执行时的一个实例。进程是系统进行资源分配的独立实体,且每个进程拥有独立的地址空间。比如打开一个浏览器就是启动一个浏览器进程,打开两个记事本就启动了两个记事本进程。
进程控制块(ProcessControl Block,PCB)
保存运行期间进程的数据,PCB是进程存在的唯一标志。进程=程序+数据+PCB。
线程
可以理解为“轻量级进程”,是CPU调度的基本单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。在一个进程内部,可能要同时干多件事,这时就需要同时运行多个“子任务”,我们可以把这些“子任务”称为线程。线程属于进程,是进程的一个实体。如果把进程比喻为工厂,线程就相当于工厂里的各个流水线。
线程控制块(ThreadControl Block,TCB)
保存运行期间线程的数据,TCB是线程存在的唯一标志。
线程和进程的区别
进程是资源分配和调度的一个独立单元,而线程只是CPU调度的基本单元。线程自己不拥有系统资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源(寄存器、堆栈、上下文)。一个进程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。一个进程至少包括一个线程。进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束。
多线程
指从软件或者硬件上实现多个线程并发执行的技术。
并发
两个或多个事件在同一时间内发生,在单CPU系统中,这些事件分时交替执行。
并行
两个或多个事件在同一时刻发生。在多处理器中,进程可以交替执行,还能重叠执行,实现并行处理。
临界资源
一次仅允许一个进程使用的资源,如 打印机。
临界区
每个进程中访问临界资源的那段代码。
互斥
进程之间访问临界资源时相互排斥的现象。
同步
进程之间存在依赖关系,一个进程结束的输出作为另一个进程的输入。具有同步关系的一组并发进程之间发送的信息称为消息。
异步
和同步相对,同步是顺序执行,而异步是彼此独立,在等待某个事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。实现异步可以采用多线程技术或者交给其他进程来处理。
中断
当出现需要时,CPU暂停执行当前程序,转而执行新程序的过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的事务。此时,CPU暂时中止当前程序的执行转而处理这个事务,这个过程就叫做中断。
04
CPU的工作状态
大多数计算机系统将CPU执行状态分为管态与目态。
管态
supervisor(管理者)mode,又叫特权态、系统态或者内核态。CPU在管态下可以执行指令系统的全集。如果程序处于管态,则该程序就可以访问计算机的任何资源,即它的资源访问权限不受限制。通常,操作系统在管态下运行。
目态
object(目标)mode又叫常态或用户态。处于目态时,程序只能执行非特权指令,不能直接使用系统资源,也不能改变CPU的工作状态,并且只能访问这个用户程序自己的存储空间。
为什么叫object mode呢?
通常CPU会执行两种不同性质的程序:一种是操作系统内核程序;另一种是用户自己写的程序或系统外层的应用程序。
对操作系统而言,这两种程序的作用不同,前者是后者的管理者,因此“管理程序”要执行一些特权指令,而“被管理程序”出于安全考虑不能执行这些指令。因为管理者需要管理它,它就是管理者的管理目标,所以就叫object mode。
目态(用户态)→管态(内核态)
从用户态切换到内核态,可以通过系统调用、异常、外部设备的中断这三种方式实现。
系统调用
这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。系统调用机制的核心是使用了操作系统为用户开放的中断。
异常
当CPU在执行用户态程序时,发生了某些事先不可知的异常,这时就会切换到处理此异常的内核程序中,也就转到了内核态。
外部设备的中断
当外部设备完成用户请求操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令,转而去执行与中断信号对应的处理程序(该程序在内核态),如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。例如,硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中,执行后续的操作。
05
操作系统的特征
并发
两个或者多个程序在同一时间内发生。
共享
系统中的资源可供内存中多个并发执行的进程共同使用。
虚拟
把一个物理上的实体变为若干个逻辑上的对应物。
异步
在多道程序环境下,允许多个进程并发执行,但因资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推送,这就是进程的异步性。
免责声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。
推荐阅读:
几种常见的校验算法
微软发布更强的 Terminal 2.0路线图
分享一篇专治MCU各种 HardFault 的库
关注微信公众号『strongerHuang』,后台回复“1024”查看更多内容,回复“加群”按规则加入技术交流群。
长按前往图中包含的公众号关注