有懂操作系统的吗,给説説这个文章中提到的操作系统
3113 78
[1 楼] georgefan2008 [禁言中]
21-4-25 07:15
实时操作系统,分时操作系统,本质的区分是什么。

https://mp.weixin.qq.com/s/wudyEruLQXrPSQosC4BjSQ

听上去,分时操作系统就是多任务操作系统。
实时操作系统,就是单任务操作系统,典型地,如DOS。

本帖最后由 georgefan2008 于 2021-4-25 07:15 编辑
[80 楼] helpmejssz [泡菜]
21-5-9 20:57
现在设置中断还是8259A还是local APIC ? 特别现在是在MP环境下.
[79 楼] 老顽童 [陈年泡菜]
21-5-9 20:50
娲姝 发表于 2021-5-9 19:08
若我所记无错,RET 指令也能从中断子程序中返回...但它是不会清除中断屏蔽寄存器的,然后 CPU 就不再响应新的中断请求了
软中断的话是不是可以用RET退出?我好像有这个印象。另外,如果硬要用RET指令退出硬中断的话,可以在退出前开中断。
[78 楼] Album2018 [泡菜]
21-5-9 19:32
实时操作系统需要有强大的中断处理能力,在规定的时间内快速响应外部事件,对被控设备发出控制信号或数据信号。
分时系统一般应用于多任务或多用户场景,将时间片轮流分配给每一个用户或任务,让他们有处理的机会。
windows是一个基于优先级的多任务分时操作系统。
[77 楼] 娲姝 [泡菜]
21-5-9 19:08
老顽童 发表于 2021-5-8 22:11
你这就算是抬杠了。 用RETI 指令退出中断,硬件在执行这条指令的时候会清除中断屏蔽寄存器,这当然可以说是“退出中断处理程序时硬件自动开中断”。


若我所记无错,RET 指令也能从中断子程序中返回...但它是不会清除中断屏蔽寄存器的,然后 CPU 就不再响应新的中断请求了
[76 楼] 老顽童 [陈年泡菜]
21-5-8 22:11
娲姝 发表于 2021-5-8 20:28
RETI 指令会清除全局中断屏蔽寄存器,而不是硬件自动开中断
你这就算是抬杠了。 用RETI 指令退出中断,硬件在执行这条指令的时候会清除中断屏蔽寄存器,这当然可以说是“退出中断处理程序时硬件自动开中断”。
[75 楼] Appalachian [泡菜]
21-5-8 21:26
CATWK 发表于 2021-05-08 10:06
C是用来写的,不是用来run的

受教了,谢谢
发布自 安卓客户端
[74 楼] 娲姝 [泡菜]
21-5-8 20:32
celeneg 发表于 2021-5-8 09:56
对的,想起来了。当年学单片机,处理中断程序的第一条好像就是屏蔽这个中断。


任一中断发生时,全局中断屏蔽寄存器自动置位,所以不需要屏蔽。

相反的,如果你需要实现中断嵌套,才需要手动清除全局中断屏蔽寄存器位,使得你的中断服务程序可以响应其它中断

[73 楼] 娲姝 [泡菜]
21-5-8 20:28
老顽童 发表于 2021-5-8 10:09
你想的是有这么回事,但是你可能记反了!

我印象里是这样的:中断发生的时候,硬件会自动屏蔽中断。进入中断处理程序后,第一条指令是“开中断”,以防止更高级中断被屏蔽,影响了实时性。虽然你执行了“开中断”指令,但只能开放更高级中断,硬件会保证同级和更低级中断不会发生。退出中断处理程序时硬件会自动开中断。中断处理程序中如果有一段程序不能被别的中断处理打扰,这段程序前要“关中断”过后要“开中断”。非中断处理程序如果有必要,也可以这样做。

几十年没写过这样的程序了,不知道记忆的对不对。


RETI 指令会清除全局中断屏蔽寄存器,而不是硬件自动开中断
[72 楼] CATWK [泡菜]
21-5-8 18:06
Appalachian 发表于 2021-05-07 15:39
工控领域用C的不要太多。


C是用来写的,不是用来run的
发布自 安卓客户端
[71 楼] alchen [老坛泡菜]
21-5-8 17:40
我曾经想在几十k到百k的内存上基于开源实时操作系统eCos搞pda,当时想和需要运行在数m内存的linux区别开来。但我显然低估了芯片的发展速度,因为很快数百m到数g的系统就流行了,基于linux 和其他类unix的设备大兴其道。搞电脑的,一旦估计错了趋势,错误是致命的。 本帖最后由 alchen 于 2021-5-8 17:43 编辑
[70 楼] Marbas [泡菜]
21-5-8 16:57
天高云清 发表于 2021-5-6 11:55
不对,参考我刚才发的图片


这个扯不清,汽车对我们这些普通人来说就是个黑盒子。黑嘴证明不了他们的观点,引用来的资料也证明不了所说的内容。
[69 楼] BlackEyes [资深泡菜]
21-5-8 15:42
之前写了个回复, 不知怎么审查不合格, 直接给删除了。

以前CPU 处理能力还不那么强大的时候, 实时系统还不少, 像什么pSOS,Vxworks之类, 实际上连windows好像都推出过实时内核,不过似乎没人用, 现在各种新的CPU处理能力强大, 越来越多实时系统都开始在linux上实现了吧, 例如现在的通讯系统。

实时系统的最大差异,一个是更灵活的任务优先级控制; 一个是更高精度的时钟任务。 虽然说实时系统事件处理基本都是基于中断, 但是大多数事件的处理不可能都在中断处理程序里,还是要转给相应的处理任务, 所以任务调度的优先级设置就要求比较强; 时钟方面, 像windows系统的时钟调度任务最小也在10ms级别, 实时系统对时间响应要求更高, 这个级别显然是不够。

楼下都说中断处理, 哪个操作系统没有中断处理, 完全不是实时系统的差异化特点。除了一些很简单的应用,大部分实时任务都不可能在中断里完成。 本帖最后由 BlackEyes 于 2021-5-8 16:08 编辑
[68 楼] 老顽童 [陈年泡菜]
21-5-8 10:09
celeneg 发表于 2021-5-8 09:56
对的,想起来了。当年学单片机,处理中断程序的第一条好像就是屏蔽这个中断。
你想的是有这么回事,但是你可能记反了!

我印象里是这样的:中断发生的时候,硬件会自动屏蔽中断。进入中断处理程序后,第一条指令是“开中断”,以防止更高级中断被屏蔽,影响了实时性。虽然你执行了“开中断”指令,但只能开放更高级中断,硬件会保证同级和更低级中断不会发生。退出中断处理程序时硬件会自动开中断。中断处理程序中如果有一段程序不能被别的中断处理打扰,这段程序前要“关中断”过后要“开中断”。非中断处理程序如果有必要,也可以这样做。

几十年没写过这样的程序了,不知道记忆的对不对。
[67 楼] celeneg [禁言中]
21-5-8 09:56
老顽童 发表于 2021-05-07 06:18
中断是有优先级的,先响应优先级高的中断,处理完毕之后才能响应优先级低的中断。

如果第一次响应没完,会将中断屏蔽的,第二次请求必须等待。...
对的,想起来了。当年学单片机,处理中断程序的第一条好像就是屏蔽这个中断。
发布自 安卓客户端
[66 楼] arcsense [泡菜]
21-5-8 07:15
[65楼] fanndian 发表于 2021-05-07 20:39[/co?lor]
可以这样类比吗?CAN bus就是分时系统,flexray就是实时系统?
我想基本的can肯定不能类比为分时,flexray倒可以。是否实时取决于应用层,工业界有各种不同的应用层标准来获得确定性。所谓实时其实是牺牲了响应速度和处理能力来获得确定性的,最高效的难道不是直接响应中断吗,所以tesla那个回答说控制部分不使用(通用的)操作系统是恰当的。
发布自 安卓客户端
[65 楼] fanndian [资深泡菜]
21-5-8 04:39
可以这样类比吗?CAN bus就是分时系统,flexray就是实时系统?
[64 楼] Appalachian [泡菜]
21-5-7 23:39
CATWK 发表于 2021-5-6 12:09
一看就是外行写的,还running C code

工控领域用C的不要太多。
[63 楼] 天高云清 [资深泡菜]
21-5-7 18:09
CATWK 发表于 2021-5-6 12:09
一看就是外行写的,还running C code

受访者 JB Straubel,,chief technology officer for Tesla
[62 楼] 老顽童 [陈年泡菜]
21-5-7 14:18
celeneg 发表于 2021-5-6 10:15
一直不太明白,实时系统,如果响应服务比较复杂,第一次响应没完,又来了第二次请求,这还是实时系统吗?

或者说,是否实时,要看硬件能力?足够强的硬件上,才能实现真正的实时?
中断是有优先级的,先响应优先级高的中断,处理完毕之后才能响应优先级低的中断。

如果第一次响应没完,会将中断屏蔽的,第二次请求必须等待。如果等待会造成错误后果,说明你的计算机速度不够,不能执行这种任务,必须升级计算机。

没有所谓“真正的实时”,因为无论是硬件还是软件,都是需要时间的。如果等待时间足够短,短到没有妨碍,就可以认为是“真正的”实时。

是否实时,关键问题不是足够强的硬件,而是软件处理时间。软件处理时间,要比硬件响应时间长得多。
[61 楼] cnzxy [泡菜]
21-5-7 13:49
celeneg 发表于 2021-5-6 10:15
一直不太明白,实时系统,如果响应服务比较复杂,第一次响应没完,又来了第二次请求,这还是实时系统吗?

或者说,是否实时,要看硬件能力?足够强的硬件上,才能实现真正的实时?

实时系统的可调度性是可计算的。也就是在一定的硬件下,系统能够实时调度多少个任务是有限度的。
实时系统对进程或任务是有要求的,进程不能随意贪婪地使用CPU的,每个周期消耗的处理器时间是基本确定的。
实时系统下不允许安装类似360全家桶或腾讯全家桶能把i7处理器都跑卡的软件。硬实时系统下的所有应用程序往往都是由一个团队设计的。
[60 楼] cnzxy [泡菜]
21-5-7 13:42
现代操作系统都是分时系统。就是用进程的模型来共享处理器时间的,里面有个时间片的概念,比较短。每个进程用完时间片后就释放CPU,操作系统调度另一个进程。
实时系统也是分时系统,也是多任务来共享CPU,只是调度算法不同,会根据优先级保证调度的时间正确。另外实时系统一般不会使用虚拟内存这类耗时的技术。
[58 楼] cxy4321gmail [注销用户]
21-5-7 06:25
用户已注销,历史内容不予显示
[57 楼] 水牛 [泡菜]
21-5-6 12:50
celeneg 发表于 2021-05-06 10:15
一直不太明白,实时系统,如果响应服务比较复杂,第一次响应没完,又来了第二次请求,这还是实时系统吗?

或者说,是否实时,要看硬件能力?足够强...

所谓的实时不是一味的快,只要在预定的时间内完成就是"实时"。实时操作系统最大的特点是各个任务之间有严格的优先级,高优先级的任务准备就续之后会立即得到CPU执行,低优先级的任务就有在高优先级任务让出CPU之后才能被运行。Dos是单任务系统,实时,分时系统都是针对多任务系统而言的。
发布自 色影无忌小程序
[56 楼] arcsense [泡菜]
21-5-6 12:33
celeneg 发表于 2021-05-06 02:15
一直不太明白,实时系统,如果响应服务比较复杂,第一次响应没完,又来了第二次请求,这还是实时系统吗?

或者说,是否实时,要看硬件能力?足够强...
很多实时系统提供了各种数据结构、内部通信机制和状态管理之类的东西,就是为了顺畅工作,系统保证响应延迟在一定范围内,应用部分需要保证请求顺利被处理,都重要。
普通linux问题在于响应没准,汽车ecu不可能用这样的系统。
照相机是小系统,没必要用通用操作系统,高效率高可靠性是首要追求,以前玩过一下gopro,好像安霸用了一个日本的小系统。
发布自 安卓客户端
[55 楼] CATWK [泡菜]
21-5-6 12:09
天高云清 发表于 2021-05-06 03:52
黑嘴而已


一看就是外行写的,还running C code
发布自 安卓客户端
[54 楼] 天高云清 [资深泡菜]
21-5-6 12:00
nobie 发表于 2021-04-26 09:15
不知道那人说特斯拉用分时操作系统有没有根据。

特斯拉车辆核心控制系统跟车机是两套系统,核心控制系统用的什么不清楚,绝不可能用实时性差的...

参考我刚才的贴图、特斯拉对这个事情有解释
发布自 iOS客户端
[53 楼] 天高云清 [资深泡菜]
21-5-6 11:55
Marbas 发表于 2021-04-25 07:52
用我N年前学到的皮毛解释一下。
分时系统对实时性要求不高,基本上不能用在实时性比较高的场合,好处是功能高级且复杂、相对通用,我们常见的...

不对,参考我刚才发的图片
发布自 iOS客户端
[52 楼] 天高云清 [资深泡菜]
21-5-6 11:53
特斯拉的自动驾驶部分不基于操作系统,而大屏娱乐部分是基于Linux
发布自 iOS客户端
[51 楼] 天高云清 [资深泡菜]
21-5-6 11:52
nobie 发表于 2021-04-26 09:15
不知道那人说特斯拉用分时操作系统有没有根据。

特斯拉车辆核心控制系统跟车机是两套系统,核心控制系统用的什么不清楚,绝不可能用实时性差的...

黑嘴而已

发布自 iOS客户端