Re: [问题] Mac OS跟Linux有什么不同?

楼主: merckhung (小猫排店长)   2014-09-24 04:15:37
作业系统的角度来说:
1) OS X 跟 GNU Linux, 都是 UNIX-like 的 "作业系统".
2) BSD 是一个 UNIX-like 的 "作业系统" 与 "核心".
3) 有名的 BSD 作业系统, 像是 FreeBSD, OpenBSD, ......etc.
4) FSF 发明了 GNU, 这里泛指你在 GNU Linux 用到的程式, 例如, gcc, ls, rm, mkdir ....etc.
从作业系统核心, 的角度:
5) Linus跟社群, 发明了 Linux, 它是一个 kernel 核心.
6) GNU + Linux = GNU Linux 成为一个完整的作业系统.
7) OS X 的核心是 Darwin, 剩下的部分 (ls, rm, mkdir....etc.) 从 FreeBSD 演化而来.
8) Linux 核心可以俗称"第一代"设计, Darwin 核心在学术上被称 Microkernel, 可以俗称是第二代.
简单说, 不管细节运作,
OS X = 你可以当它是 Darwin (Mach) 的骨头 + BSD 皮.
GNU Linux (RedHat, Ubuntu, Arch....) = 可以说 Linux 的骨 + GNU 的皮.
从图形界面来说:
OS X = 其背后是 Jobs 离开苹果后 NextStep 的产品. Jobs 回苹果后 NS 变成 OS X.
Apple 没有公开 NS source code, 但其他的作业系统核心, 工具程式等都有.
但有一个模仿 NS API 的 OpenStep 专案, 但是目前已经没有再发展.
BTW, OS X 下层有一个 Quartz, 是一个 2D 绘图 engine.
GNU Linux = 底层一般通常是 X-Window. OS X 的底层不是 X-Window, OS X 可以跑
X-Window 的程式, 只要你安装 XQuartz 就可以跑.
GNOME, KDE, 等 App 可否跑在 OS X 上, 理论上可以, 相关 Library 要
装齐就是真的. 用 Macport or Homebrew 装齐.
在 X-Window 上, 衔接到 GNOME or KDE 那些 App 之间的.
也有一个绘图 engine, 通常是 Cairo.
最后回答你的问题:
基本上小弟约 15, 14 年前开始玩 Linux, 那时都是管 Server, telnet 的时代.
后来玩 KDE, GNOME/GTK 的 App. 有一段时间都在玩 Window Manager 看哪个做得顺眼.
中文化做得好. 那时候就下决心抛弃 Windows, 改用 Linux Desktop.
套件都是 Slackware, RedHat, Fedora, Debian, Gentoo, Ubuntu 这样一路玩上来.
大家说得对, Linux 都是大功能有, 但是小问题不断, 要 tune 要 config.
Word 有软件可以开, 可以编辑, 但是格式会有点跑掉. 存盘后回 Windows 大乱.
PPT 有软件可以开, 可以编辑, 但是格式会有点跑掉. 存盘后回 Windows 大乱.
诸如此类的. 而且 杀手级的 App, Linux 通常没有.
反观 Mac OS X, Photoshop, Lightroom, Painter, MS Office......etc. 都有.
虽然重点是, 你荷包要拿出来付. 但, 像大家说的, 有人把关软件品质, 真的很重要.
所以我大约 2010 年左右开始切换到 Mac OS X, 为什么呢?
1) 几乎 Linux 上可以跑的程式, Mac OS X 都可以跑.
2) Mac OS X 上不能跑的 Linux 程式, 通常都底层 Kernel 的设计有关, 这时候,
安装个 Virtual Machine 就能解决这问题. 例如 VMware or Parallels.
3) 基本上 GNU Linux 虽然我刚刚说它是 UNIX-like, 但其实 Linux 是偏中性.
BSD 刚刚也说了是 UNIX-like, 但因为历史变迁, 终究有自己的特色.
所以 Linux 其实是 BSD-Like, 同时又是 UNIX-Like (SYSV) 的中间部分超集合.
4) So, Linux 上的 App, 重新从 Source Code 编译后, 要跑在 OS X 的机会很大.
但如果是直接 Linux 的 App 可执行的, 要直接在 OS X 跑, 目前好像是没听过.
(或许有我不知道而已, 但我其实没什么兴趣, 因为重新编译就可以了)
Windows 的 App, 安装 WINE 就行了, 很大机会可以跑. 有人连游戏都可以跑了.
关于编译器,
1) Linux 默认用 GNU C Compiler, 简称 GCC.
2) Mac OS X 以前也是用 GCC. 10.8 以前.
3) 关于默认有没有安装, OS X 确实是要安装 XCode, 及 command line tools
4) Linux 也不见得装好就有. 总之还是要安装一下, 或是很 lucky 就有了.
5) Mac OS X 10.8, 10.9 开始, 已经不用 GCC 了, 而是改用 LLVM.
LLVM 有一个前端是为了跟 GCC 相容, 可以 user 比较感觉不出差异, 但
内容上是完全不一样.
6) 未来 Linux 目前有人在搞, 但目前暂时还没有听到由 GCC 转 LLVM 的大事.
7) FreeBSD 已经有听说 12(?) 版, 要抛弃 GCC, 改用 LLVM.
8) Linux 没转的原因应该是太多 App, 还有核心都用到 GCC 很多特别功能.
实务上有困难. 有听过 kernel 已经可以用 LLVM 编, 但是是特例.
学习 Linux 的角度来说的话,
1) 学习 Linux 应用软件开发, 可以考虑买 MAC + VM 就好.
2) 学习 Linux kernel or driver 的话, 最好是直接买一台电脑灌 Linux.
3) 只是单纯使用 Linux, 又买了 Mac, 这好像有点怪怪的.
※ 引述《Neisseria (Neisseria)》之铭言:
: Key point: OS X 和 Linux 是不同的作业系统
: OS X 以前有通过 Unix 认证,但是整个目录结构和 Linux 很不一样
: Linux 也不是 Unix,顶多就是 Unix-like
: 但是操作方式和 Unix 相通,所学得的技巧可以交互使用
: 如果对于 Unix 和 Linux 想多了解,可以爬一下维基
: 然后,看你想接触 Unix 或 Linux 的那一部分
: 才能够知道到底能不能用 OS X 取代 Linux
: 如果是想学习基本的指令操作,或是学习 shell script
: 那么,基本上是相通的,像是 ls, cd, find, grep 等等,大部分都有
: 只是部分指令的参数不同,要稍微记一下
: 然后,像 Emacs 和 Vim 这种终端机底下的 editor 使用起来没什么差别
: 如果是想学 Perl 或其他的直译式语言
: 不同系统间的差异性,基本上都被隐藏起来了
: 那么,使用 OS X 和使用 Linux 差别就不大
: 如果是 C 或 C++ 的话,系统间的差异会比较大一点
: 然后,就像之前网友提到的,OS X 的 GCC 其实是 llvm,跟 GNU 的 GCC 不同
: 如果是想学习系统管理,那不同的系统差异就很大了
: 不用的 Linux 发行版间都不相同了,和 OS X 的差异更大
: 这时候,就要针对想学的系统下去实际的使用
: 就像要考 RHCE 总不会用 Ubuntu 来学吧
: Linux 上的软件当然无法直接在 OS X 上使用
: 像是 MacPorts 和 Homebrew 的做法都是抓原始码下来重新编译
: 只是都把流程包装得很好,才会有那种可以直接使用的错觉
: 很多人买 Mac 来用,是因为不需要处理一些琐事
: 像是不用安装驱动模组,不用切磁盘分割等等
: 而在 Linux 上,很多都要 DIY
: 如果你觉得这些 DIY 的过程也是一种知识
: 那当然还是要实际去用 Linux 才学得到
: 不要再相信 OS X 等于 Linux 这种事情了
: 这就跟拔狮子鬃毛会长头发一样
: ※ 引述《oftisa (oo)》之铭言:
: : 听说OS X也是用UNIX核心制作的
: : 这样说起来OS X是不是只是GNOME、KDE以外的第三个桌面选择而已
: : 只是MAC的桌面程式并没有开放自由软件化而已?
: : 既然OS X使用UNIX核心,那应该可以直接安装LINUX的程式吧
: : 听说OS X默认安装GCC
: : 假如可以直接安装各种LINUX煞的软件就太方便了
: : 也增加购买MAC的诱因了
: : 不知道大家对OS X跟LINUX有什么看法
作者: tsungching (云淡风轻)   2014-09-24 08:47:00
FreeBSD在10.0开始正式以LLVM取代GCC
作者: bitlife (BIT一生)   2014-09-24 08:51:00
BSD就是Unix,不是Unix like. 以前Unix两大支系,一个是System V,一个是BSD
作者: tsungching (云淡风轻)   2014-09-24 08:54:00
OpenStep是NeXT开发的API规范,而GNUStep是开放的计画,仍在发展中,只是有点缓慢
作者: carylorrk (carylorrk)   2014-09-24 09:54:00
原来 Darwin 是 Macrokernel,我只知道 L4clang 支援 Linux 完整性还远的很。除此之外跟 license也有关系。 GNU 某种程度有点排他,其他人也想逃离XD
作者: kira925 (1 2 3 4 疾风炭)   2014-09-24 10:26:00
LLVM与GCC不是互斥关系 你要说的是clang吧
作者: HamalAri (哈马‧阿里)   2014-09-24 19:27:00
有一些发行板已经换 clang 了,有些永远不会换
作者: HZYSoft (PCMan)   2014-09-25 01:30:00
还有差在一个是 micro-kernel,一个不是
作者: rusynth (ru + synth)   2014-09-25 14:35:00
Darwin的XNU是hybrid kernel,跟Windows NT一样。因为效能的问题,现在PC没有商业化的纯microkernel为核心的作业系统(特殊用途的可能有)。Linus虽然自称Linux 也是hybridkernel,但是大家依旧都把它归类为monolithic kernel XD

Links booklink

Contact Us: admin [ a t ] ucptt.com