再来一道功夫题如何

[复制链接]
5481|27
 楼主| djyos 发表于 2008-2-25 10:39 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;昨天一道关于局部变量的题,大家争得不亦乐乎,褒贬皆有之,实为论坛好现象。<br />&nbsp;&nbsp;&nbsp;&nbsp;今天再来一道,出题之前先声明,与昨天一样,本题并不寻求标准答案,但求各抒己见。<br />出题了:<br />谈谈强实时系统和多道程序设计的关系,两者是否矛盾,可否统一?<br />在强实时环境中可以完全实现多道程序设计吗?<br />如果不能,有什么限制?
dld2 发表于 2008-2-25 10:41 | 显示全部楼层

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

何为“强实时系统”<br />何为“多道程序设计”
啊龙 发表于 2008-2-25 10:47 | 显示全部楼层

闲来无事,坐个沙发.

强实时系统是要求立即响应请求的系统吗?感觉这就象个公司,就这么些人,你又要客户多,又要立即给客户做好,如果客户很好说话,勉强说过去,如果不好说话,只有一个办法,招人吧.
HWM 发表于 2008-2-25 10:48 | 显示全部楼层

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

非实时就不错了。
啊龙 发表于 2008-2-25 10:51 | 显示全部楼层

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

  
dld2 发表于 2008-2-25 10:52 | 显示全部楼层

立即响应?

响应总有延迟的。
sz_kd 发表于 2008-2-25 10:53 | 显示全部楼层

路过

  
啊龙 发表于 2008-2-25 10:55 | 显示全部楼层

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

  
dld2 发表于 2008-2-25 11:00 | 显示全部楼层

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

  
HWM 发表于 2008-2-25 11:04 | 显示全部楼层

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

  
啊龙 发表于 2008-2-25 11:04 | 显示全部楼层

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

  
 楼主| djyos 发表于 2008-2-25 11:10 | 显示全部楼层

名词解释一下

多道程序设计:能够把多道互相独立的、不相关的程序同时装入系统,共享CPU及内存等资源,并且在宏观上同时执行的程序设计方法。<br />强实时系统:必须在限定的时间内正确地完成计算任务的系统,如果在限定的时间内不能完成计算,即使得出了正确的结果也会导致严重后果。
dld2 发表于 2008-2-25 11:23 | 显示全部楼层

那么

你说的多道程序设计大概是指“多进程”。例如windows和linux。<br />一般不用它们做强实时工作,因为没有提供满足强实时条件的机制。<br />但它们也会通过改造来设法提供这样的机制,比如wince和rt&nbsp;linux。<br /><br />这个时候,是否满足实时性,就看系统的具体需求了。
 楼主| djyos 发表于 2008-2-25 11:44 | 显示全部楼层

知其然,知其所以然

&nbsp;&nbsp;&nbsp;&nbsp;多道程序设计不等于linux和windows,许多人知道windows和linux不能做强实时应用,但却少有人知道其为什么不能做强实时应用。<br />&nbsp;&nbsp;&nbsp;&nbsp;是不能实现?还是不实现?<br />&nbsp;&nbsp;&nbsp;&nbsp;若不能实现,为什么不能实现?<br />&nbsp;&nbsp;&nbsp;&nbsp;若不实现,那为什么不实现呢?<br />&nbsp;&nbsp;&nbsp;&nbsp;谁都知道,在嵌入式应用中,linux不能提供实时性能是一个短板,难倒不能改造吗?不能改造的原因是什么?不要提rtlinux,因为rtlinux不是在linux中实现实时,而是把linux作为实时系统中的一个非实时模块加载的,该实时系统并不是linux。
computer00 发表于 2008-2-25 12:17 | 显示全部楼层

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

  
dld2 发表于 2008-2-25 12:22 | 显示全部楼层

又开始莫名其妙了

是想说调度策略还是想说上下文切换开销?
龙飞天下 发表于 2008-2-25 15:03 | 显示全部楼层

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

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

得看你任务重不重

<br /><br />还得看任务多不多<br />所以楼主说的只可能在一定范围内实现<br /><br />除非再挂上协处理器帮忙干活<br />
judge 发表于 2008-2-25 23:02 | 显示全部楼层

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

  
 楼主| djyos 发表于 2008-2-27 21:15 | 显示全部楼层

愚见,请大伙指正

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

本版积分规则

60

主题

454

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部