操作系统
本人刚刚参加工作,学习软件的,现在公司要开发一个产品,要求实时性很高,所以不能用如windows操作系统因为windows系统是多任务的,CPU是以时间片轮转执行任务的,好象是20ms.这20ms对产品来说是不可行的,所以我想问一些关于操作系统的问题.
1) window系统把所有的后台服务关了,能只执行一个任务吗?如过不能怎么才能,有没有办法.只为一个特定的进程服务.
2) window系统是基于优先级的系统吗?如果是话,如何编写优先级.如果不是,有没有基于优先级的操作系统.
3) DOS系统是单用户单任务的,本人学计算机比较晚没用过DOS系统,DOS系统可以TbC 编写C,它是否支持MFC呢?一旦选用DOS系统的话,是不是非要在DOS系统下写c语言呢? 可不可以在windows下写移植到DOS下呢? DOS 系统是16位的吧 它和32位的windows 相比(硬件条件相同)效率差多少,多吗?
4)ms DOS 和 存DOS 有什么样的区别?
小弟问的问题可能有点多,希望各位大侠包含.
问题点数:50、回复次数:22Top
1 楼fslt1981()回复于 2006-08-30 16:03:27 得分 0
有什么语言描述错误的地方请谅解!~
Top
2 楼jixingzhong(瞌睡虫·星辰)回复于 2006-08-30 16:15:13 得分 0
4)ms DOS 和 存DOS 有什么样的区别?
===================
ms DOS 是在win下模拟dos 的,
很多特性都不一样,
比如 是实模式还是保护模式 ...Top
3 楼jixingzhong(瞌睡虫·星辰)回复于 2006-08-30 16:15:53 得分 0
......Top
4 楼jixingzhong(瞌睡虫·星辰)回复于 2006-08-30 16:16:09 得分 0
仔细看了看前面的几个问题,
汗 ...Top
5 楼fslt1981()回复于 2006-08-30 16:19:27 得分 0
jixingzhong谢谢你的回复!
前面的问题很难吗?Top
6 楼FreeFice(庄鱼)回复于 2006-08-30 16:32:28 得分 0
你可以在Windows下编写纯DOS程序。
建议使用BC++5.0或BC++4.5
当然,如果你能将你的程序查到时间控制器前的话,你可以在Windows下独占运行你的进程(当然,这时候windows实际上已不再工作了,不存在时间片划分问题)。Top
7 楼fslt1981()回复于 2006-08-30 16:49:23 得分 0
FreeFice(庄鱼)谢谢你回复!~
我只学过vc++6.0难道这个编译器和BC++还很大的区别吗? VC++编译器不能编写纯DOS程序吗?
查到时间控制器?没听过,按找您的意思如果windows不工作了,怎么运行我的程序的呀!是指cpu运行我的进程,而不运行windows了吗?如果查到话,有什么机制可以一直运行我的进程吗?Top
8 楼FreeFice(庄鱼)回复于 2006-09-01 16:05:00 得分 0
对不起,是笔误,应该是插到时间控制器前。
windows的所有进程都是由时间控制进程通过周期循环判定个进程的状态字进行仿真多任务并发处理的,所有的进程都会被加到一个进程队列里,有一个统一的状态字管理函数交给时间控制器进行周期性刷新判断,因此独占系统要么绕过时间控制器,要么令进程队列仅有一个进程。由于时间控制器本身也会产生进程判断,因而极有一个进程在进程队列里比较困难,但是通过底层处理将系统暂时宕掉,仅执行你的进程,大鞥进程结束以后再将系统唤醒,这在理论上还是可行的,有许多系统保护与恢复机制采取的就是类似操作。Top
9 楼xteaj(半桶水)回复于 2006-09-02 15:23:31 得分 0
3) DOS系统是单用户单任务的,本人学计算机比较晚没用过DOS系统,DOS系统可以TbC 编写C,它是否支持MFC呢?一旦选用DOS系统的话,是不是非要在DOS系统下写c语言呢? 可不可以在windows下写移植到DOS下呢? DOS 系统是16位的吧 它和32位的windows 相比(硬件条件相同)效率差多少,多吗?
TC肯定不支持MFC,因为MFC是针对Windows的,而TC是针对DOS的。当然一旦选用DOS是话,肯定要用DOS下的C语言。可以在Windows下写好了再移植到DOS下,但前题是你不能使用Windows的特性。
DOS系统是16位的,TC也是16位的。在利用硬件方面,当然是32位系统更优。但也要看你执行的功能。如果功能简单,是没有效率差别的。16位和32位的最大差别是在寻址上。16位只能使用最多4M的内存空间,而32位则可能使用4G(Win32中2G为数据空间,2G为代码空间)。
建议还是在Windows下作,在Windows下运行,用一个好一点的CPU,应该还是可以的。不知道你要实现的功能,不过我看过很多地球物理仪器,采样时间是微秒级的都可以实现(操作系统用Windows2000),做地震每次采48道数据(同时48组数据,每组1024甚至4096个浮点数,采样时间不到1s钟)。我不知道怎么实现的,但仪器可以做到。Top
10 楼amdyang(天门山人)回复于 2006-09-02 16:44:30 得分 0
单片机+keil+CTop
11 楼xteaj(半桶水)回复于 2006-09-03 09:24:19 得分 0
对不起,讲错了,16位系统段内可访问内存为64K,一个子程序段占用内存不大于64K。
在Huge模式下,可以动态分配空间,但每个数组最大64K。可以通过XMS或EMS访问扩展内存或扩充内存。Top
12 楼Peter_Cheung()回复于 2006-09-03 12:09:17 得分 0
dos 有Dr Dos, MS Dos, Free DosTop
13 楼redleaves(程序员)回复于 2006-09-05 19:00:02 得分 0
在Windows下,如果你的进程优先级够高.应该可以满足你的要求吧.
如果想用DOS.那最大的问题是如何支持其它设备.在DOS下,对于设备的控制,基本上都是应用程序自己完成的.
至于其它,除了OS的支持差.和WINDOWS下写程序是差不多的.现在还在更新的DOS下C++的编译器只有OpenWatcom C++.也可以写32位程序,访问4G内存.但像线程这类东西.就只有靠你自己了.
用DOS不是不行,主要是麻烦.什么事都要自己干...Top
14 楼herryhuang(Herry)回复于 2006-09-05 23:29:13 得分 0
说说我个人的看法:
首先,DOS作为16位(以及“扩展32位”)的操作系统,不太适合现在的软件开发,这可能导致数据存储一致性、代码可移植性、硬件兼容性以及功能扩展方面的麻烦。
而windows也不适合用来做实时性的工作,因为windows作为一个桌面操作系统,服务太多,有些关键服务是没办法关掉的,比方说你的应用要用网络资源,你就不能将网络服务关掉,另外windows采用比较复杂的内存映射机制,可执行文件是可以从硬盘映射到内存的(也许你自己的程序可以想办法控制,但是系统的DLL你就控制不了了),这样硬盘的性能可能也会对实时性有影响。
其实“实时”是一个相对过程,也就是说软件中的某些关键处理时间必须尽可能短,并且时间上的延迟比较小,响应速度快。而其他非关键业务(例如用户界面)还是可以忍受一点点地延迟的。
不太清楚你要的是什么类型的程序,一般来说实时性要求比较高的程序有三类:
1. 军方的专用软件 (我们不讨论这个)
2. 实时数据采集与处理 (一般来说对采集的实时性要求比较高,而处理的话只要跟得上采集的速度,时间延迟不要太大就可以了,这个可以考虑用实时性较好的器件,例如PLC来完成数据采集工作,然后用计算机进行数据处理)
3. 网络数据处理或其他嵌入式软件。(这种建议使用专门的实时操作系统例如vxWorks,RTLinux等等)
Top
15 楼jie00677(jie)回复于 2006-10-28 14:16:55 得分 0
实时的,用嵌入式吧!!!
windows的优先级队列太复杂了Top
16 楼nextec(水天玄)回复于 2006-11-17 09:09:16 得分 0
double R agorithm , i will explain to you when i shift my system at nightTop
17 楼megatops(猪哥)回复于 2006-11-17 13:03:28 得分 0
实时要求高的应用去选择一种RTOS就好了,目前开源的RTOS有很多。如果对实时性要求不是过于苛刻的一些实时linux或者RTEMS之类的就能胜任。
另外对你要求能用MFC~~有点不解~~到低你是需要做个什么东西?Top
18 楼rickerliang(专回0分贴(来交流不是为分))回复于 2006-11-17 14:17:10 得分 0
非实时os最主要的还是调度时所花的时间不能接收
就像windows这样的os,只要一产生调度,就可能错过实时任务的最后启动时间或最迟结束时间了
所以还是别用非实时os来完成实时任务Top
19 楼lyl_98(狙击手)回复于 2006-11-20 14:25:49 得分 0
vxworksTop
20 楼KthTes(const KthTes& rhs)回复于 2006-11-21 11:42:12 得分 0
同意楼上很多人的意见:还是不要用Windows的好。现在C/C++那么普遍,几乎所有平台上都可以做的。为什么非要用非实时的操作系统啊?Top
21 楼Schnecke(蜗牛)回复于 2006-11-23 14:51:52 得分 0
如果实时要求高,DOS也不成啊Top
22 楼clackflying(冰炎)回复于 2006-12-13 17:03:15 得分 0
用monta vista linux,实时性内核,保证最小10微秒精度(1G以上cpu)可兼容linux后台程序和大部分图形程序(GTK的),99级优先级设置Top




