分層與封裝(2) 計算機系統的分層結構

? ? 之前我們提到了一種分層結構,互聯網系統是宏觀的上層,而計算機是細節的底層實現?;ヂ摼W系統是由大量計算機互相連接而成的,大致可以分為數據傳遞結構、服務提供結構、和終端結構。每個結構實際上都不關心別的結構里的計算機具體是什么型號、如何實現的,他們只需要關注如何處理從網絡端口獲得的信息包,并將處理好的數據分發給誰。由于這些“封裝”的存在,我們可以分層的考慮這些問題,設計微觀層面的個體計算機系統時,也不需要考慮宏觀層面的互聯網系統,只需要按照互聯網系統的要求設計好對接的接口就可以了。

? ? 在計算機系統中,也有這樣的分層結構,最底層的硬件層包括了可以觸碰到的硬盤、CPU、顯卡等等硬件;中間是操作系統層,是一個對下可以控制各個硬件,對上可以搭載各種應用的軟件系統;上層是應用層,也就是給用戶使用的各種軟件應用等。對于硬件層來說,他們所要考慮的是給定一個指令如何運轉;操作系統層比較復雜,他將硬件抽象成軟件的概念,并對他們進行管理,比如硬盤的存儲被抽象成了文件管理、CPU的計算被抽象成了程序的進程、網絡通信和外部輸入輸出被抽象了程序可以訪問的端口;應用層利用操作系統抽象出來的接口,創作出各種應用供用戶使用。

? ? 所以在這樣的分層系統中,用戶只知道應用是怎么使用的,并不需要知道操作系統是怎么安排應用的;應用只需要知道如何使用操作系統的接口,并不需要知道具體的硬件是怎么運轉的。所以永遠只有上一層需要知道下一層如何使用,而更上一層對底層是一無所知的。

? ? 這種分層系統可以說是無處不在,比如說CPU進行計算的時候需要數據,數據一般會存儲在CPU帶的緩存上,緩存的讀寫速度非???,但是造價非常貴,所以一般只有幾千字節大??;那么對于更大的數據,就需要將內存的數據一點點換給緩存讀寫;對于更大的數據,就需要從硬盤里將數據一點點換給內存,再換到緩層上。分層的首要條件就是封裝,CPU只會找緩存進行讀寫,不會去操作內存;緩存只會和內存接觸,不會直接去找硬盤。
? ? 這個分層系統使得CPU能夠很好的平衡數據需求中快速和廉價兩個關鍵。大部分數據可以在較快速的數據設備中完成,而少部分可以花費時間去向慢速且廉價的數據設備請求。

? ? 再比如互聯網的經典TCP/IP分層模型,最底層網絡接口層提供了設備之間進行直接數據傳遞的方法;第二層的網絡互連層利用網絡接口層的方法,選擇路徑將數據從設備A經過若干中間設備傳遞到遠距離的設備B上;第三層傳輸層利用第二層的傳輸手段把大量數據打包,并確認對方能夠收到了;第四層應用層利用第三層可靠的傳輸,來添加各種協議,使得傳輸的數據變得有意義,能夠被應用所使用。

? ? 這種分層模型的優勢在于,每一層所需要考慮的事情大大減少了,由于每一層只負責有限的部分,思維強度變低,也可以更可靠的測試。如果沒有這種分層模型,軟件直接操作數據傳輸和網絡線路。網絡斷了這種再普通不過的情況,卻無法測試;分層之后可以確認一定是中間某一層出現了問題,如果別的軟件可以聯網,那就是軟件的問題;如果家里別的設備可以聯網,那應該是設備上的問題;如果電腦拿到別的地方可以聯網,那應該網絡線路的問題。

一般的軟件或者網絡服務也會有分層系統:最底層的數據讀寫層,將數據存儲到本地硬盤或者網絡存儲空間中;中間的服務層,處理業務邏輯,更新現實給用戶的頁面;和最前端的用戶界面,幫助用戶完成他們的請求,并顯示結果給用戶。所以簡單來說在網頁上發送Email的過程是這樣的:用戶請求發送Email -> 前段顯示Email編輯頁面 -> 用戶完成編寫點擊發送 -> 前段將數據打包成請求包發送給服務層 -> 服務層處理邏輯,發送給對方郵箱,保存到數據庫 -> 數據層得到請求更新數據庫 -> 服務層告訴前段郵件已經保存、發送成功 -> 前端顯示給用戶。

好處依然是每一層需要考慮的事情大大減少,每一層都被很好的封裝,絕對不會多操心別人的一點事情。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容