内核输入/输出

时间:2014-12-08 20:39:10

标签: c compilation operating-system kernel virtual-machine

好吧,我想我之前已经问了这个问题,但我想100%肯定我做对了,

假设我编译了一个C程序。它被转换成字节码,现在该字节码发生了什么,它是否立即在处理器上运行,或者它是由内核首先处理,然后在内核操作它并处理内存分配后在处理器上运行。等....

此外,内核是否被视为虚拟机?

2 个答案:

答案 0 :(得分:1)

  

我们说我编译了一个C程序。它被翻译成字节码,   现在该字节码会发生什么,它会立即在该字节码上运行   处理器,或者它是由内核首先处理然后运行   在内核操作它并处理后的处理器上   记忆分配&等....

内核是操作系统的核心。在传统设计中,它负责内存管理,I / O,中断处理和各种其他事情。为了实现其功能,C库必须调用内核函数。这完全由编译器本身管理,但它可能在内部与内核通信。因此,编译器有一个主要作用。

编译后的代码可以是目标代码或二进制可执行文件的形式,即古代Windows操作系统上的program.obj和古老* nix机器上的a.out,或者当前Windows操作系统中的可执行文件,Linux等。

编译期间的源代码转换为目标机器的生成代码(可执行文件),使用寄存器和内存直接在系统(处理器)上运行, KERNEL 然后播放主要代码角色...

  

此外,内核是否被视为虚拟机?

另外,你的内核是真机的主要组成部分!那么,它本身就是一个虚拟机呢?

所以,明确回答--- NO

答案 1 :(得分:1)

不,它没有。 简而言之:内核的唯一作业是创建一个代表新进程的新控制块结构,并在内部将根据某些策略插入调度程序中进行调度。

然后激活二进制映像:内核为进程创建一个新的虚拟空间,创建一些可执行页面来存储可执行文件的二进制代码,一些其他页面用于数据,然后它开始执行main( )。 它将执行可执行文件中的任何二进制代码,而不进行任何检查。

考虑到这并不简单,关于二进制图像激活的这个过程还有很多操作。我建议你阅读一些介绍这些概念的操作系统书籍,然后阅读一本关于操作系统内部的书籍,以便更好地理解真正发生的事情。您还可以在可用时阅读内核源代码。

内核 NOT 是一个虚拟机,这是两个完全不同的概念。