首先有一个额外的想法, 如果一个机器(真实或虚拟), 若是能限制能力就好了(例如, 限制为只能使用 8086 指令, 只使用一兆内存等等)
8086 意味着只能有实模式, 常规内存 640 K, 任务切换需要自己实现.
目前对我来说, 任务切换是难点,我也不想实现得很彻底,或者说我仅仅是"假的"多任务,或者模拟多任务,因为我是想让各个任务按时间片轮换的,每个任务都在规定的时间内必须结束(自己结束). UC/OS-II 应该实现了任务切换,一来我还不是很懂,二来我也有点恐惧,因为我对被强行切换掉的任务继续执行总感觉有点不舒服.我希望各任务是协作式的,而不是强行剥夺.当然,我这里实际上也类似强行剥夺,因为我在每个任务中会判断自己的剩余时间,到了的话自己结束(这和被强行结束不同的是,这个任务的一次调度被完成了,而不是被"粗暴地"中断了).但是显然,这样增加了各个任务的书写复杂度,因为每个任务自己都要盯自己的表,而且下次被调度的时候必须考虑能接着执行,这样,一个大的任务可能需要分片,类似重入.我对多任务懂得不多,所以,这样的想法应该不是很好.也许是最糟的多任务处理方法之一!
然后说说 GUI, 我希望是一个"跨平台"的层,可能有点象 SDL, 但是, 我希望图形对象都是用矢量描述的, 而且希望借鉴 *nix 的 c/s 模式, 这样, 实现起图形终端可能比 vnc 以及 rdp 等可能更少占用网络以及其他资源, 初步考虑还是使用比较标准一点的 xml 样的东西. 另外这样可以使 server 端不必和 client 端同等的显示能力, 甚至如果可能的话, 各个 clients 的图形对象也根据显示设备而重新布局过, 当然随之改变的还可能有颜色, 甚至风格(观感)等(这些可能属于 client 端的配置, 但"不强求", 也可以有一个选项使各 clients 的显示结果尽可能相同, 为了一致性). 但是这要求矢量描述中可能会加入事件, 还要考虑是只传送剪切域, 还是"全部"传送, 这里的全部有可能有多个虚屏. 这里可能可以参考 mozilla. 另外, 我想为了效率, remote clients 和 local clients 的实现可以不同.
在这里可能会提供一些"内置的"基本组件,例如 button, lable 甚至更高级的组件等等, 也可能允许安装自定义组件.
关于显示的另一个问题就是设备驱动, 通常使用的类似 BGI 的驱动, 但是有些设备并不提供类似的驱动, 而且更糟的是, 它完全不是 VGA 兼容的, 它也许提供一个库让你使用, 所以这时候为了可重用,可能还得加一层,或者有可能为之写一个 BGI 驱动么? 另外, 我希望这个层之上的应用是尽可能跨平台的. 看来它只好在各个平台下有不同的实现了,因为,BGI并不能应用在 linux 上. 虽然 linux 不能运行在 8086 上, 但是, 我总想尽可能地复用.
关于观感, 我想已经有很多可以借鉴的了, 但是面对极其有限的资源, 必须使代码尽可能地紧缩. 我觉得 windows 系统的已经比较可以了(其实这里可能缩小范围到显示风格或方案了), 它提供了有限的改变, 例如按钮各个部位的颜色等等.
为了可移植, 我想不用 c++, 而用 c, 而且觉得 c 的目标代码可能更精巧, 当然了, 我对 c++ 的理解也不是很多.
快吃饭了, 我先捡要紧的说. 其他的时候再补充!
最重要的是, 我希望搞个 RAD 工具来, 一个目标系统很好, 但是开发工具很差的东西, 并不完美, 不是吗?
好了, 午饭过后再说!
[ Last edited by jawbin on 2006-5-30 at 10:36 ]
8086 意味着只能有实模式, 常规内存 640 K, 任务切换需要自己实现.
目前对我来说, 任务切换是难点,我也不想实现得很彻底,或者说我仅仅是"假的"多任务,或者模拟多任务,因为我是想让各个任务按时间片轮换的,每个任务都在规定的时间内必须结束(自己结束). UC/OS-II 应该实现了任务切换,一来我还不是很懂,二来我也有点恐惧,因为我对被强行切换掉的任务继续执行总感觉有点不舒服.我希望各任务是协作式的,而不是强行剥夺.当然,我这里实际上也类似强行剥夺,因为我在每个任务中会判断自己的剩余时间,到了的话自己结束(这和被强行结束不同的是,这个任务的一次调度被完成了,而不是被"粗暴地"中断了).但是显然,这样增加了各个任务的书写复杂度,因为每个任务自己都要盯自己的表,而且下次被调度的时候必须考虑能接着执行,这样,一个大的任务可能需要分片,类似重入.我对多任务懂得不多,所以,这样的想法应该不是很好.也许是最糟的多任务处理方法之一!
然后说说 GUI, 我希望是一个"跨平台"的层,可能有点象 SDL, 但是, 我希望图形对象都是用矢量描述的, 而且希望借鉴 *nix 的 c/s 模式, 这样, 实现起图形终端可能比 vnc 以及 rdp 等可能更少占用网络以及其他资源, 初步考虑还是使用比较标准一点的 xml 样的东西. 另外这样可以使 server 端不必和 client 端同等的显示能力, 甚至如果可能的话, 各个 clients 的图形对象也根据显示设备而重新布局过, 当然随之改变的还可能有颜色, 甚至风格(观感)等(这些可能属于 client 端的配置, 但"不强求", 也可以有一个选项使各 clients 的显示结果尽可能相同, 为了一致性). 但是这要求矢量描述中可能会加入事件, 还要考虑是只传送剪切域, 还是"全部"传送, 这里的全部有可能有多个虚屏. 这里可能可以参考 mozilla. 另外, 我想为了效率, remote clients 和 local clients 的实现可以不同.
在这里可能会提供一些"内置的"基本组件,例如 button, lable 甚至更高级的组件等等, 也可能允许安装自定义组件.
关于显示的另一个问题就是设备驱动, 通常使用的类似 BGI 的驱动, 但是有些设备并不提供类似的驱动, 而且更糟的是, 它完全不是 VGA 兼容的, 它也许提供一个库让你使用, 所以这时候为了可重用,可能还得加一层,或者有可能为之写一个 BGI 驱动么? 另外, 我希望这个层之上的应用是尽可能跨平台的. 看来它只好在各个平台下有不同的实现了,因为,BGI并不能应用在 linux 上. 虽然 linux 不能运行在 8086 上, 但是, 我总想尽可能地复用.
关于观感, 我想已经有很多可以借鉴的了, 但是面对极其有限的资源, 必须使代码尽可能地紧缩. 我觉得 windows 系统的已经比较可以了(其实这里可能缩小范围到显示风格或方案了), 它提供了有限的改变, 例如按钮各个部位的颜色等等.
为了可移植, 我想不用 c++, 而用 c, 而且觉得 c 的目标代码可能更精巧, 当然了, 我对 c++ 的理解也不是很多.
快吃饭了, 我先捡要紧的说. 其他的时候再补充!
最重要的是, 我希望搞个 RAD 工具来, 一个目标系统很好, 但是开发工具很差的东西, 并不完美, 不是吗?
好了, 午饭过后再说!
[ Last edited by jawbin on 2006-5-30 at 10:36 ]
