【问题标题】:Best operating system abstraction? [closed]最佳操作系统抽象? [关闭]
【发布时间】:2009-10-16 05:03:43
【问题描述】:

我正在寻找一些东西来抽象 C/C++ 中的标准操作系统功能:跨越/杀死线程、发送/接收消息、启动/停止计时器,甚至可能是内存管理,尽管我可能可以处理这些我自己有自己的缓冲池。

我希望能够在 Linux/windows 上进行开发和单元测试,然后为各种目标 O/Ses(嵌入式系统:eCos、FreeRTOS、VxWorks 等)重新编译 c/c++ 代码

尽可能“轻”的东西是最好的,希望只是一个库,甚至是宏的集合。

【问题讨论】:

  • 没有 C/C++。纯 C 的答案与 C++ 的答案完全不同。如果你问的是你想要的语言,而不是远亲,你会得到更有用的答案。
  • “发送/接收消息”是什么意思?又应该怎么做内存管理呢?

标签: c++ c operating-system abstract


【解决方案1】:

我保留了一个(长)OS Abstraction Libraries 列表。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    你看过the Boost library吗?它具有线程、计时器、内存管理和信号库。

    这个库并不小下载,但是大部分的库组件都是header-only实现(虽然OS抽象库往往要被链接),你只需要使用什么你需要。

    【讨论】:

    • errmmm 是/否(德语听起来更好...... J...ein(从 Ja 到 Nein))我试图查看 Boost,但不知所措(这可能是我为什么寻找精简、平均/精简的解决方案)如果您可以向我保证它可以完成基本的操作系统功能(平移/杀死线程、发送/接收消息、启动/停止计时器,甚至可能是内存管理)一台运行 Linux/windows/mac bsd 的主机 PC,并且它还可以为嵌入式系统生成(精简和高效)代码,那么您已经说服了我。我之前几乎被说服了,但没有足够的时间深入研究并确定....谢谢
    • 我也支持 Boost 作为抽象 OS 基本机制的一个很好的选择 看看 Interprocess, Thread 和 ASIO library
    • 有线程(Boost Thread)、进程间消息传递(Boost Interprocess)和定时器(Boost Timer)的Boost库。内存管理是一个相当广泛的话题,但 Boost 有各种用于内存管理的容器和智能指针。它肯定会在 Linux、Windows、Mac OSX 和 BSD 上编译和运行。它可能会在很多嵌入式操作系统上运行。至于库是否精益高效,就看你如何定义“精益”和“高效”了。
    • Boost 开始看起来很不错了……谢谢大家
    【解决方案3】:

    为什么不直接调用POSIX 函数(POSIX1 似乎满足了你的所有需求)并在不兼容的操作系统(被理解为 Microsoft Windows)之上安装一个 POSIX 层?

    【讨论】:

    • Microsoft Windows 从 NT 开始就与 POSIX 兼容,它只是为每个可以选择的函数返回了“未实现”的等价物;不幸的是,POSIX 允许如此多的功能符合 POSIX 并不一定意味着可用,因此需要兼容层。
    【解决方案4】:

    我认为 boost 值得研究;它可以为您提供操作系统抽象,还可以提供编译器独立性等等。当然,它确实需要 C++。其他选项:Posix。

    在您的列表中:
    eCos、VxWorks、Linux:良好的 posix 支持,所以你可以使用它。 freertos:见link

    Windows 缺乏开箱即用的良好 posix 支持(请参阅wikipedia Posix) 如果 cygwin 适合你,你可以适当地使用它。如果你需要与 Visual Studio 混合,像 boost 这样的库似乎更有趣(你可以从它抽象出来)

    【讨论】:

      猜你喜欢
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2018-05-17
      • 2021-05-31
      相关资源
      最近更新 更多