1. 程式人生 > >開篇和第一章:Mac OS X核心故事之“N國語言”

開篇和第一章:Mac OS X核心故事之“N國語言”

開篇宣告
      1、寫作動機和熱情來自兩方面:一是自喬幫主迴歸後,蘋果公司經歷了從瀕臨破產到全球市值第一的華麗轉身,其產品風靡全球。我本人當了4年的蘋果使用者,3年的weiphoner,在罈子上看到每天都有大量新人加入Mac/iOS大家庭,但是長期處於Win統治之下的普通電腦使用者,對Win之外的世界乃至個人電腦的歷史背景並不瞭解,有意無意地帶著有色眼鏡來看蘋果和其他非Win平臺、產品。罈子上經常有許多針對蘋果和微軟的極端言論,還為了一些僅僅是見仁見智的問題吵起來,我覺得有必要讓大家更多地瞭解蘋果及其產品,並消除一些廣為流傳的誤解和偏見,讓論壇少些紛爭和小白問題,也讓用著蘋果產品的各位更開心更放心,不至於像某些人產生Mac“
華麗的袍子下面卻滿是蝨子”的懷疑。二是我這兩天偶然看到《程式設計師》雜誌官網登載的系列文章,原作者王越,美國賓夕法尼亞大學計算機系研究生,中國著名TeX開發者,非著名OpenFOAM開發者。閱畢,我被其深深吸引了,Mac OS X的背後有著太多有趣而鮮為人知的故事,不僅僅關乎Mac本身,還牽扯到喬幫主、Linus等一眾IT界領袖,足可以在IT發展史上留下濃墨重彩的N筆。“Mac OS X背後的故事”系列儘可能想做到通俗易懂,但還是有許多技術層面的東西難以為一般使用者所理解,在這個論壇上估計也沒有多少人願意看技術性太強的文章。我所做的是借鑑“Mac OS X背後的故事”的寫作思路和一些故事,把Mac OS X前世今生中(我自己認為,同時也認為大家會覺得)最有趣最具代表性的東西展現給大家,對技術性太強的部分盡我所能進一步簡化(“盡我所能”一方面是指有些內容必須有一定的知識背景,不可能做傻瓜式講解,這部分我可能會少講甚至忽略;另一方面,有些地方我自己都不能理解,更談不上給大家科普了),並附上儘可能多的補充文字、圖片、視訊(其實原文也有不少補充閱讀的材料,有些已經“404 Not Found”了。我會盡力找其他的來源替代。有些資料是全英文,估計大家看了頭大,如果我覺得有趣,我會擇其要點用中文講解。有些視訊,包括許多喬幫主的珍貴視訊,必須突破GFW,抱歉了,有空我會考慮下載後轉到youku)等來幫助大家瞭解Mac OS X的發展史、趣聞軼事、蘋果文化、各路人馬。

      2、《程式設計師》雜誌登載的“Mac OS X背後的故事”系列文章我強烈推薦大家閱讀,專業性太強的部分可以跳過。其大致框架如下:從20世紀90年代後期蘋果公司的困境開始敘述喬幫主迴歸和Mac OS X的研發背景(第一篇),接下來講述Mac OS X的核心(第二、三篇)、GUI(第六、七篇)和開發工具鏈(第五、八篇),中間穿插了戈爾(和小布什競選總統失敗的那位)與蘋果公司的一段趣聞,堪稱營銷學的經典案例(第四篇)。最後三篇(第九篇的上中下)圍繞Mac OS X從32位到64位的轉換講了每個發行版本的簡史,順帶講了Mac OS X的圖形開發引擎OpenCL。
      3、我的寫作思路。寫作內容上,Mac OS X採用了Unix核心,由於Unix核心是純文字介面(不像Windows核心已經整合了許多圖形介面的東西),蘋果自己在其上開發了Aqua圖形使用者介面(GUI)的模式,所以我也將分核心和GUI來講,文中有引用“Mac OS X背後的故事”或其他參考資料的地方我會標明,但絕不會有大段抄襲和雷同,另外我的時間線拉得比較長,會拉回到20世紀70-80年代,也就是Unix和GUI誕生的年代。開發工具鏈比較技術性,我會少講,主要是介紹Interface Builder,到時候我會提供一個喬幫主在1993年親自演示Interface Builder的珍貴視訊,值得大家fq去看的。發行版本史也是要講的,但不會只圍繞32位到64位系統,會更全面,更貼近大家的日常使用。寫作形式上,我會盡可能提供比“Mac OS X背後的故事”更多的各種資料,特別是圖片視訊等直觀展示性資料,技術性的東西儘量少且簡化,多講有趣和大家日常使用中能感受到的東西。另外,我不會按時間順序,不會按作業系統結構組成來寫,因為本文不是技術帖,也不是教你用Mac OS X的教程帖,而是由一個個小故事,小專題組成的軼事軼聞集,在尊重事實的基礎上,我會加進一些演義、想象的成分(比如YY一下當事人的想法)。

      4、本人非理工科,專業和計算機基本無關,儘管程式設計成為我的興趣愛好已近20年,但和專業學計算機的比我幾乎是個小白。有不確定的地方我會查閱相關資料,絕不信口開河,但作為小白,文字中的專業錯誤在所難免,大家隨時可以拍磚。
      5、不做Win黑,也不做NC果粉。我在之前的一篇開箱帖中曾經說過,Win和Mac都是優秀先進的作業系統,難分伯仲,這個罈子上的大多數人是說不出Win和Mac有什麼好壞的,無非是習慣、不習慣而已。這文章是Mac的主場,肯定要說Win的壞話,也有些時候僅僅是調侃(今天的第一部分中就有),而幾乎不會說Mac的壞話。如果有人覺得我這樣不客觀,我只有認了。作為對Win和Win粉的一點安慰,整個系列的寫作都將用我的小黑T420+正版Win7專業版+正版Office2010專業版完成。
      6、本系列文章內容遵從CC版權協議, 在註明出處(Weiphone論壇 bbs.feng.com)和作者(weiphone id:fantacyleo)的前提下,可以隨意轉載。
      最後一條:希望大家多多鼓勵、支援、批評、拍磚,讓我更有動力完成這個系列。並祝大家的蘋果之旅愉快。


下面進入正題,今天帶來的是:
第一章:Mac OS X核心故事之“N國語言”
      這個系列文章裡幾乎不會講Mac的壞話,但也不等於不講Mac的壞話。這第一章我就來講講Mac的“壞話”——Mac OS X核心崩潰,俗稱宕機,別名“N國語言”(N是正整數)。為什麼用N而不是一個確定的數字?答案是這個N實際上在不斷變化,確切來說是不斷增長。

      核心是啥玩意兒?說白了核心也是一個程式、一個軟體,是作業系統最核心最基礎的部分,專門負責硬體資源管理和排程,以保障其他程式和軟體的正常執行。大到你在暗黑3裡廝殺,小到你按下鍵盤上的一個按鍵並在螢幕上顯示出來,全都離不開核心的幫助。CPU、顯示卡、記憶體、硬碟、鍵盤、印表機等硬體本身都是些死東西,他們都會做好也只會做好份內的事情,比如你在鍵盤上按下字母“A”,鍵盤可以記錄下“A”鍵被按,但它所能做的也僅限於此了,它可不會自動幫你在螢幕上打出“A”,要想在螢幕上打出“A”,就必須由核心來幫你牽線搭橋,接收鍵盤傳來的訊號並給螢幕傳送指令。

      核心也是程式,也是軟體,也是人造的東西,所以它不可能不出問題,bug和使用者的錯誤操作都可能讓核心掛掉,當然,核心對自身的錯誤是有糾正機制的,不過這也不保險,嚴重的錯誤會突破核心的承受極限,於是核心崩潰了。核心的工作是如此基礎而重要,一旦崩潰那是非常麻煩而棘手的。不過,核心臨死前會給我們留下一些有用的線索,一是會把系統執行的情況記錄在特殊的檔案中,二是會在螢幕上留下一些可見的資訊,就好像是核心的遺言,這也正是我要講的。

      目前,個人電腦上的作業系統核心主要有兩大類:Windows核心和Unix/Linux核心(這兩大陣營的恩恩怨怨可以寫一大本書了。2002年有人拍了部紀錄片:作業系統的革命,http://www.tudou.com/programs/view/Nbz3C92uFuQ/大家有興趣可以去看看,我以後的文章裡也會用到這部電影裡的一些素材)。不同核心的遺言是不同的。Mac OS X的核心中包含了一個Unix的分支叫Free BSD,所以,Mac OS X早期版本的核心崩潰遺言就是Unix核心的崩潰遺言:

Mac OS X 10.0-10.1核心崩潰遺言:


再來兩張有趣的Linux核心崩潰圖:


      看完上面幾張核心崩潰圖,除了那兩個吐舌頭的死人和死牛有點意思外,其他的大段英文和數字估計大夥都是一頭霧水。沒錯,這些核心崩潰遺言都是給專業技術人員看的,幫助他們排查故障,但對普通使用者來說無異於天書、火星文。早期的Mac OS X還不穩定,核心崩潰是家常便飯,時不時就跳出一段火星文。對普通使用者來說,給他們一大段火星文和簡單告訴他們電腦宕機了沒有任何區別,火星文或許還有副作用:會嚇到普通使用者。於是,一向注重使用者體驗的喬幫主不能忍了,他怒吼:蘋果電腦就算是宕機的使用者體驗也要做得比其他系統更好。幫主發話,下頭的人哪敢敢怠慢,馬上在10.2版本中拿出了一個使用者體驗更好的宕機畫面:

      這個畫面用英法德日四種語言告訴你需要按住電源數秒強行關機,這就是大家熟知的“四國語言”宕機,也是“N國語言”的開始。這個“四國語言”提示真是與眾不同,只告訴你有問題要重啟,連繫統崩潰了都不告訴你;當然,Unix核心崩潰的詳細資訊也還是保留的,只不過是記錄在了專門的檔案中,而不是列印在螢幕上給普通使用者看。“四國語言”伴隨大家走過了10.2、10.3、10.4、10.5,到了10.6雪豹系統,N增加到5,新增西班牙語,俗稱“五國語言”:

      我之前用pro玩那個GeekTool時遇到過幾次,可惜當時沒有截圖留念。。。如今,論壇上還是經常看大家稱呼“四國”、“五國”,其實,在10.8 Mountain Lion中,N已經增加到了6,新增的語言就是在10.8和iOS6中打了翻身仗的咱們的母語——中文:

不知道裝了10.8的各位有沒有遇到“六國語言”的?歡迎在下面跟貼出。當然,Mac OS X現在已經很穩定了,大家看到“N國語言”的機會非常非常渺茫,絕對比看到Win藍屏的機率小。

      好了,Mac OS的壞話先說到這裡,既然提到Win的藍屏,本文的最後就來調侃一下Win的宕機畫面吧:
win95/98的藍屏,沒有輸出大量的錯誤資訊,基本上只有一個錯誤程式碼和出錯的記憶體地址。我認為這個藍屏畫面最經典的地方就是教會了大家按那三個鍵。

win2000藍屏,內容增加了:

win xp/vista/7藍屏,好多,越來越多:

可愛的win 8藍屏,世界又清淨了:


再來爆兩個和Win系統藍屏有關的糗事:
win 98釋出會上,當著蓋茨的面,98藍屏鳥:
http://www.tudou.com/programs/view/_tw8KCE27pY/
Surface平板電腦在釋出會上不堪演示者的亂點亂戳,當場宕機:
http://v.youku.com/v_show/id_XNDE3MDc0MjA4.html

————————第一章到此完結——————————

相關推薦

開篇第一Mac OS X核心故事N語言

開篇宣告:      1、寫作動機和熱情來自兩方面:一是自喬幫主迴歸後,蘋果公司經歷了從瀕臨破產到全球市值第一的華麗轉身,其產品風靡全球。我本人當了4年的蘋果使用者,3年的weiphoner,在罈子上看到每天都有大量新人加入Mac/iOS大家庭,但是長期處於Win統治之下的

第五Mac OS X核心故事從32位到64位

第五章:Mac OS X核心故事之從32位到64位      自從標配4G記憶體的筆記本面市以來,我就非常關心預裝作業系統是32位還是64位的,因為雖然理論上32位Win可以用到4G記憶體,但由於一部分記憶體要給系統和其他硬體裝置預留,使用者可見的記憶體並沒有4G,大概只

C/C++學習筆記第一MAC OS下搭建GCCSublime Text環境

本科的時候倒是學習了C/C++/Java 這一路搞研究,基本上就是網路模擬,也不太需要太多的程式設計,多半是演算法模擬,所以程式設計感覺越來越差。 人生總是那麼陰差陽錯,本科畢業的時候本來是計算機/金融雙學位,打算不再搞什麼計算機了,投身銀行算了。不料未及大四校園招聘,便被

[Mac OS X] 核心、驅動除錯

Kernel Debug Kit是蘋果官方提供的除錯工具包。 每個正式版本的系統都會有對應的Kernel Debug Kit,裡面包括以下內容 1.系統所有驅動及其符號表(.dSYM格式) 2.系統核心及其符號表(.dSYM格式),還有個debug kernel,debug

Mac OS X核心程式設計,MAC驅動開發資源彙總

一.Mac  OS  X核心程式設計開發官方文件: I/O Kit Fundamentals: I/O Kit基礎 - Mac OS X系統核心程式設計 Threading Programming Guide:MAC OS X 執行緒程式設計指南 - Mac OS

Mac OS X 核心Rootkit開發指南

1.引言 1.1 背景介紹         困 擾著不同作業系統的Rootkit已經由來已久,Linux,Windiws,還有各種類BSD等系統都受到了Rootkit的極大危害。目前廣泛使用的 一類“核心Rootkit”,是原來“檔案轉移Rootkit”的衍生和發展。這種發

mac os x環境下使用git+hexo搭建部落格沒想到你們是這樣的npmhexo

hexo deploy出現這個: { [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' } { [Error: Cannot find module './bu

Mac OS X中Launchpad的圖標添加刪除方法(添加方法別試了,Linux很大區別)

com nsh usr folders 單純 ron bsp blank 結構 說明:在Mac下的Launchpad圖標添加和刪除都與應用程序的app文件有關,如果單純的只想在Launchpad添加自定義的圖標,然後指定要某條命令運行時,建議不要這麽幹,Launchpad的

Mac OS X 10.13.2中安裝nltk numpy

www. htm bsp ati imp optional org html pre 參考網址:http://www.nltk.org/install.html Mac/Unix Install NLTK: run sudo pip install -U nltk I

Mac OS X 下查看設置JAVA_HOME

腳本 span 一個 命令行 mac os x 路徑 auto 重新 查看 JAVA_HOME是很多應用程序需要配置的東西,我安裝過很多,每次都要重新上網查怎麽找JAVA_HOME, 這裏把mac上的方法歸納一下。 mac上找JAVA_HOME很方便,把一個腳本跑一下就

<python3-cookbook>第一數據結構算法

tool 排序類 集合 必須 類型 數通 個數 自己 def 第一章:數據結構和算法 介紹:這本書是高級用法,不是小白使用書目的:寫作目的是記錄下自己學習這本書的過程以及收獲 1.1解壓序列賦值給多個變量: 問題:現在有一個包含 N 個元素的元組或者是序列,怎樣將它裏

第一程序設計C語言

統一 c程序 集合 out 包含 有一個 機器 文件名 部分 一、什麽是計算機程序? 所謂程序就是一組計算機能識別和執行的指令。計算機的一切操作都是由程序控制的,本質是程序的機器,程序和指令是計算機系統最基本的概念。 二、什麽是計算機語言? 人和計算機交流信息要

第一Python資料結構演算法

第一章:Python資料結構和演算法 Python 提供了大量的內建資料結構,包括列表,集合以及字典。大多數情況下使用這些資料結構是很簡單的。 但是,我們也會經常碰到到諸如查詢,排序和過濾等等這些普遍存在的問題。 因此,這一章的目的就是討論這些比較常見的問題和演算法。 另外,我們也會

“全棧2019”Java第一安裝JDK11(Mac

安裝 開發環境 ref 進步 技術分享 mac com 第一章 計劃 難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 文章原文鏈接 “全棧2019”Java第一章:安裝JDK11(Mac) 下一章 “全棧2019”Java

《計算機網路-自頂向下方法原書第六版》~~~~~第一計算機網路因特網

1.1 什麼是因特網 1.1.1 具體構成描述 1. 端系統(主機):資料的傳送或接受的終端。 2. 通訊鏈路:資料傳輸的媒介。 3. 分組:資料在鏈路中傳輸的一種封裝格式。 4. 路由器:負責轉發資料,用於網路核心中。 5. 鏈路層交換機:負責轉發資料,用於接入

mac OS X Yosemite 安裝 python lxml libxml2

2016-05-25 周海漢 2016.5.25 用python做資料分析或爬蟲抓包,離不開高效的lxml。但lxml安裝在mac下卻會失敗。 % pip install lxml Collecting lxml Usi

如何在Mac OS X 作業系統中安裝gccmake

第一步:在Mac OS X系統中安裝Xcode 首先需確認已在Mac OS X系統中安裝好了正確版本的Xcode。例如,我使用的是Mac OS X 10.8.5,安裝的Xcode版本是5.0,儘管高版本可以安裝成功,但啟動時會報作業系統版本太低,不能執行的錯誤。需要安裝請進

Mac OS X 10.10優勝美地如何完美接管iphone上的電話簡訊

    自從今年蘋果第一次的釋出會上毛貓就特別注意這個功能,感覺特別Cool,特別方便。但直到今天毛貓才第一次成功測試出這個功能呀!雖然handoff功能還未測出來,但是覺得在mac上發簡訊和打電話也

scons使用者指南第一編譯安裝SCons

如果Python沒有安裝,你會看到一條錯誤訊息比如“command not found”(在UNIX或Linux裡)或"python is not recognized as an internal or external command, operable program or batch file"(在W

開發藝術探索——第一Activity的生命週期啟動模式

目錄 1.1 Activity 的生命週期和啟動模式 1.1.1 典型情況下的生命週期分析 1.1.2 異常情況下的生命寧週期分析 1.2 Activity 的啟動模式 1.2.1 Activity 的 LaunchMode 1.2.2 Activity 的Flags