• 几经考虑过后发现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的结构了~~

  • 相关阅读:
    ansible笔记(三)--模块讲解
    Linux 后台执行top 出错“TERM environment variable not set” “top: failed tty get”
    信息熵与TF-IDF 学习笔记
    大数运算 文献收藏
    树状数组 Binary Indexed Tree 学习笔记
    Linux Apache 安装(无外网)
    大数定律与中心极限定理
    Python 如何同时遍历两个文件
    监督学习模型分类 生成模型vs判别模型 概率模型vs非概率模型 参数模型vs非参数模型
    unittest生成测试报告
  • 原文地址:https://www.cnblogs.com/huqingyu/p/112105.html
Copyright © 2020-2023  润新知