一、背景介绍
我们知道传统所说的“裸机编程”就是不带操作系统的编程,在系统需求相对比较简单的情况下使用裸机编程可以满足要求。
在Main函数中,写一个大循环(While),然后加一个定时器,分时间片的方式,定时去执行代码,就完成了简单的调度功能。
但是随着系统需求越来越复杂,此时就需要用到模块化设计方法以及多任务编程思想,否则后期软件升级维护成本将会急剧增加。
此时迫切需要一种机制来替我们完成各个任务之间的调度功能,使得开发人员能够更关注于应用软件的开发,提高软件开发效率,为此OS(Operation System)便应运而生!
二、什么是操作系统
1、介于应用层和目标硬件之间,提供中间层的软件。
2、提供应用软件和目标硬件之间的抽象层。
(1)管理和分配控制器资源(CPU、内存、设备等)。
(2)控制执行应用层程序和I/O设备的操作。
(3)以有效率的方式使用控制器硬件资源。
三、操作系统分类
1、分时操作系统(TSOS)
分时操作系统是使一台计算机采用时间片轮转的方式同时为几个、几十个甚至几百个用户服务的一种操作系统。
把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。
由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。
上图中,CPU是不可抢占的,即便高优先级的任务就绪了,也不能马上中断低优先级任务而得到执行,必须要等到低优先级任务主动挂起(sleep)或者时间片结束才能得到执行。
我们平常使用微软的windows、谷歌的Android、苹果的mac OS X这些操作系统,会遇到应用程序无响应的问题,也是因为这个原因。即:硬件资源一旦被其他任务占用,本任务就得不到立即执行。
2、实时操作系统(RTOS)
实时操作系统”(Real Time OS)泛指所有据有一定实时资源调度以及通讯能力的操作系统。而所谓“实时”,不同语境中往往有着非常不同的意义。
某些时候仅仅用作“高性能”的同义词。但在操作系统理论中“实时性”所指的通常是特定操作所消耗的时间(以及空间)的上限是可预知的。
比如,如果说某个操作系统提供实时内存分配操作,那也就是说一个内存分配操作所用时间(及空间)无论如何也不会超出操作系统所承诺的上限。
实时性在某些领域非常重要,比如在汽车行业、工业控制、医疗器材、影音频合成、以及军事领域,实时性都是无可或缺的特性。
在上图中右边的任务2优先级高于左边的任务1。当优先级更高的任务2就绪的时候,即便任务1正在运行中,也必须立刻交出CPU的使用权,也就是引入“中断”机制,先执行任务2,等任务2执行完或者主动挂起(sleep)让出CPU的时候,任务1才能接着运行。在真实的程序运行中,一般有多任务执行的情况下,就会引入“中断”机制。
3、硬件虚拟化技术
理论上两种类型的操作系统有着本质的区别,但Hypervisor(硬件虚拟化技术,提供虚 拟平台支持多操作系统)的出现,让两者出现了“融合”。
Hypervisor是一种将操作系统与硬件抽象分离的方法,以达到host machine的硬件能同时运行一个至多个虚拟机作为guest machine的目的,这样能够使得这些虚拟机高效地分享主机硬件资源。
4、分时操作系统和实时操作系统的区别
评判标准 |
分时操作系统 |
实时操作系统 |
调度能力 |
高吞吐量 高效率使用系统资源 |
在规定时间内完成所需任务(即使在资源使用率很高的情况下) |
响应速度 |
快速平均响应时间 |
可预测对紧急事件的快速响应能力 已知最坏情况下对事件响应的时间 |