快速体会操作系统常见基础概念
1 初识基本概念
1.1 操作系统
- 一个软件程序;
- 用于解决计算机多任务执行时的资源争抢问题;
- 管理计算机中的各种资源,确保计算机正常完成各种工作(任务),解决多任务环境中任务的调度和资源分配等问题。
1.2 系统资源
计算机中含有的可提供给计算机执行某些工作的软硬件资源
1.3 任务
- 计算机需要完成的某一工作
- 空间或资源有限时,多个任务进行时可能会产生冲突
1.4 进程
计算机正在执行的某一工作
1.5 资源争抢
多任务执行时需要共享有限的资源
1.6 顺序执行
任务一个接一个执行
1.7 多任务并行
多个任务同时执行(宏观层面,实际 CPU 可能分时切换 )
1.8 任务优先级
按照任务类型和控制需求规定的任务执行优先程度
2 高级操作系统的一般特性
2.1 任务切换
满足一个任务的某个需求进而满足另一个任务的过程(不一定完成整个任务的切换)
2.2 多任务并行
系统资源足够充足时,计算机同时执行多个任务(逻辑上的并行,物理 CPU 可能分时 )的过程
2.3 任务优先级
- 给每个任务分配的、表示任务重要性或进行频度的优先级值的大小所决定的各个任务执行的顺序。
- 例如当某类资源有限,而需要进行使用一类资源的多个任务时,不同任务会根据其设定好的优先级值来分别进行(高优先级的任务先执行)。
2.4 操作系统的作用
此时操作系统要做的事情,就是管理好资源的合理分配,满足每个任务的执行需求,同时能够灵活的处理不同任务执行时产生的突发情况,根据不同任务的优先级来调整任务执行的顺序。
3 时间片轮转与上下文切换
当有多个任务需要执行时,操作系统需要保证计算机轮流执行各个任务,此时操作系统给每个任务执行分配的时间就是所谓的“时间片”。
3.1 时间片
- 操作系统为执行各个任务所分配的一段固定时间
- 比如计算机当前要执行任务1、任务2、任务3等多个任务,此时操作系统就会给每个任务分配一段固定的时间,如10ms,此时计算机就会先用10ms执行任务1、在使用10ms执行任务2、在使用10ms执行任务3,这样反复去执行。这里的10ms就是所谓的“时间片”,这种按照时间片轮流执行多个任务的过程相当于"时间片轮转"。
3.2 上下文切换
各个任务之间进行执行状态的切换过程称为 “上下文切换”。
简单理解为让 CPU 从执行任务 A 切换到执行任务 B 时,需要保存任务 A 的执行状态(寄存器、程序计数器等信息 ),加载任务 B 的执行状态,这个过程就是上下文切换。因为操作系统轮流让CPU执行不同任务时,很难在一个时间片内就完成某个任务,所以在执行任务A的时间片结束切换到任务B的时间片的这个状态时,就需要记住前一个任务执行到的位置(上下文保存),避免后面再次切换到任务A的时间片时丢失上次进度。
在计算机中,操作系统通过合理的时间片机制和上下文切换来调度管理多个任务,保障计算机资源清晰合理的分配。
当操作系统为每个任务分配的时间非常短时,操作系统会以很快的速度轮询让计算机执行每一个任务,比如 10ms 的时间片。此时在每个任务之间的切换就很难被察觉,所以计算机呈现给任务的用户反应就是 “同时” 在执行,因此对于每个任务来说,就会感觉操作系统一直在给自己服务一样。
4 操作系统与任务调度
在计算机中,多个任务并行的情况是非常常见的,此时就很容易产生资源争抢或者说冲突问题。比如当资源仅足够支撑一项任务执行时,存在两个任务都需要获取这份资源,此时这俩任务就会发生资源争抢。这时候,操作系统就需要管理这些任务,采取一些策略来解决资源争抢问题。
4.1 常见调度策略
- 优先级分配
- 时间片轮转
- 根据不同场景业务需求,也可以两者结合进行。
4.2 优先级分配
操作系统根据不同任务的优先程度来分配资源。比如两个任务同时需要调用该资源时,操作系统会根据这俩任务的优先程度将资源优先分配给优先级高的一方。
4.3 时间片轮转
操作系统也可以通过分配时间片让多个任务公平地使用资源,避免一个任务长时间独占资源。
4.4 总结
操作系统通过对每个任务所代表的优先级以及使用时间片对资源合理的分配,保障每个任务所需要的资源得到满足,进而解决多任务并行时产生的资源争抢问题。
5 资源调度与资源争抢
对于单核 CPU(如早期的传统计算机、简单嵌入式设备 )、SMT32 等,其计算资源非常稀缺,MCU 只有一个算术逻辑单元 ALU(用于运算 )。此时若多任务并行,CPU 对 ALU 资源的调度就像一个 “资源竞争” 的场景。比如,我们需要在这个单片机上执行多个任务(任务 1、任务 2、任务 3 ),那么势必会出现各个任务对 CPU 资源的调度和争抢问题。
为了解决资源竞争等问题,我们可以给单片机加载一个操作系统,通过操作系统的一些(对 CPU )资源调度策略,来避免单片机(MCU )在多任务执行时产生的资源争抢冲突问题。
5.1 常见策略
- 批处理:按照各个任务产生顺序依次去执行多个任务。如最初的DOS操作系统就是这样处理的多任务;
- 优先级分配:操作系统设定一定的任务优先级规则,然后各个任务根据自身的优先级先后获取 CPU的ALU 资源,资源紧张时高优先级任务可 “抢占” 低优先级任务资源;
- 时间片轮转:操作系统为各个任务合理分配时间片,如10ns,然后各个任务按照时间片轮流使用CPU的ALU资源。每一个任务的时间片使用完后,需要等待下一个自己的时间片到来后使用CPU资源。
5.2 总结
在单片机中,可以通过以上资源调度策略合理的管理和控制单片机的 CPU 资源,保障每个任务都能够顺利执行,避免资源的浪费和争抢。
6 中断系统
6.1 中断
CPU正在执行任务时产生的突发事件,需要CPU暂停当前任务,立刻响应和处理这一事件,当处理完突发事件后,CPU会回到原来任务执行时产生中断前的位置继续往后执行。
在计算机系统中,中断的加入使得CPU能够在执行任务的同时,及时响应和处理异常或突发事件(如键盘按键、硬件故障),提高系统的实时性和灵活性。
7 非实时操作系统
对于任务的管理没有严格的时间限制,各任务执行时间的提前、延迟或波动,不会对系统(软硬件或任务)功能的有效性或整体运行造成严重影响,即对任务的时间约束没有严格要求的操作系统。
8 实时操作系统
对于各个任务执行的起始和结束时间点有较为严格的约束,各个任务执行时间的提前、延迟或波动会导致系统(软硬件或任务)功能失效或危险后果,即需要保证CPU在特定时间内响应和完成特定任务的操作系统。
- 软实时:对于 CPU 执行任务有特定的时间限制,但任务的某些波动导致整体的任务结果的延迟或失效不会造成极其严重后果(比如任务超时可能导致体验下降,但不影响系统安全 )
- 硬实时:对于 CPU 执行的任务有极其严格的时间限制,任务执行时间的微小偏差都会导致系统失效或造成严重后果。比如在一些工业控制、航空航天场景中,任务延迟可能引发危险,常见的硬实时操作系如 FreeRTOS 实时操作系统。
笔者小白,能力有限,以上内容难免存在不足和纰漏,仅供参考,各位阅读时请带着批判性思维学习,遇到问题多查查。同时欢迎各位评论区批评指正。谢谢。