OS/X研究笔记(2) - 与AIX之比较,谁是真正的微内核
AIX:$ uname -a
AIX enron 3 5 002F129D4C00
$ which df
/usr/bin/df
$ file /usr/bin/df
/usr/bin/df: executable (RISC System/6000) or object module
$ ldd /usr/bin/df
/usr/bin/df needs:
/usr/lib/libc.a(shr.o)
/unix
/usr/lib/libcrypt.a(shr.o)
$ oslevel -r
5300-05
OS/X:
macmini:~ zachary$ uname -a
Darwin macmini.local 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009; root:xnu-1228.12.14~1/RELEASE_I386 i386
macmini:~ zachary$ which df
/bin/df
macmini:~ zachary$ file /bin/df
/bin/df: Mach-O universal binary with 2 architectures
/bin/df (for architecture i386): Mach-O executable i386
/bin/df (for architecture ppc7400): Mach-O executable ppc
macmini:~ zachary$ otool -L /bin/df
/bin/df:
/usr/lib/libutil.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.3)
请注意!OS/X下面的可执行程序都不需要链接kernel
我们来看看这个神奇的/usr/lib/libSystem.B.dylib
macmini:~ zachary$ file /usr/lib/libSystem.B.dylib
/usr/lib/libSystem.B.dylib: Mach-O universal binary with 4 architectures
/usr/lib/libSystem.B.dylib (for architecture ppc7400):Mach-O dynamically linked shared library ppc
/usr/lib/libSystem.B.dylib (for architecture ppc64): Mach-O 64-bit dynamically linked shared library ppc64
/usr/lib/libSystem.B.dylib (for architecture i386): Mach-O dynamically linked shared library i386
/usr/lib/libSystem.B.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
大概这就是Mach-O可执行格式跨硬件体系的奥妙之所在?
另外我们看到这个系统库是同时兼容32和64位的
而AIX用户应该都知道那个可恶的shr.o是有32位和64位之分的,不光是shr.o,AIX上面好多库都有64/32不同版本,一不小心链错了那可是要core dump的
[ 本帖最后由 ecloud 于 2009-5-23 23:06 编辑 ] 难道IBM故意不用可变参数,想推出多个OS版本赚钱?:mrgreen: Mach-O很NB呀 有才,可不是乱吹就可以的。 这就能体现 ? Darwin时代还是ppc,你用现在的看看:em21: Darwin时代还是ppc,你用现在的看看
m@qintoshi 发表于 2010-04-14 18:24 http://bbs.chinaunix.net/images/common/back.gif
10.6.3的依然是Darwin,只是剥离了PPC,但架构未变 10.6.3的依然是Darwin,只是剥离了PPC,但架构未变
Jobs.AE@ 发表于 2010-04-17 03:02 http://bbs.chinaunix.net/images/common/back.gif
一般來説,darwin俗稱ppc,現在的intel嚴格來説已經不是darwin了。只是apple懶得換而已。
ppc和intel的工作原來都不同,何談構架呢。。。 本帖最后由 ecloud 于 2010-05-04 12:59 编辑
一般來説,darwin俗稱ppc,現在的intel嚴格來説已經不是darwin了。只是apple懶得換而已。
ppc和intel的 ...
m@qintoshi 发表于 2010-05-03 09:23 http://bbs2.chinaunix.net/images/common/back.gif
darwin指的是Apple在基于Mach3.0之上自己编写的一套BSD风格的services,和Mach一起所构成的一个混合内核整体。Mach本身的特性就是与硬件平台无关,所以darwin跟ppc没有半毛钱关系。darwin是操作系统内核,ppc是CPu硬件体系,不要把两者混淆了 darwin指的是Apple在基于Mach3.0之上自己编写的一套BSD风格的services,和Mach一起所构成的一个混 ...
ecloud 发表于 2010-05-04 13:39 http://bbs.chinaunix.net/images/common/back.gif
小弟才疏學淺,望賜教了,或許嚴格意義上來說太過了,作討論本來就沒有
甚麼可以100%確定的,再次為措詞失誤表示歉意。個人想表達的體會只是
ppc和intel的界限,讓darwine有些失去本來初衷了。
Darwine應該OS X的核,而Darwine的核是XNU。大概體系:
aqua
-------------
carbon cocoa Java
quartz opengl qt
-------------
darwine
從開始叫WINE4darwin & MacOS ,目標是移植開發wine的項目工具到darwine和OSX。也能運行win程序。
ppc時代就有的階段性產物Xfree86,基於freebsd吧。fs用了mach-o而不是elf,用winelib 重新編譯win32並運行
後期才是吧qemu的bin編入進wine,讓其支持從桌面啓動winapp。不是通過模擬器,對於PPC來說,當時有誰知道
如今會有intel cpu的加入呢,當初就是為了去模仿讓其可以運行。說服務也好,內核也好。初衷都是讓mac能運行
winapp。後來apple出現了intel cpu,有了自帶的BC,本身構架已經改為x86了(硬件結構上),darwine不需要再模仿甚麼了。
這樣是不是可以說ppc和intel對於darwine來說,意義改變了呢?
總結:
Although Darwin is an operating system in itself, it can be best understood as a collection of technologies that have been integrated by Apple to form a major, central part of Mac OS X. Critical application environments of Mac OS X, such as Cocoa and Carbon, are not part of Darwin. So isn't Aqua, the overall GUI of Mac OS X (including the Windowing System), and several other components.
資料參考:http://osxbook.com/book/bonus/ancient/whatismacosx//arch.html
页:
[1]
2