
劉京洋
本書主要描述Linux系統的總體框架和設計思想,包含很多可以直接操作的實例。編寫本書的目的是希望讀者對Linux系統背後的邏輯有一個全面的瞭解。本書對比較核心且常用的技術點有更加深入的解釋,對實際使用Linux系統工作大有裨益,同時,選擇重點的方向進行源碼級深度分析,包含大量的案例,而且增加了與Windows同類操作系統的對比,涉及Fuchsia?OS和Android系統的一些實現,對操作系統的描述更清晰。 本書適合Linux系統開發人員、嵌入式系統開發人員閱讀,也可供計算機相關專業的師生閱讀。
本書包括的內容挺多,如果都是作者認知,那還是挺厲害的,但又犯了一些明顯的概念錯誤(非筆誤)中,.以CPU那節的TSO的解釋爲甚。在CPU微架構中,TSO是Total store ordering的意思,作者卻說是TCP段卸載(這是網卡的概念),可謂風馬牛不相及,差了十萬八千里。 所以本書要審視的看。寫作出書還是不要寫自己不熟悉的領域。
看起來什麼都講了,讀起來又沒有獲得感和成就感。也許作者水平很高,只是沒組織好。硬着頭皮讀完第一章,東拉西扯的項目,和新名詞一個都沒記住,再見。或者回見,等水平足夠高的時候也許會回來再讀。
非常好的一本書。底層原理講的很深入和詳細,但又沒有像有些書一樣陷入晦澀的源碼。在深度和易懂之間有個很好的平衡。
讀起來有點喫力,不是很好理解。書的目錄架構很不錯。
一般不評論,這次來評論下。我的評論很具體,但是很片面,因爲我就評論一段內容,而且書也沒讀完。 評論的原文:“微內核是一種社會性的內核,宏內核是一種技術性的內核。在性能方面,微內核能擊敗宏內核的概率不大,因爲宏內核中的任何一個細分變更都需要整合測試,而且任何一個細分都在整體的框架內變更,包括架構風格和編碼風格。” 讀了這一段:我有兩個疑問: 如何理解社會性和技術性內核?它們的比較在一個緯度嗎? 宏內核的變更整合測試是微內核在性能方面能擊敗宏內核的概率不大的原因?如何理解這個因果關係? 本人小白,這兩個問題只能問大模型: 問題1: 從原文中將微內核稱爲"社會性"內核,宏內核稱爲"技術性"內核的對比來看,這確實不是一個維度上的直接比較。讓我分析一下: 1. 這個比喻的含義: "社會性"內核(微內核): - 強調模塊間的"社會關係" - 通過明確的通信協議交互 - 類似於社會中不同部門之間的協作 - 各個服務相對獨立,職責劃分明確 - 強調系統組件間的松耦合和自治性 - 管理方式類似於分佈式組織架構 "技術性"內核(宏內核): - 強調技術集成和整體性能 - 所有功能緊密集成在一起 - 追求技術上的效率和直接性 - 類似於一個高度集中的技術系統 - 管理方式類似於集中式架構 2. 比較維度的問題: 這個比較確實存在維度不對等的問題: - "社會性"描述的是組織和交互方式 - "技術性"描述的是實現和性能特徵 這就像把"團隊協作方式"和"技術實現方法"放在一起比較 3. 更合理的比較維度應該是: 組織維度的比較: - 微內核:分佈式組織,模塊自治 - 宏內核:集中式組織,統一管理 技術維度的比較: - 微內核:消息傳遞,模塊化設計 - 宏內核:直接調用,一體化設計 架構維度的比較: - 微內核:服務分離,接口標準化 - 宏內核:功能集成,共享資源 4. 更準確的描述方式: 與其說"社會性"和"技術性"的對比,不如說微內核和宏內核代表了兩種不同的系統設計哲學: - 微內核傾向於"分而治之"的模塊化設計理念 - 宏內核傾向於"統一集成"的整體性設計理念 請閱讀原文內容,解釋爲什麼“宏內核中的任何一個細分變更都需要整合測試,而且任何一個細分都在整體的框架內變更,包括架構風格和編碼風格”導致“在性能方面,微內核能擊敗宏內核的概率不大”? 原文內容:“微內核是一種社會性的內核,宏內核是一種技術性的內核。在性能方面,微內核能擊敗宏內核的概率不大,因爲宏內核中的任何一個細分變更都需要整合測試,而且任何一個細分都在整體的框架內變更,包括架構風格和編碼風格。” 宏內核的變更整合測試是微內核在性能方面能擊敗宏內核的概率不大的原因? 問題2: 這句話中的因果關係似乎表述有誤。原文中"因爲"後面的內容實際上是宏內核的一個限制或劣勢,按照邏輯不應該導致宏內核性能更優。讓我來分析原因: 1. 宏內核的特點: - 所有系統服務都運行在內核態 - 組件間緊密耦合 - 共享同一個地址空間 - 代碼集中管理和整合 2. 微內核的特點: - 只保留最基本的功能在內核態 - 大部分服務運行在用戶態 - 組件間通過消息傳遞通信 - 模塊化程度高,相互獨立 3. 性能比較: 宏內核通常性能更好,主要原因是: - 系統調用開銷小,無需頻繁的用戶態/內核態切換 - 組件間通信直接通過函數調用完成,效率高 - 共享內存訪問速度快 4. 原文邏輯問題: 原文說"宏內核中任何細分變更都需要整合測試"和"在整體框架內變更"其實是宏內核的缺點,說明: - 開發維護成本高 - 代碼耦合度大 - 修改風險高 這些特點反而應該成爲宏內核性能提升的阻礙,而不是性能優勢的原因。 所以一個更準確的表述應該是: "微內核難以在性能上擊敗宏內核,這是因爲宏內核中所有組件運行在同一地址空間,避免了頻繁的上下文切換和跨地址空間通信,儘管這種緊耦合的設計使得任何修改都需要完整的整合測試。"
重新修改評價。 開始評價:主要按基礎功能做介紹。 沒有整體理解 看這個 可能比較懵。瞭解內核的 看這個可以當個手冊翻翻。 更新後:其實是把kernel的一些關鍵點 講到了。比如 mmu ,futex 這些 都幫我解決了些問題。
能看得出來作者對操作系統很熟悉,很多細節也是信手拈來,對於同一機制在多個操作系統間的實現差異也講的很清楚,整體是一本好書。 美中不足的是linux數據結構那章比較晦澀難懂,希望增加更多圖示說明
竊以爲一本好的計算機類圖書一定是圖文並茂,深入淺出,而本書全是文字看的眼暈,又不是看小說。