我可以在没有任何操作系统平台的情况下执

Moh*_*ain 16 c operating-system

我用谷歌搜索了它,并在某处读到....

是的你可以.这种情况发生在嵌入式系统中

我想不,这是不可能的.任何平台都必须具有操作系统.否则,您的程序本身必须是一个操作系统.无论是软线还是硬线.没有操作系统,您的组件将无法运行.

我是对的还是任何人都能解释我的答案?(我对嵌入式系统没有任何想法...)

unw*_*ind 19

当然可以.所有(典型的)CPU需求都是电源和对存储器的访问,然后它将执行其硬编码的引导序列.

通常,这将涉及读取一些预定义的地址,将其中的内容解释为指令,并开始运行它们.

这些指令当然可以来自C程序,尽管在这个级别上,在汇编中编写非常早期的阶段(称为bootstrapping)更为常见.

这当然并不意味着,如果我从字面上阅读你的问题标题,那么任何C程序都是以这种方式运行的.如果程序假定有操作系统,但没有操作系统,则无法运行.这应该是非常明显的.


pmg*_*pmg 6

您可以在没有操作系统的系统中运行程序......该程序本身不必是操作系统.

想想汽车里面的所有电脑(或者你喜欢的处理器):发动机管理,空调,ABS ......,......
所有这些系统都有一个程序(可能用C语言编写)运行.没有处理器具有OS.

该标准明确区分hosted implementationsfreestanding implementations:

    5.1.2.1 Freestanding environment
1   In a freestanding environment (in which C program execution may take place
    without any benefit of an operating system), the name and type of the
    function called at program startup are implementation-defined. Any library
    facilities available to a freestanding program, other than the minimal set
    required by clause 4, are implementation-defined.
2   The effect of program termination in a freestanding environment is
    implementation-defined.

    5.1.2.2 Hosted environment
1   A hosted environment need not be provided, but shall conform to the
    following specifications if present.
    ...


小智 5

我认为编写设计用于在 QEMU(或虚拟化平台,Xen + MiniOS 是我的最爱之一)等模拟器下运行的“玩具”内核会很有趣。没有(太多)困难,您就可以启动并运行一个基本控制台并开始向其打印内容。它真的很有趣,有教育意义,同时又令人满意。

如果您正在 x86 上工作......并且让您的漂亮内核在 QEMU 下工作......那么它很有可能也可以在真实硬件上工作。你可能会喜欢它。

无论如何,你的问题的答案是肯定的。如果您碰巧使用引导加载程序,则尤其容易。例如,谷歌 memtest86 并获取代码。