免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 12382 | 回复: 15
打印 上一主题 下一主题

OS/X研究笔记(2) - 与AIX之比较,谁是真正的微内核 [复制链接]

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-23 22:56 |只看该作者 |倒序浏览
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 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-05-24 00:26 |只看该作者
难道IBM故意不用可变参数,想推出多个OS版本赚钱?

论坛徽章:
0
3 [报告]
发表于 2009-06-03 22:22 |只看该作者
Mach-O很NB呀

论坛徽章:
3
数据库技术版块每日发帖之星
日期:2016-05-28 06:20:00综合交流区版块每日发帖之星
日期:2016-05-29 06:20:00每日论坛发贴之星
日期:2016-05-29 06:20:00
4 [报告]
发表于 2010-03-30 20:08 |只看该作者
有才,可不是乱吹就可以的。

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015年迎新春徽章
日期:2015-03-04 09:57:09
5 [报告]
发表于 2010-04-02 23:42 |只看该作者
这就能体现 ?

论坛徽章:
0
6 [报告]
发表于 2010-04-14 18:24 |只看该作者
Darwin时代还是ppc,你用现在的看看

论坛徽章:
0
7 [报告]
发表于 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, 下载次数: 53)

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

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

论坛徽章:
0
8 [报告]
发表于 2010-05-03 09:23 |只看该作者
10.6.3的依然是Darwin,只是剥离了PPC,但架构未变
Jobs.AE@ 发表于 2010-04-17 03:02


一般來説,darwin俗稱ppc,現在的intel嚴格來説已經不是darwin了。只是apple懶得換而已。
ppc和intel的工作原來都不同,何談構架呢。。。

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
9 [报告]
发表于 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硬件体系,不要把两者混淆了

论坛徽章:
0
10 [报告]
发表于 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP