---
author: 硬核老王
category: 硬核观察
comments_data: []
count:
  commentnum: 0
  favtimes: 0
  likes: 0
  sharetimes: 0
  viewnum: 7167
date: '2021-06-07 11:18:18'
editorchoice: false
excerpt: 更多：• Linux 内核将一直保留前 1MB 内存 • Torvalds 继续反对在编译 Linux 内核时使用 -O3 优化标志
fromurl: ''
id: 13465
islctt: false
largepic: /images/p/202106/07/111705ncvo9qefilq1hizd.jpg
permalink: /article-13465-1.html
pic: /images/p/202106/07/111705ncvo9qefilq1hizd.jpg.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: 更多：• Linux 内核将一直保留前 1MB 内存 • Torvalds 继续反对在编译 Linux 内核时使用 -O3 优化标志
tags:
- 苹果
- 内核
- 内存
- 优化
thumb: false
title: '硬核观察 #295 推动苹果公司成为万亿公司的一封邮件'
titlepic: true
translator: ''
updated: '2021-06-07 11:18:18'
---

![](/images/p/202106/07/111705ncvo9qefilq1hizd.jpg)


### 推动苹果公司成为万亿公司的一封邮件


![](/images/p/202106/07/111716khpgpny9iyluf55f.jpg)


2007 年，苹果的市值约为 1500 亿美元。今天，它已经超过了 2 万亿美元，主要是基于 iPhone 的成功，而 iPhone 的成功，至少部分是基于 App Store 的成功。而这一切，都[始于](https://www.inc.com/jason-aten/14-years-ago-steve-jobs-sent-most-important-email-in-history-of-business.html)乔布斯的一封邮件。


最初，iPhone 在每台设备上只预装了 16 个应用。乔布斯告诉开发者，如果他们想为 iPhone 创造应用，他们可以制作在 Safari 浏览器中运行的网页应用。用户立即开始想办法越狱，以便在他们的设备上安装应用。所以，苹果只能通过某种官方 SDK 使开发应用程序成为可能。乔布斯给该公司软件工程高级副总裁 Bertrand Serlet 回答到：“当然，只要我们能在 2008 年 1 月 15 日的 Macworld 上把它全部推出来。”2008 年，我们见到了苹果的 SDK 和 App Store。



> 
> 无论主动还是被动，App Store 这种划时代的创举，真正开创了新的智能手机时代。
> 
> 
> 


### Linux 内核将一直保留前 1MB 内存


![](/images/p/202106/07/111745tcpvqyc95c2p5hf5.jpg)


在一些特定的情况下，前 64kb 的内存会被 BIOS 破坏；在另外一些罕见情况下，前面的内存也会被 BIOS 或 EGA/VGA 帧缓冲区所破坏。因此，与其针对不同情况分别设置内存规避区域，不如将整个前 1MB 内存设置为[保留](https://lore.kernel.org/lkml/YLx%2FiA8xeRzwhXJn@zn.tnic/T/#u)。因此，在 5.13 中将永久保留前 1MB 内存而不使用。



> 
> 现在真是内存富余了，可以随便将 1MB 内存保留不用了。而就在 20 多年前，那时候还是按 KB 计算着使用内存的。
> 
> 
> 


### Torvalds 继续反对在编译 Linux 内核时使用 -O3 优化标志


![](/images/p/202106/07/111801sixcdd9ernn7x7au.jpg)


由于 GCC 的较旧版本可能会在 `-O3` 编译器优化级别下产生坏的代码，而且有时没有性能上的好处，Linus Torvalds 仍然反对在编译 Linux 内核时使用这种优化标志。Torvalds 总结了他目前对 `-O3` 的看法：“它在历史上一直有可怕的错误。它已经变好了，但‘变好’并不是一个很高的标准。”WireGuard 项目从开始就一直用 `-O3` 优化级别构建，也并没有看到因此而产生不良代码的情况，但由于 Torvalds 的指导意见，该项目放弃了这个选项。除了 WireGuard 之外，LZ4 和 Zstd 是仍然在用 `-O3` 的内核模块。



> 
> 一方面很多厂商转向使用新版本的编译器非常缓慢，另外一方面一些没有那么严谨的代码也并不适合更高级别的优化。理想化的优化措施，在现实情况中往往不能采用。
> 
> 
>