c - 内核输入/输出

标签 c compilation operating-system kernel virtual-machine

好吧,我想我以前问过这个问题,但我想 100% 确定我做对了,

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

还有,内核算不算虚拟机?

最佳答案

Let's say I compile a C program. it's gets translated into bytecode, now what happens to that bytecode, does it immediately run on the processor, or does it get processed by the kernel first and then runs on processor after the kernel has manipulated it and handled the memory allocation & etc....

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

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

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

Also, is a kernel considered as a virtual machine?

此外,您的内核是真机的主要组成部分!那么,它自己怎么可能是虚拟机呢?

所以,明确的答案--- NO !

关于c - 内核输入/输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27366486/

相关文章:

c - 避免在 C 中读取输入后打印新行

c - 找不到链接器符号

javascript - Haxe JS 编译器从源代码中删除一个属性

variables - 为什么修改未声明为可变的变量时编译器不报错?

c - 为什么 ptr = (int*)12 和 *ptr = 42 在 C 中是错误的编程?

c - getopt 在 Windows 中不对参数进行排序

python - 是否可以本地编译 Python(超越 pyc 字节码)?

c - 在三个管道之间传输消息

c++ - Forks 和 Execlp 上的极度困惑

performance - 编程竞赛的单任务