The Linux Perf Master
  • Introduction
  • Chapter 1: 性能诊断入门
  • Linux 性能诊断:单机负载评估
  • Linux 性能诊断:快速检查单(Netflix版)
  • 全栈架构技术视野:以 Stack Overflow 为例
  • Chapter 2: 应用监控与可视化
  • 应用程序的日志管理
  • 基于 Ganglia 实现计算集群性能态势感知
  • 新一代 Ntopng 网络流量监控
  • Graphite 体系结构详解
  • 部署和配置管理工具简介
  • 2018 Docker 用户报告 - Sysdig Edition
  • 开源地理信息系统简史
  • Chapter 3: 操作系统原理与内核追踪
  • How Linux Works:内核空间和启动顺序
  • How Linux Works:内存管理
  • 动态追踪技术(一):DTrace
  • 动态追踪技术(二):基于 strace+gdb 发现 Nginx 模块性能问题
  • 动态追踪技术(三):Trace Your Functions
  • 动态追踪技术(四):基于 Linux bcc/BPF 实现 Go 程序动态追踪
  • DTrace 软件许可证演变简史
  • Chapter 4: 大数据与分布式架构
  • 基于 LVS 的 AAA 负载均衡架构实践
  • 计算机远程通信协议:从 CORBA 到 gRPC
  • 分布式架构案例:Uber Hadoop 文件系统最佳实践
  • 分布式架构案例:基于 Kafka 的事件溯源型微服务
  • 分布式追踪系统体系概要
  • 大数据监控框架:开源分布式跟踪系统 OpenCensus
  • 大数据监控框架:Uber JVM Profiler
  • 大数据监控框架:LinkedIn Kafka Monitor
  • Chapter 5: Cyber-Security|网络与信息安全篇
  • 黑客入侵导致的性能问题
  • 基于数据分析的网络态势感知
  • 网络数据包的捕获、过滤与分析
  • WEB 应用安全、攻击、防护和检测
  • 警惕 Wi-Fi 漏洞 KRACK
  • Cyber-Security & IPv6
  • Linux 容器安全的十重境界
  • 美国网络安全立法策略
  • 香港警务处网络安全与科技罪案调查科
  • Chapter 6: 工程管理篇
  • Oracle 数据库迁移与割接实践
  • PostgreSQL 数据库的时代到来了吗
  • 珠海航展交通管控实践经验借鉴
  • 基于看板(Kanban)的管理实践
  • DevOps 漫谈:从作坊到工厂的寓言故事
  • 工程师的自我修养:全英文技术学习实践
  • Chapter 7: 社区文化篇
  • 谁是王者:macOS vs Linux Kernels ?
  • Linus Torvalds:The mind behind Linux
  • Linus Torvalds:人生在世,Just for Fun
  • IT 工程师养生指南
  • 附录
  • 附录:常用命令
  • 附录:扩展命令
  • 附录:推荐书单
  • 附录:创作历史
  • 附录:版权声明
Powered by GitBook
On this page
  • 命令行
  • macOS Kernel 简史
  • Linux Kernel 简史
  • macOS Kernel 特色
  • Linux Kernel 特色
  • 一句话总结
  • 扩展阅读
  • 参考文献

谁是王者:macOS vs Linux Kernels ?

PreviousChapter 7: 社区文化篇NextLinus Torvalds:The mind behind Linux

Last updated 6 years ago

有些人可能认为 macOS 和 Linux 内核是类似的系统, 因为它们看起来可以处理类似的命令和软件。有些人甚至认为苹果的 macOS 是基于 Linux 的。事实上, 这两个内核各有特色,也都有不同寻常的历史。

命令行

操作

Linux

Mac

Windows

查看二进制文件

ldd

otool -L

----

查看网卡

ifconfig

ifconfig

ipconfig

查看网络路由

route -n / netstat -ar

netstat -ar

route PRINT

查看网络连接

netstat -an

netstat -an

netstat -an

动态链接库

ldconfig

update_dyld_shared_cache

----

hosts

/etc/hosts//private/etc/hosts

-----

debug

strace

dtruss

-----

macOS Kernel 简史

我们首先从 macOS Kernel 的历史开始讲起。1985年, 史蒂夫·乔布斯( Steve Jobs)离开苹果公司(Apple )并创办了一家新的计算机公司:NeXT 。乔布斯快速向市场推出了一款新型电脑 (搭载新操作系统) 。为了节省时间, NeXT 团队使用了 Mach kernel( 来自卡内基·梅隆大学,是最早实现微核心操作系统的例子之一,是许多其它相似的项目的标准,在分布式与并行运算领域应用广泛) 和 部分 BSD 代码库, 创建了 NeXTSTEP 操作系统。具有讽刺意味的是,早期 Mach 只是服务于操作系统研究,曾经的开发目标甚至是取代 BSD ,目前 Mach 的研究至今似乎是停止了,但是许多商业化操作系统,特别是 Mac OS X 及其它派生系统却活得很滋润。

在商业上,NeXT 公司从来没有获得成功, 部分原因是乔布斯的花钱习惯仍然像他在苹果公司一样大手大脚。与此同时, 苹果公司多次尝试更新自己的操作系统, 但是包括与 IBM 合作在内、一直未取得成功。1997年, 苹果公司以 4 亿 2900 万美元收购了 NeXT 公司 。作为交易的一部分, 史蒂夫·乔布斯重新回到苹果, NeXTSTEP 操作系统也成为了 macOS 和 iOS 操作系统的基础。值得注意的是,NeXT 团队的另一项成果 WebObjects 后来集成到了 Mac OS X Server 和 Xcode 中。

Linux Kernel 简史

与 macOS Kernel 不同, Linux 从一开始不是作为商业计划的一部分而创建的。相反, Linux 在 1991 年由芬兰计算机专业的学生林纳斯·托瓦兹(Linus Torvalds)创建。最初 Linux 内核代码是按照林纳斯个人的计算机规格编写, 因为他想利用自己电脑上搭载的新式 80386 处理器。林纳斯在 1991 年 8 月将他编写的操作系统内核代码发布到网络上。不久, 他收到了来自世界各地爱好者贡献的代码和建议。第二年, 将 X Windows 系统移植到 Linux 中, 使其能够支持图形用户界面。

在过去的 27 年里, Linux 已经慢慢成长壮大,它不再是一个学生的业余项目。目前,Linux 运行在世界上大多数的计算设备和超级计算机上。

他在旧版的SketchPad代码基础上进行了修改,让它运行在Macintosh上,并改名MacSketch。SketchPad通过菜单的方式选取图案和样式,Bill把它们放到屏幕下方,变成固定的调色板,并在屏幕左边另外增加一组调色板,包含了各种各样的绘图工具。后续还会不断增加新的工具,不过MacPaint早期的基本架构已经就此成形。 —— 《硅谷革命:成就苹果公司的疯狂往事》

macOS Kernel 特色

macOS kernel 的特色官方总结为: XNU。意思是 "XNU 不是 Unix"。根据苹果的 Github 页面, XNU 是 "一个混合内核, 奠基于卡耐基·梅隆大学开发的 Mach kernel , 它的组件来自 FreeBSD 和用于编写驱动程序的 C++ API “。BSD 子系统部分的代码 "通常作为微核心系统中实现用户空间服务"。Mach 部分的代码则负责较底层的工作, 例如多任务(multitasking)、内存保护( protected memory)、虚拟内存管理(virtual memory management)、支持内核调试(kernel debugging)和控制台 I/O 。 Mach 的虚拟内存(VM)系统也被 BSD 的开发者用于 CSRG ,并出现在 BSD 派生的系统中,如 FreeBSD ,但是无论 macOS 还是 FreeBSD 都并未保留 Mach 首倡的微核心结构,除了 macOS 继续提供微核心于内部处理通信以及应用程序直接控制之外。

他在旧版的SketchPad代码基础上进行了修改,让它运行在Macintosh上,并改名MacSketch。SketchPad通过菜单的方式选取图案和样式,Bill把它们放到屏幕下方,变成固定的调色板,并在屏幕左边另外增加一组调色板,包含了各种各样的绘图工具。后续还会不断增加新的工具,不过MacPaint早期的基本架构已经就此成形。 ———《硅谷革命:成就苹果公司的疯狂往事》

Linux Kernel 特色

如果说 macOS 内核的特点是结合了微核心 (microkernel ,Mach) 和宏内核 (monolithic kernel ,BSD),那么 Linux 则仅仅是一个宏内核。宏内核负责管理 CPU、内存、进程间通信、设备驱动程序、文件系统和系统服务调用。

一句话总结

macOS 内核代码 (XNU) 基于两个甚至包含古老代码基的组合。另一方面, Linux 的历史更短, 它从头开始编写并且应用广泛。

预测未来的最佳方式就是创造未来。 —— 个人电脑之父 艾伦·凯(Alan Kay)

扩展阅读

参考文献

Orest Zborowski
《Linus Torvalds:Just for Fun》
Linux 常用命令一百条
Linux 性能诊断:负载评估
Linux 性能诊断:快速检查单(Netflix版)
Linux 性能诊断:荐书|《图解性能优化》
Linux 性能诊断:Web应用性能优化
操作系统原理 | How Linux Works(一):How the Linux Kernel Boots
操作系统原理 | How Linux Works(二):User Space & RAM
操作系统原理 | How Linux Works(三):Memory
Difference Between the macOS and Linux Kernels
What is Mac OS X?
Linkedin:Orest Zborowski
Linux Networking/A brief history of Linux Networking Kernel Development