天天看点

嵌入式学习(二)-分时操作系统与实时操作系统

分时操作系统(Time-sharing Operating System)

  分时操作系统将系统处理机时间与内存空间按一定的时间间隔(划分时间片),采用轮转运行方式轮流地切换给各终端用户的程序使用(例如规定每个作业每次只能运行一个时间片)。由于时间间隔很短,每个用户就感觉像独占全机一样。例如Linux下可以同时开不同的用户终端。

实时操作系统(Real Time Operating System), VxWorks、μClinux、μC/OS-II和eCos是4种性能优良并被广泛应用的实时操作系统

实时操作系统是指是指可以在规定的时间内完成任务,其中按对截止时间的要求来划分,可将实时任务分为硬实时和软实时任务。硬实时任务是指系统必须满足任务对截止时间的要求,否则将会出现错误,带来难以预测的后果(工业和武器控制系统常用)。

软实时任务对截止时间的要求不那么严格,即使偶尔出现错过截止时间,对系统影响也不会太大(信息查询系统和多媒体系统等常用)。

例子:在工业生产线上,工业机器人运作,若采用硬实时,当运算时间大于规定时间,那么工业机器人上停止运动,停止生产;而采用软实时,当当运算时间大于规定时间,工业机器人运转还是会继续运动,但产量会减少。

Linux系统属于分时系统的原因?

实时任务抢占时间是不可预期的。Linux内核化代码使用其中spin_lock锁,直至释放才会运行其他任务。

一个普通任务运行过程中,通过系统调用进入内核态拿了一把spin_lock这样的锁,在拿锁过程中,发生了硬件中断,于是cpu立即去处理硬件中断,在这个硬件中断处理函数(ISR)中唤醒了一个RT任务,硬件中断处理完后,还有可能处理软中断,也有可能没有,根据设备驱动实际场景决定(中断底半步)。当中断顶半步&底半步全部执行完后,事实上RT任务还是得不到运行的,因为前面有一个普通任务拿了spinlock锁,spinlock是会关抢占的,所以还要等到普通任务调用到spin_unlock的那一刻,RT任务才能进行抢占。

如何让linux变成一个硬实时操作系统呢?

给inux版本都有实时补丁,实质上为RT补丁将spin_lock锁变成可以抢占了,这样就不用等到unlock时才能调度到rt任务。