几经考虑过后发现c++的确不适合于写操作系统

作者:萧寒 2004-9

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的结构了~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值