Chinaunix

标题: OS/X研究笔记(2) - 与AIX之比较,谁是真正的微内核 [打印本页]

作者: ecloud    时间: 2009-05-23 22:56
标题: OS/X研究笔记(2) - 与AIX之比较,谁是真正的微内核
AIX:
  1. $ uname -a
  2. AIX enron 3 5 002F129D4C00
  3. $ which df
  4. /usr/bin/df
  5. $ file /usr/bin/df
  6. /usr/bin/df: executable (RISC System/6000) or object module
  7. $ ldd /usr/bin/df
  8. /usr/bin/df needs:
  9.          /usr/lib/libc.a(shr.o)
  10.          /unix
  11.          /usr/lib/libcrypt.a(shr.o)
  12. $ oslevel -r
  13. 5300-05
复制代码


OS/X:

  1. macmini:~ zachary$ uname -a
  2. 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
  3. macmini:~ zachary$ which df
  4. /bin/df
  5. macmini:~ zachary$ file /bin/df
  6. /bin/df: Mach-O universal binary with 2 architectures
  7. /bin/df (for architecture i386):        Mach-O executable i386
  8. /bin/df (for architecture ppc7400):     Mach-O executable ppc
  9. macmini:~ zachary$ otool -L /bin/df
  10. /bin/df:
  11.         /usr/lib/libutil.dylib (compatibility version 1.0.0, current version 1.0.0)
  12.         /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
  13.         /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.3)
复制代码


请注意!OS/X下面的可执行程序都不需要链接kernel
我们来看看这个神奇的/usr/lib/libSystem.B.dylib

  1. macmini:~ zachary$ file /usr/lib/libSystem.B.dylib
  2. /usr/lib/libSystem.B.dylib: Mach-O universal binary with 4 architectures
  3. /usr/lib/libSystem.B.dylib (for architecture ppc7400):  Mach-O dynamically linked shared library ppc
  4. /usr/lib/libSystem.B.dylib (for architecture ppc64):    Mach-O 64-bit dynamically linked shared library ppc64
  5. /usr/lib/libSystem.B.dylib (for architecture i386):     Mach-O dynamically linked shared library i386
  6. /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 编辑 ]
作者: carrison    时间: 2009-05-24 00:26
难道IBM故意不用可变参数,想推出多个OS版本赚钱?
作者: jiangpeng311    时间: 2009-06-03 22:22
Mach-O很NB呀
作者: redsunchina    时间: 2010-03-30 20:08
有才,可不是乱吹就可以的。
作者: dooros    时间: 2010-04-02 23:42
这就能体现 ?
作者: m@qintoshi    时间: 2010-04-14 18:24
Darwin时代还是ppc,你用现在的看看
作者: Jobs.AE@    时间: 2010-04-17 02:02
Darwin时代还是ppc,你用现在的看看
m@qintoshi 发表于 2010-04-14 18:24



    10.6.3的依然是Darwin,只是剥离了PPC,但架构未变

屏幕快照 2010-04-17 上午02.01.13.png (84.97 KB, 下载次数: 55)

10.6.3的依然是Darwin,只是剥离了PPC,但架构未变

10.6.3的依然是Darwin,只是剥离了PPC,但架构未变

作者: m@qintoshi    时间: 2010-05-03 09:23
10.6.3的依然是Darwin,只是剥离了PPC,但架构未变
Jobs.AE@ 发表于 2010-04-17 03:02


一般來説,darwin俗稱ppc,現在的intel嚴格來説已經不是darwin了。只是apple懶得換而已。
ppc和intel的工作原來都不同,何談構架呢。。。
作者: ecloud    时间: 2010-05-04 12:39
本帖最后由 ecloud 于 2010-05-04 12:59 编辑
一般來説,darwin俗稱ppc,現在的intel嚴格來説已經不是darwin了。只是apple懶得換而已。
ppc和intel的 ...
m@qintoshi 发表于 2010-05-03 09:23



    darwin指的是Apple在基于Mach3.0之上自己编写的一套BSD风格的services,和Mach一起所构成的一个混合内核整体。Mach本身的特性就是与硬件平台无关,所以darwin跟ppc没有半毛钱关系。darwin是操作系统内核,ppc是CPu硬件体系,不要把两者混淆了
作者: m@qintoshi    时间: 2010-05-04 14:20
darwin指的是Apple在基于Mach3.0之上自己编写的一套BSD风格的services,和Mach一起所构成的一个混 ...
ecloud 发表于 2010-05-04 13:39



小弟才疏學淺,望賜教了,或許嚴格意義上來說太過了,作討論本來就沒有
甚麼可以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
作者: ecloud    时间: 2010-05-04 15:09
小弟才疏學淺,望賜教了,或許嚴格意義上來說太過了,作討論本來就沒有
甚麼可以100%確定的,再次為 ...
m@qintoshi 发表于 2010-05-04 14:20



    你又悲剧了
    darwin是darwin
    darwine是darwine
    一字之差,谬以千里哦
作者: m@qintoshi    时间: 2010-05-05 10:22
你又悲剧了
    darwin是darwin
    darwine是darwine
    一字之差,谬以千里哦
ecloud 发表于 2010-05-04 16:09


真是搞不懂你們了,總要添加些個人色彩,又是悲劇又是喜劇的。
MAC OS X的kernel上面是Darwin,請看您9F的陳述
---------------QUOTE:
一般來説,darwin俗稱ppc,現在的intel嚴格來説已經不是darwin了。只是apple懶得換而已。
ppc和intel的 ...
m@qintoshi 发表于 2010-05-03 09:23



    darwin指的是Apple在基于Mach3.0之上自己编写的一套BSD风格的services,和Mach一起所构成的一个混合内核整体。Mach本身的特性就是与硬件平台无关,所以darwin跟ppc没有半毛钱关系。darwin是操作系统内核,ppc是CPu硬件体系,不要把两者混淆了
---------------
前面敍述的緊接在敍述service的後面,

到底是誰搞混了呢。。。 。。。

參看下:http://en.wikipedia.org/wiki/Darwin_(operating_system)#Kernel
     http://en.wikipedia.org/wiki/Darwine
btw, po文clone無可否非,但是要注意説明出處説明
作者: ecloud    时间: 2010-05-05 10:31
真是搞不懂你們了,總要添加些個人色彩,又是悲劇又是喜劇的。
MAC OS X的kernel上面是 ...
m@qintoshi 发表于 2010-05-05 10:22



    你很混乱,呵呵,先去了解一下基本概念吧
    至于darwine到底是什么东西,你可以看看这里http://www.winehq.org/about/
    一字之差,谬之千里。darwine跟本帖主要说的东西没有半毛钱关系
    多学习,学到你已经足够有把握的搞清楚你所说的每一个名词究竟是什么意思,以及其历史来历的时候,再发表意见吧
作者: 玄鹤    时间: 2010-05-12 17:10
哈哈哈哈哈哈哈
作者: m@qintoshi    时间: 2010-05-13 08:41
真是搞不懂你們了,總要添加些個人色彩,又是悲劇又是喜劇的。
MAC OS X的kernel上面是Darwin,請看您9F的陳述
---------------QUOTE:
一般來説,darwin俗稱ppc,現在的intel嚴格來説已經不是darwin了。只是apple懶得換而已。
ppc和intel的 ...
m@qintoshi 发表于 2010-05-03 09:23



    darwin指的是Apple在基于Mach3.0之上自己编写的一套BSD风格的services,和Mach一起所构成的一个混合内核整体。Mach 本身的特性就是与硬件平台无关,所以darwin跟ppc没有半毛钱关系。darwin是操作系统内核,ppc是CPu硬件体系,不要把两者混淆了
---------------
前面敍述的緊接在敍述service的後面,

到底是誰搞混了呢。。。 。。。

參看下:http://en.wikipedia.org/wiki/Darwin_(operating_system)#Kernel
     http://en.wikipedia.org/wiki/Darwine
btw, po文clone無可否非,但是要注意説明出處説明
作者: kde2000    时间: 2011-03-26 19:00
别傻了,Mac OS X不是微内核。

xnu Is Not a Microkernel

All kernel components reside in a single kernel address space in Mac OS X. Although the kernel is modular and extensible, it is still monolithic. Nevertheless, note that the kernel closely works with a few user-space daemons such as dynamic_pager, kextd, and kuncd.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2