打印

再来一道功夫题如何

[复制链接]
3778|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
djyos|  楼主 | 2008-2-25 10:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    昨天一道关于局部变量的题,大家争得不亦乐乎,褒贬皆有之,实为论坛好现象。
    今天再来一道,出题之前先声明,与昨天一样,本题并不寻求标准答案,但求各抒己见。
出题了:
谈谈强实时系统和多道程序设计的关系,两者是否矛盾,可否统一?
在强实时环境中可以完全实现多道程序设计吗?
如果不能,有什么限制?

相关帖子

沙发
dld2| | 2008-2-25 10:41 | 只看该作者

先说说你对这两个名词的看法吧

何为“强实时系统”
何为“多道程序设计”

使用特权

评论回复
板凳
啊龙| | 2008-2-25 10:47 | 只看该作者

闲来无事,坐个沙发.

强实时系统是要求立即响应请求的系统吗?感觉这就象个公司,就这么些人,你又要客户多,又要立即给客户做好,如果客户很好说话,勉强说过去,如果不好说话,只有一个办法,招人吧.

使用特权

评论回复
地板
HWM| | 2008-2-25 10:48 | 只看该作者

LZ:若能闹清楚何为强实时(或硬实时)和弱实时(或软实时

非实时就不错了。

使用特权

评论回复
5
啊龙| | 2008-2-25 10:51 | 只看该作者

没坐上啊!写的多了,下次就打一个字.

使用特权

评论回复
6
dld2| | 2008-2-25 10:52 | 只看该作者

立即响应?

响应总有延迟的。

使用特权

评论回复
7
sz_kd| | 2008-2-25 10:53 | 只看该作者

路过

使用特权

评论回复
8
啊龙| | 2008-2-25 10:55 | 只看该作者

这个立即当然不是同时的意思.至少在这个系统中是最短的时

使用特权

评论回复
9
dld2| | 2008-2-25 11:00 | 只看该作者

不是最短时间,是在限定时间之内。

使用特权

评论回复
10
HWM| | 2008-2-25 11:04 | 只看该作者

呵呵,这个限定时间可不是指响应喔,指的是完成的时间。

使用特权

评论回复
11
啊龙| | 2008-2-25 11:04 | 只看该作者

呵呵,dld2很清闲啊,你说的不错,这个只可意会,不可言传.

使用特权

评论回复
12
djyos|  楼主 | 2008-2-25 11:10 | 只看该作者

名词解释一下

多道程序设计:能够把多道互相独立的、不相关的程序同时装入系统,共享CPU及内存等资源,并且在宏观上同时执行的程序设计方法。
强实时系统:必须在限定的时间内正确地完成计算任务的系统,如果在限定的时间内不能完成计算,即使得出了正确的结果也会导致严重后果。

使用特权

评论回复
13
dld2| | 2008-2-25 11:23 | 只看该作者

那么

你说的多道程序设计大概是指“多进程”。例如windows和linux。
一般不用它们做强实时工作,因为没有提供满足强实时条件的机制。
但它们也会通过改造来设法提供这样的机制,比如wince和rt linux。

这个时候,是否满足实时性,就看系统的具体需求了。

使用特权

评论回复
14
djyos|  楼主 | 2008-2-25 11:44 | 只看该作者

知其然,知其所以然

    多道程序设计不等于linux和windows,许多人知道windows和linux不能做强实时应用,但却少有人知道其为什么不能做强实时应用。
    是不能实现?还是不实现?
    若不能实现,为什么不能实现?
    若不实现,那为什么不实现呢?
    谁都知道,在嵌入式应用中,linux不能提供实时性能是一个短板,难倒不能改造吗?不能改造的原因是什么?不要提rtlinux,因为rtlinux不是在linux中实现实时,而是把linux作为实时系统中的一个非实时模块加载的,该实时系统并不是linux。

使用特权

评论回复
15
computer00| | 2008-2-25 12:17 | 只看该作者

照这个题目来看,只能回答“在一定范围内能实现。”

使用特权

评论回复
16
dld2| | 2008-2-25 12:22 | 只看该作者

又开始莫名其妙了

是想说调度策略还是想说上下文切换开销?

使用特权

评论回复
17
龙飞天下| | 2008-2-25 15:03 | 只看该作者

只要cpu的速度足够高,是完全可以实现

其实任何cpu都是单任务流水线式的操作。
据个流水线的例子:
一个流水线上面,
第一:每天按计划生产不同的产品,产品甲,乙,丙、丁,其实公司要求是一个星期能够完成或者公司更加要求是甲、乙、丙、丁按照顺序出货,但是流水线在一个星期内完成了,这就实现了多路产品同时生产的现象。
第二:突然再生产的过程中,来了一个急件A,要求收到任务的当天出货,这时候流水线上可能在生产B产品,这时候就把B产品停止,去生产急件A,这就是所谓的实时处理,同样的当天把A产品当天生产好,这就是响应及时,接下来继续去做乙、丙、丁产品。如果还能够完成任务,那就实现了实时系统和多道程序设计相结合。 
第三:如果这条流水线的能力很弱,连急件A都不能够及时生产出来,这就是所谓响应不及时,我看是不会将产品选择这样的流水线生产,应该去选择更快的处理能力流水线(CPU)。
理论上只要cpu足够快,快到满足系统要求就可以。

使用特权

评论回复
18
phoenixmy| | 2008-2-25 15:16 | 只看该作者

得看你任务重不重



还得看任务多不多
所以楼主说的只可能在一定范围内实现

除非再挂上协处理器帮忙干活

使用特权

评论回复
19
judge| | 2008-2-25 23:02 | 只看该作者

呵呵。 谈这个要讲先决条件的。

使用特权

评论回复
20
djyos|  楼主 | 2008-2-27 21:15 | 只看该作者

愚见,请大伙指正

    这道题的起因是某日一位linux高手认为uclinux可以实现实时应用,于是我给他讲多道程序与实时要求之间的矛盾。我对计算机理论只有皮毛的认识,惶恐之中,也不知自己给那位老兄讲的是否正确,在此发帖,实想听听各路高手们的见解,三人行,必有我师嘛。但失望之至,坛子里的大拿们对此问题都不屑一顾,现把自己的观点拿出来晒晒,欢迎砸砖。
    我认为,多道程序设计与实时性是互相矛盾的,两者是鱼与熊掌的关系,不可兼得之。实时性要求的是“在限定的时间内完成任务”,设计者只有能够准确估算任务的完成时间,才有可能知道自己的任务能否在限定的时间内完成,对于设计者来说,自己写的程序,是可以估计执行时间的,而如果任务执行过程中给一个位置因素打断,而设计者不能估算中断时间,则任务完成时间就变得不可估计,这与任务是否重、处理器是否足够快以及有没有协处理器没有关系。所以,如果设计者能够控制任务的开始执行时间,且执行过程中不要给未知因素打断,则设计者可以判断是否可以满足实时性条件。那么实时操作系统应该有这样的特性:
1、设计者能够控制任务开始时间。
2、任务执行时不能被未知因素打断。
    我们再来看看多道程序设计,它要求多个互不相关的程序同时在系统内宏观并行运行,互相不影响。假设其中程序a和程序b都是实时程序,如果a要求从时间t1开始执行才能满足实时性,而t1时间正好在执行b,那么是否允许打断呢?如果允许打断,因为a和b互不相关,故b不知道自己会被a打断多长时间,所以b变得非实时。如果不允许打断,显然不满足实时性的第一个条件,a的实时性得不到满足。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

454

帖子

1

粉丝