操作系统可以在多个处理器上运行?

时间:2011-12-02 13:59:30

标签: assembly operating-system portability

ASM因处理器而异,因此您为处理器架构编写的代码不会为另一个处理器架构工作。但是为什么操作系统可以做到这一点,并且它们包含一些asm行代码的KLOC?

2 个答案:

答案 0 :(得分:5)

现代(或至少不是太旧)操作系统(如Linux)大多用C语言编写,并且只包含几行特定于平台的汇编代码。要移植到另一个架构,必须重写这样的汇编代码 - 这就是所做的。但是C代码可以重新编译,不需要重写它。虽然平台的汇编方言不同,但它们都是基于相同的概念(例如,通过MMU进行基于页面的内存管理)。一些操作必须在汇编中完成,因为可移植C不提供任何方法(例如任务切换或中断处理的初始步骤),但操作系统所做的大部分是纯算法,它可以在C中完成(例如,所有网络代码都在C中;只有通过以太网接口发送数据包的极低级别部分才需要最多十几行程序集。

答案 1 :(得分:4)

由于操作系统为每个支持的体系结构重新实现ASM部件,因此在构建时选择正确的部件?