首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >机器如何理解操作系统内核代码

机器如何理解操作系统内核代码
EN

Stack Overflow用户
提问于 2012-10-14 23:21:34
回答 3查看 1.3K关注 0票数 2

我在这里有一个非常天真的问题,我希望你能纠正我在这里提出的任何错误的概念。问题如下:

我在我的机器上安装了ubuntu,现在我用C语言写了一个helloWorld.c程序。现在,在操作系统上,我安装了一个编译器,当我执行我的helloWorld.c程序时,操作系统调度编译器,它基本上将我的代码编译成机器码,最终,我执行。

现在我的内核代码是用C编写的,那么我的机器如何解释这些代码呢?假设我的内核代码是helloWorld.c,现在我不需要任何编译器来编译这段代码。另外,如果我在ROM或其他什么地方硬编码一个编译器,那么它是用什么语言写的?汇编语言?

如果我已经把问题说清楚了,请告诉我。

谢谢。

编辑:我所说的内核代码是指操作系统的代码。操作系统代码。我猜它是用C语言写的,对吧?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-14 23:33:37

我认为你的问题的症结是一种。

  1. C-code需要编译器来构建它。
  2. A C编译器本身是用C
  3. 编写的,那么我们最初是如何构建编译器的呢?

现在我们有可用的编译器。因此,当开发一个用C编写的较新版本的编译器(比如gcc4.7)时,首先会使用较旧版本的编译器来构建它。即gcc4.6(已经存在)将用于编译代码并生成最新版本,即gcc4.7。

这可以一直追溯到第一个编译器,正如您正确地提到的那样,它需要大量的汇编代码。

你可能想看看这个。

更新:

“第一次”运行 OS+compiler的一种相当常见的方法是交叉编译。这里是一个 of all one needs to和how one去做什么。在工程界,这个过程被称为将操作系统“移植”到特定设备/体系结构的

从本质上讲,一个人需要的第一个基本要素是:

  1. kernel
  2. libc
  3. compiler
  4. shell
  5. basic OS utils
票数 14
EN

Stack Overflow用户

发布于 2012-10-14 23:27:00

内核也被编译成特定于您的处理器架构的机器语言,与生成的helloWorld程序相同。

正如你所说,有人用C语言编写了内核,但是在一台已经有操作系统并且能够编译你的新内核的计算机上编译它。

曾几何时,内核是用机器语言手工编写的,然后用机器语言编写了更复杂的程序,包括用来编写替换内核的编辑器和编译器。剩下的都是历史了..。

票数 6
EN

Stack Overflow用户

发布于 2012-10-14 23:27:09

操作系统“内核”通常在机器的MODE0中运行。它可以直接访问所有硬件,并为其启用了更多指令。如果你的HELLO WORLD是直接访问硬件的,那就把它写到内核里面..然后..。首先,您的引导加载程序将从内核所在的位置获取二进制数据,然后设置操作系统内核执行的环境。这反过来将为您执行程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12883566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档