我爱嵌入式系统

当前位置:首页 > 软件天地 > 企业新闻 > 详细内容
几经考虑过后发现c++的确不适合于写操作系统
发布时间:2009/11/6  阅读次数:1747  字体大小: 【】 【】【
1.c++真的是为面向应用而产生的一种语言,并不是面向系统而产生的一种语言,C++的很多特性,比如,构造函数,析构函数,异常处理,全局对象...等等都需要操作系统的支持,然而在写操作系统的时候,操作系统还并不存在,这导致了,c++的这些先进特性并不能被使用,更不用说对stl标准模板库的使用了.

2.c++在编写操作系统时能使用的特性有函数重载,访问权限限制,但这对系统编写的有益贡献实在太少,而且由于c++编译器对c++的函数的命名扩展使得汇编程序无法与之接口,必须通过一个C语言做个C函数外壳,由汇编程序调用这个外壳,再由这个外壳调用c++函数,不旦麻烦,而且效率实在太低了

3.还有一点用c++很吸引人的就是虚函数.按我原来的打算准备在pyos中实现这样一种接口模式,比如定义一个统一的VGA控制接口(虚基类),然后,实现多个实体类,比如,一个虚基类定义了一个Print()纯虚函数做为一个接口,而每一个学生可以写一个自己的实体类以实现VGA的控制,内核通过虚基类的print调用,则可以动态配置使用不同的学生写的实体类中实现的Print()函数。这大大的提高了系统的实验性质,每个学生都可以用这个系统进行实验,这应当是用c++写os的一大优点。但由于c++语言的限制,使这种愿望是乎不可能实现。因为C++的虚拟函数所依靠的多态性质是实现于类的对象,而非实现于类的,也就是说你需要用
对象指针或引用来使用多态,而在操作系统未完成的时候,你是无法使用C++创建全局对象的,也就是说你无法得到一个VGA类的对象,因此,你就实现上述的接口特性。(注:由于在os完成内存分配之前,无法使用c++的对象,因此,如果要使用类,必须使用static声明类的成员及函数,但是,c++不允许将一个函数同时声明为static及virtual)

4.用c++写os的内核或许真的不是一个很好的选择,也许更实际的是用c及asm完成一个os的微内核,在用c++写其余的接口部份~~~

嗯,也许应当重新改造pyos的结构了~~

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

51RTOS.com 版权所有  

Copyright 20006-2009 我爱嵌入式 ( 51RTOS.com ) All rights reserved 沪ICP备09080633号