为什么linux不是实时操作系统?

时间:2022-10-08 20:19:07
1、linux也有任务优先级,为什么不是实时操作系统?
2、linux的时间片,是针对同优先级的任务才有时间片吗?不同级别任务间呢?
3、linux的任务是同时进行,还是每次只运行一个任务?

7 个解决方案

#1


1.任务优先级和实时操作系统不是等同的,你有任务优先级,但你能在极短的时间内中断其他任务完成切换么?Windows同样也有任务优先级是不是?Linux的任务调度算法不唯一,时间复杂度也不一样,如果有实时性高的任务,Linux可以勉强实现软实时调度,硬实时做不了

2.以前看的一本书说Linux不是时间片轮转了,具体怎样忘了;Windows的情况记得比较清楚——时间片本身没有什么区别,区别在于调度方式,如果有高优先级的线程,Windows会只调度高优先级,对于多个同样优先级的线程,Windows采用公平调度,基本做到平分时间片

3.看你是多核还是单核CPU,多核能做到同时进行不多于内核数的任务

#2


引用 1 楼 jackyjkchen 的回复:
Windows会只调度高优先级,对于多个同样优先级的线程,Windows采用公平调度,基本做到平分时间片


那比如说我运行着qq,比如qq优先级大于影音播放器。单cpu下,qq一直开着,为什么电影还能播放呢?Windows只调度高优先级不是吗?

#3


引用 2 楼 ly61baby 的回复:
引用 1 楼 jackyjkchen 的回复:

Windows会只调度高优先级,对于多个同样优先级的线程,Windows采用公平调度,基本做到平分时间片


那比如说我运行着qq,比如qq优先级大于影音播放器。单cpu下,qq一直开着,为什么电影还能播放呢?Windows只调度高优先级不是吗?


QQ不是死循环,内部有休眠中断的时候,这时候低优先级就可调度

你写一个死循环,用windows的“real time”优先级(进程和线程都要设置),我保证你系统都动不了!

#4


引用楼主 ly61baby 的回复:
1、linux也有任务优先级,为什么不是实时操作系统?
2、linux的时间片,是针对同优先级的任务才有时间片吗?不同级别任务间呢?
3、linux的任务是同时进行,还是每次只运行一个任务?

Linux会把资源调度给最需要的那个进程
如何排序,我就不懂了

#5


引用 4 楼 xiangliangyu2008 的回复:
Linux会把资源调度给最需要的那个进程
如何排序,我就不懂了

根据优先级

#6


1)原始的linux通过修改内核和定制参数可以成为实时操作系统,可以看看实时操作系统的定义
2)内核调度对任何已经在就绪队列里的进程都分配时间片,可以看看内核任务调度机制;
3)对称多CPU下多个进程同时在多个CPU上运行.单CPU下内核轮流执行各个进程,某时刻只有一个进程在运行;

目前的实时LINUX系统做得较好的是商业化的几个,网上搜搜看看吧.

#7


引用 2 楼 ly61baby 的回复:
引用 1 楼 jackyjkchen 的回复:

Windows会只调度高优先级,对于多个同样优先级的线程,Windows采用公平调度,基本做到平分时间片


那比如说我运行着qq,比如qq优先级大于影音播放器。单cpu下,qq一直开着,为什么电影还能播放呢?Windows只调度高优先级不是吗?

调度之间的短暂时间片段,用户一般是感觉不到的。即使是同一优先级,也不至于一直就执行播放器吧,照样看电影也不会卡。

#1


1.任务优先级和实时操作系统不是等同的,你有任务优先级,但你能在极短的时间内中断其他任务完成切换么?Windows同样也有任务优先级是不是?Linux的任务调度算法不唯一,时间复杂度也不一样,如果有实时性高的任务,Linux可以勉强实现软实时调度,硬实时做不了

2.以前看的一本书说Linux不是时间片轮转了,具体怎样忘了;Windows的情况记得比较清楚——时间片本身没有什么区别,区别在于调度方式,如果有高优先级的线程,Windows会只调度高优先级,对于多个同样优先级的线程,Windows采用公平调度,基本做到平分时间片

3.看你是多核还是单核CPU,多核能做到同时进行不多于内核数的任务

#2


引用 1 楼 jackyjkchen 的回复:
Windows会只调度高优先级,对于多个同样优先级的线程,Windows采用公平调度,基本做到平分时间片


那比如说我运行着qq,比如qq优先级大于影音播放器。单cpu下,qq一直开着,为什么电影还能播放呢?Windows只调度高优先级不是吗?

#3


引用 2 楼 ly61baby 的回复:
引用 1 楼 jackyjkchen 的回复:

Windows会只调度高优先级,对于多个同样优先级的线程,Windows采用公平调度,基本做到平分时间片


那比如说我运行着qq,比如qq优先级大于影音播放器。单cpu下,qq一直开着,为什么电影还能播放呢?Windows只调度高优先级不是吗?


QQ不是死循环,内部有休眠中断的时候,这时候低优先级就可调度

你写一个死循环,用windows的“real time”优先级(进程和线程都要设置),我保证你系统都动不了!

#4


引用楼主 ly61baby 的回复:
1、linux也有任务优先级,为什么不是实时操作系统?
2、linux的时间片,是针对同优先级的任务才有时间片吗?不同级别任务间呢?
3、linux的任务是同时进行,还是每次只运行一个任务?

Linux会把资源调度给最需要的那个进程
如何排序,我就不懂了

#5


引用 4 楼 xiangliangyu2008 的回复:
Linux会把资源调度给最需要的那个进程
如何排序,我就不懂了

根据优先级

#6


1)原始的linux通过修改内核和定制参数可以成为实时操作系统,可以看看实时操作系统的定义
2)内核调度对任何已经在就绪队列里的进程都分配时间片,可以看看内核任务调度机制;
3)对称多CPU下多个进程同时在多个CPU上运行.单CPU下内核轮流执行各个进程,某时刻只有一个进程在运行;

目前的实时LINUX系统做得较好的是商业化的几个,网上搜搜看看吧.

#7


引用 2 楼 ly61baby 的回复:
引用 1 楼 jackyjkchen 的回复:

Windows会只调度高优先级,对于多个同样优先级的线程,Windows采用公平调度,基本做到平分时间片


那比如说我运行着qq,比如qq优先级大于影音播放器。单cpu下,qq一直开着,为什么电影还能播放呢?Windows只调度高优先级不是吗?

调度之间的短暂时间片段,用户一般是感觉不到的。即使是同一优先级,也不至于一直就执行播放器吧,照样看电影也不会卡。