实时系统与非实时系统

实时操作系统是保证在一定时间限制内完成特定功能的操作系统。
实时操作系统有硬实时和软实时之分:
硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的,适用于对实时性要求特别高的场合,如工业过程控制、汽车安全控制系统、武器控制系统;
软实时按照任务的优先级来响应事件,尽可能快地完成操作即可,并没有任务完成限时。适用于按照统计学来说任务都会在限定时间内完成,但是如果没有完成也没有特别严重后果的系统。例如,可以为确保生产线上的机器人能获取某个物体而设计一个操作系统。在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。在“软”实时操作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。
大体上,实时操作系统(RTOS)要求:
1.多任务
2.处理能被区分优先次序的进程线
3.一个中断水平的充份数量
分时操作系统是使一台计算机采用时间片轮转的方式同时为几个、几十个甚至几百个用户服务的一种操作系统。不存在响应时间确定性。

实时系统使用的任务调度的方式为抢占方式。允许调度程序根据某种原则,去停止某个正在执行的进程,将已分配给该进程的处理机,重新分配给另一进程。抢占的原则有:
1.时间片原则。 各进程按时间片运行,当一个时间片用完后,便停止该进程的执行而重新进行调度。
2.优先权原则。 当一个进程到来时,如果其优先级比正在执行的进程的优先级高,便停止正在执行的进程,将处理机分配给优先级高的进程,使之执行。
实时系统中一般采用基于优先级的抢占式调度和轮转调度的进程调度和中程调度相结合的调度策略。因此既可具有较大的灵活性,又能获得极小的调度延迟。

时间片轮转调度: 为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列。新来的进程加到就绪队列末尾。每当执行进程调度时,进程调度程序总是选出就绪队列的队首进程,让它在CPU上运行一个时间片的时间。时间片是一个小的时间单位,通常为10~100ms数量级。当进程用完分给它的时间片后,系统的计时器发出时钟中断,调度程序便停止该进程的运行,把它放入就绪队列的末尾;然后,把CPU分给就绪队列的队首进程,同样也让它运行一个时间片,如此往复。

Windows的线程调度算法: Windows采用基于优先级的抢占式调度算法,在一个具有较低优先级别的线程正在运行时,如果有一个较高的优先级别的线程进入就绪等待队列,或一个具有较高优先级别的线程等待时间结束时,就可以抢占处理器优先执行。在同优先级线程中采用时间片轮转执行。Windows还拥有时间配额概念,当一个线程进入运行状态时,它获得一个可以运行的时间配额,一个线程用完了自己的时间配额时,如果没有其他相同优先级的线程,Windows将重新给该线程分配一个新的时间配额使其继续运行。对于线程饥饿文件,Windows系统线程"平衡集管理器"每秒钟扫描一次就绪队列,发现是否存在等待时间超过300个时钟中断间隔的线程平衡集管理器将这些线程的优先级提升到15,并分配它一个长度值为正常值4倍的时间配额,被提升的线程用完它的时间配额后立即衰减到它原先的基本优先级。
从上述特性可知,windows本质上还是一个非实时系统,只不过拥有部分实时系统的特性。

线程的状态有如下几种:
已初始化 (Initialized):线程创建过程中的内部状态,此时线程不参与调度。
就绪 (Ready):线程已经准备好运行,等待被调度。
运行中 (Running):线程正在某一处理器上运行。
待命 (Standby):线程被选为某一处理器上下一个将要被执行的线程。
已终止 (Terminated):线程已终止,正在进行资源回收。
等待中 (Waiting):线程正在等待某个条件满足,比如事件对象被触发。
转移 (Transition):线程已经准备好运行但内核栈不在内存中。
延迟就绪 (DeferredReady):线程尚未被确定在哪个处理器上运行,此状态对于单处理器系统没有意义。
门等待 (GateWait):线程正在等待一个门对象。

你可能感兴趣的:(计算机基础)