32、大型应用从 Ada83 迁移到 Ada95 及 Ravenscar 技术应用案例分析

大型应用从 Ada83 迁移到 Ada95 及 Ravenscar 技术应用案例分析

1. Ada83 到 Ada95 迁移相关问题

在将大型应用从 Ada83 迁移到 Ada95 的过程中,遇到了一些技术相关的问题,下面将对这些问题进行详细分析。

1.1 任务运行时行为差异

对于“纯粹”的任务使用,未遇到兼容性或运行时差异。但在处理 TCP/IP 访问的代码中,部分代码使用了 Unix 的异步信号 IO 特性,以避免在 TCP/IP 输入输出时因某个任务调用阻塞的 Unix 系统调用而导致整个进程被阻塞。最初的想法是对复杂代码进行最小更改以使其在新运行时环境中工作,之后决定使用基于线程的 Ada 任务运行时来简化代码。在 Ada95 版本中,实现非阻塞 TCP/IP 层的包得到了简化,每个任务可以直接进行自己的 IO 系统调用,而无需通过一个中央 IO 任务来拦截 SIGIO 信号并唤醒可进行 IO 的任务。这种基于操作系统线程的改进后的 Ada 任务的新 IO 模式比基于信号的 IO 更高效。

1.2 详细阐述顺序问题

在 TACT 和 IFPS 系统开发期间,对详细阐述问题关注较少,因为 Alsys 编译器善于找到可行的详细阐述顺序。而 GNAT 编译器有多种处理详细阐述顺序的方式,默认行为是找到一个静态的详细阐述顺序,即编译器在编译时确定一个始终可行的顺序。当找不到这样的顺序时,GNAT 绑定器会报告该情况,此时有以下几种选择:
- 更改代码以找到静态详细阐述顺序 :这种解决方案有很多优点,详细解释可参考 GNAT 用户手册第 9 节。
- 让编译器

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值