QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1104|回复: 4

请教几个困惑我已久的问题

[复制链接]
发表于 2004-12-9 17:32:06 | 显示全部楼层 |阅读模式
1。linux在某些方面比其他OS好,是因为它是用c写的吗?

2。linux是用c写的,那是怎么让它被x86机器认识的?用的什么编译器?编译器又是用什么写的?怎么保证从C向汇编转换的效率的?

3。linux内核编译器是不是保证linux优秀品质最重要的因素?

4。linux内核编译器可以编译其他用C写的OS吗?

哪位能回答的,在下感激不尽!!
自己不明白的或叫我看书去的请不要跟贴,谢谢!!
发表于 2004-12-9 18:05:01 | 显示全部楼层
1.no
2.通过asm
3.no
4.no
回复

使用道具 举报

发表于 2004-12-17 18:15:14 | 显示全部楼层
linux内核编译器? 有这东西吗?
GCC 吧?
回复

使用道具 举报

发表于 2004-12-18 15:00:17 | 显示全部楼层
[quote:1c4f79c2fe="gxl117"]1。linux在某些方面比其他OS好,是因为它是用c写的吗?
答:取决于多种条件,比如BUG的快速发现与修正是由于开放的开发模式使其得到lot of eyeballs的效应。良好的可移植性同样获益于这种开发方式,以及其良好的设计,严格遵循POSIX标准。总之操作系统(包括世间一切事物)的优缺点都不会取决于单一因素。编译器只是工具,重要的是人!

2。linux是用c写的,那是怎么让它被x86机器认识的?用的什么编译器?编译器又是用什么写的?怎么保证从C向汇编转换的效率的?
答:在Kernel中有一个硬件抽象层,将上层设计与硬件层分开,硬件层依据不同构架使用其平台专有指令实现,上层与硬件层的通信由硬件抽象层进行处理,从而最小化其受硬件变化的影响。所以X86架构的自举当然是由X86(i386)硬件层来实现的,这部分代码大部分是用汇编实现的。汇编器可以使用多种语言来实现,比如我们可以使用C来实现一个汇编器,这方面的例子有Nasm,Fasm等。而反过来我们又可以用汇编来实现一个C编译器,就好象我们用机床来加工一个零件,而又用零件来组合成一个机床一样。当然编译器也可使用滚雪球的方式来发展,比如我们先用C编译器开发一个简单的汇编器,然后再用这个汇编器来开发它自己,不断的丰富自己,象GCC,LCC等就是这样发展的。至于C向汇编的转换效率,除了正常的正文对换之外,可采取多种优化措施,比如合并已知量,内存对齐,循环优化,寄存器优化等。与第一个问题一样,这取决于设计编译器的人。

3。linux内核编译器是不是保证linux优秀品质最重要的因素?
答:答案与上面一样,重要的是人,而不是工具。

4。linux内核编译器可以编译其他用C写的OS吗?
答:只要其它内核的C代码符合标准,就可以用任何一种同样符合标准的C编译器来编译。但各种代码的情况千差万别,对于OS这样的项目,想作到编译器无关,只存在理论上的可能。

又开了一堂计算机普及课,公社别忘了给点讲课补贴[/quote]
很久不见阿,问好问好。不知斑竹到何处高就了?
回复

使用道具 举报

发表于 2004-12-22 20:15:11 | 显示全部楼层
强,很有独到见解。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 14:18 , Processed in 0.045201 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表