了解作業系統的那些事兒,從這篇文章開始

 

🎓 盡人事,聽天命。部落客東南大學碩士在讀,熱愛健身和籃球,樂於分享技術相關的所見所得,關注公眾號 @ 飛天小牛肉,第一時間獲取文章更新,成長的路上我們一起進步

🎁 本文已收錄於 CS-Wiki(Gitee 官方推薦項目,現已 1.0k+ star),致力打造完善的後端知識體系,在技術的路上少走彎路,歡迎各位小夥伴前來交流學習

不懂電腦系統也能寫程式,這是不爭的事實。但是我們學習作業系統並非是為了去創造一個作業系統,而是為了理解作業系統之後寫出更好的程式

全文脈絡思維導圖如下:

1. 什麼是作業系統

了解什麼是作業系統,作業系統是幹什麼用的,我們還需要從作業系統的需求起源開始說起。

1946 年,世界上第一台通用電腦埃尼阿克(ENIAC)在美國賓夕法尼亞大學誕生,用了 18000 個電子管,佔地 170 平方米,重達 30 噸。最恐怖的是,ENIAC 或者說早期的電腦是沒有作業系統的,運轉這個 170 平方米的龐然大物全靠工程師們的手動操作。大概是種什麼感覺呢?請看下圖:

圖中遍布整個房間的大機器就是 ENIAC,從照片中我們可以看到一名操作人員正在手動調整一個按鈕,而像這樣的按鈕,整個房間內有成千上萬個!可想而知,沒有作業系統的時代,工程師們都需要直接面對這種反人類的硬體面板進行操作,運轉並維護一個電腦付出的人力成本簡直無法想像。

由此,引出了作業系統最主要的功能之一:對電腦硬體資源進行管理、分配和調度。

有了作業系統之後,某個程式需要佔據多少記憶體,具體分配哪個記憶體空間;只有一個 CPU,如何同時運行多個程式等,用戶都無需關心,更不需要去學習那些晦澀難懂的底層專業知識比如數字電路邏輯、電腦組成原理等,這一切都交給作業系統就好!

也就是說,作業系統將所有的底層硬體封裝成一個黑盒子,用戶直接向作業系統發送指令,即可完成與底層硬體的交互。

那麼,作業系統到底是何方神聖?我們先來看看早期的作業系統 Disk Operating System,DOS(磁碟作業系統) 長什麼樣:

有同學就說這不就是我們使用的 cmd 命令行,沒有錯,但是,它是整個螢幕都是這樣的介面,全螢幕都是!而不是某一個對話框裡面是這樣。

顯然,DOS 這種通過鍵盤輸入命令的操作方式已經比我們手動調整按鈕、連接線路要簡單得多。但是,這樣的命令行介面(CLI)必定無法符合大部分用戶的口味,於是後來擁有良好圖形介面(GUI)的作業系統比如 Windows 逐漸成為主流,畢竟只需通過滑鼠點擊就能進行操作,門檻已經足夠的低。

由此可見,一個作業系統的操作方式和介面的美觀程度對於用戶來說是非常重要的。

這就引出了作業系統的第二個主要功能:為用戶提供一個友好、清晰且簡單的操作介面(專業的叫法是 殼 Shell),用戶通過 Shell 執行該作業系統提供的所有的功能。對於命令行來說,就需要提供足夠多的命令;對於圖形介面來說,就需要提供足夠多數量的按鈕。

⭐ 總結一下:作業系統本質上是運行在電腦上的軟體/程式,作為硬體基礎上的第一層軟體,作業系統是硬體和各種軟體溝通的橋樑。其功能大致可分為兩個部分:

  • 管理電腦硬體與軟體資源

  • 向用戶提供一個與系統交互的操作介面

2. 電腦硬體簡單介紹

為了能夠工作,作業系統必須了解大量的硬體,至少需要了解硬體如何面對程式設計師。出於這個原因,這裡我們先簡單介紹現代個人電腦中的硬體,然後再討論作業系統中的細節。

一台簡單的個人電腦可以抽象為類似於下圖中的模型:

CPU、記憶體以及 I/O 設備都由一條系統匯流排連接起來並通過匯流排與其他設備通訊。

處理器

所謂處理器也就是我們常說的 CPU,它是電腦的大腦。CPU 從記憶體中提取指令並執行它。一個 CPU 的執行周期是從記憶體中提取一條指令、解碼並決定它的類型和操作數,接著執行之,然後再提取、解碼並執行下一條指令。重複該循環直到程式運行完畢。

簡單來說,大家記住這句話就行:一個程式需要放入記憶體並給它分配 CPU 才能執行

存儲器

電腦中第二個主要的組件就是存儲器。理想情況下,存儲器應該非常快速,比執行一條指令要快,從而使得 CPU 的執行效率不會收到存儲器的影響,而且足夠大且非常便宜

但是目前的技術手段無法同時滿足這三個目標,於是出現了不同的處理方式。存儲器系統採用一種分層次的結構,如下圖所示,頂層的存儲器速度最快、容量最小、成本最高,越往下層存儲器的速度越慢、容量越大、成本也越低

為什麼訪問暫存器的速度這麼快呢?那是因為暫存器的材料和 CPU 是相同的,所以和訪問 CPU 比起來幾乎是沒有時延的。

暫存器的下一個層次是快取,想必大家並不陌生,通常快取的使用會帶來性能上的改善。作業系統一直都在使用快取,比如說在記憶體中保留頻繁使用的文件,以避免從磁碟上重複地調取這些文件。

再往下一層就是記憶體,也稱主存,通常被稱為隨機訪問存儲器(Random Access Memory,RAM)。所有不能在快取中得到滿足的訪問請求都會轉往記憶體。

除了記憶體 RAM 之外,許多電腦還具有少量的非易失性隨機存取存儲器(Read Only Memory,ROM)。它們與 RAM 不同,在電源斷電後,ROM 並不會丟失內容,其中的內容一旦存儲後就不會再被修改。而且 ROM 非常快而且便宜。

下一個層次是磁碟,其容量更大,磁碟唯一的問題就是隨機訪問數據的時間比記憶體大約慢了三個數量級,其低速的原因是因為磁碟是一種機械裝置並且擁有一種特殊的構造,如下圖所示:

在一個磁碟中有一個或多個金屬碟片,它們以 5400、7200、10800 rpm 或更高的速度旋轉。從邊緣開始有一個機械臂懸橫在盤面上,這種情形大夥可以回想一下老式的播放塑料唱片機。資訊會寫在磁碟一系列的同心圓上。在任意一個給定臂的位置,每個磁頭可以讀取一段環形區域,稱為磁軌(track)。把一個給定臂的位置上的所有磁軌合併起來,就組成了一個柱面(cylinder)。

每個磁軌劃分若干扇區,扇區的值是 512 位元組。在現代磁碟中,較外部的柱面比較內部的柱面有更多的扇區。機械臂從一個柱面移動到相鄰的柱面大約需要 1ms。而隨機移到一個柱面的典型時間為 5ms 至 10ms,其具體時間取決於驅動器。磁臂到達正確的磁軌上後,驅動器必須等待所需的扇區旋轉到磁頭之下(這大概需要 5ms 至 10ms 的時延),再開始讀寫,低端硬碟的速率是 50MB/s,而高速磁碟的速率是 160MB/s

I/O 設備

CPU 和存儲器並不是作業系統唯一需要管理的資源,I/O 設備與作業系統同樣密不可分。如下圖所示,I/O 設備一般包括兩個部分:設備控制器和設備本身,比如鍵盤控制器和鍵盤。

設備控制器其實就是一塊晶片或者一組晶片,它能夠接收作業系統的指令並控制物理設備。例如,從設備中讀取數據並完成數據的處理。

在許多情況下,實際控制設備的過程是非常複雜而且存在諸多細節。因此控制器的工作就是為作業系統提供一個更簡單(但仍然非常複雜)的介面。

I/O 設備另一部分是設備本身,設備本身有一個相對簡單的介面,這是因為介面既不能做很多工作,而且也已經被標準化了,標準化後任何一個磁碟控制器就可以適配任意一種磁碟,所以標準化是非常必要的。

3. 作業系統的四個特徵

作業系統擁有 4 個鮮明的特徵:並發、共享、虛擬和非同步。其中,並發和共享是作業系統的最基本特徵,沒有並發和共享,就談不上虛擬和非同步。

下面我們來簡單的了解一下這 4 個特徵,其中涉及的很多詳細概念不會在本文做出解釋,後續會陸續開更。

① 並發

並發和並行這兩個孿生兄弟,經常會讓初學者摸不著頭腦。

  • 並發:並發是指宏觀上在一段時間內能同時運行多個程式。當然,這些程式宏觀上是同時發生的,但微觀上是交替發生的。作業系統通過引入進程和執行緒,使得程式能夠並發運行。

  • 並行:並行則指同一時刻能運行多個指令,指兩個或多個事件在同一時刻同時發生。並行需要硬體支援,如多流水線、多核處理器或者分散式計算系統。

配合下圖形象的理解下:

說到並發與並行,不得不提 CPU,作為電腦的大腦, CPU 主要和記憶體進行交互,從記憶體中提取指令並執行。而一個程式需要放入記憶體並給它分配 CPU 才能執行,所以並發並行的能力與 CPU 的性能息息相關:

  • 單核 CPU同一時刻只能執行一個程式,各個程式只能並發地執行 ;

  • 多核 CPU同一時刻可以同時執行多個程式,多個程式可以並行地執行。

比如 Intel 的第八代 i3 處理器就是 4 核 CPU,意味著可以並行地執行 4 個程式。當然,即使是對於 4 核 CPU 來說,只要有 4 個以上的程式需要 「同時」 運行,那麼並發性依然是必不可少的,因此並發性是作業系統一個最基本的特徵

② 共享

共享即資源共享,是指系統中的資源可供記憶體中多個並發執行的進程共同使用。

主要有兩種共享方式:

1)互斥共享

所謂互斥共享,就是說雖然這個資源是共享的,所有進程都能夠使用,但是同一個資源在某一時刻只允許一個進程訪問,也稱為互斥訪問,需要用同步機制來實現互斥訪問。互斥共享/訪問的資源稱為臨界資源

舉個互斥共享的例子:

如果我們同時使用 QQ 和微信影片,同一時間段內攝影機資源只能分配給其中的一個進程。

2)同時共享

同時共享與互斥共享相反,允許一個時間段內多個進程 「同時」 對系統中的某些資源進行訪問。當然,所謂的 「同時」 往往是宏觀上的,而在微觀上,這些進程可能是交替地對該資源進行訪問(即分時共享)

舉個同時共享的例子:

使用 QQ 發送硬碟上的文件 A,同時使用微信發送硬碟上的文件 B。宏觀上看,兩邊在同時讀取並發送文件, 都在訪問硬碟資源,並從中讀取數據。微觀上看,QQ 和微信這兩個進程是交替訪問硬碟資源的。

並發和共享作為作業系統的兩大最基本特徵,其實是互為存在條件的。為什麼這麼說呢?這樣,我們繼續通過上述發送文件的例子來看並發與共享的關係(使用 QQ 發送硬碟上的文件 A,同時使用微信發送硬碟上的文件 B):

  • 並發性的體現:兩個進程正在並發執行。

    如果失去並發性,系統中只有一個程式正在運行,則共享性失去存在的意義

  • 共享性的體現:兩個進程需要共享地訪問硬碟資源。

    如果失去共享性,則 QQ 和微信不能同時訪問硬碟資源,就無法實現同時發送文件,並發也就無從談起

③ 虛擬

先上定義:虛擬是指把一個物理上的實體變為若干個邏輯上的對應物。物理實體(前者)是實際存在的,而邏輯上對應物(後者)是用戶感受到的。

這麼說是有點虛無縹緲了,用一個例子來理解:

上文說過,一個程式需要放入記憶體並給它分配 CPU 才能執行。那比如說 GTA5 需要 4GB 的運行記憶體,QQ 需要256MB 的記憶體,Chrome 需要 512MB 的記憶體,網易雲音樂需要 256MB 的記憶體…… 假設我們的電腦只有 4GB 記憶體且 CPU 是單核的。那麼這裡就存在如下兩個問題:

問題 1:這些程式同時運行需要的記憶體遠大於 4 GB,那麼為什麼它們還可以在我的電腦上同時運行呢?

答:這得益於虛擬記憶體技術的空分復用技術。雖然我們的電腦實際上只有 4GB 的記憶體,但是卻可以完美的同時運行這些遠大於 4G 記憶體的程式,在用戶看來似乎我們的電腦記憶體遠遠大於 4GB

問題 2:既然一個程式需要被分配 CPU 才能正常執行,那為什麼單核 CPU 的電腦中也能同時運行這麼多個程式呢?

答:這得益於虛擬記憶體技術的時分復用技術。雖然實際上只有一個單核 CPU,無法同時並行執行這麼多個程式,但是微觀上 CPU 在各個微小的時間段內交替著為各個進程服務,在用戶看來似乎我們的 CPU 是多核的

下面我們來解釋一下上述兩種虛擬技術:

1)空分復用技術

空分復用技術的原理就是把記憶體作為高速快取來使用,只用來保存最頻繁使用的部分程式,而把程式的大部分放在磁碟上。這種機制需要快速的映像記憶體地址,以便把程式生成的地址轉換為有關位元組在記憶體中的物理地址。這種映像由 CPU 中的一個部件,稱為存儲器管理單元(Memory Management Unit,MMU)來完成,這張圖上面我們也看過了,回顧一遍:

2)時分復用技術

多個進程能在同一個 CPU 上並發執行就是因為使用了時分復用技術,讓每個進程輪流佔用處理器,每次只執行一小個時間片並快速切換。

顯然,如果失去了並發性,一個時間段內系統中只能運行一道程式,那也就失去了實現虛擬性的意義了。因此,沒有並發性,就談不上虛擬性

④ 非同步

非同步是指:在多道程式環境下,允許多個程式並發執行,但由於資源有限,進程的執行不是一貫到底的, 而是走走停停,以不可預知的速度向前推進,這就是進程的非同步性。

舉個例子:老渣在 8 點 和 12 點要和兩個女孩並發約會,每個女孩的約會時間是 2 小時,與一、二號的約會就是兩道並發執行的程式,而老渣的心則是有限的系統資源。

由於並發運行的程式會爭搶使用系統資源,而系統中的資源有限,那麼老渣同一號或二號的 2 小時約會時間就可能無法一次性結束,而是斷斷續續的。可能 8 點到 9 點和一號約會,9 點到10 點和二號約會,然後 10 點到 11 點再和一號約會,最後 11 點到 12 點和二號約會。

如果失去了並發性,即系統只能串列地運行各個程式,那麼每個程式的執行會一貫到底。因此,只有系統擁有並發性,才有可能導致非同步性

4. 學習作業系統的核心內容

本系列的核心內容主要有以下:

  • 進程管理

  • 存儲管理

  • 文件系統管理

  • I/O 設備管理

① 進程管理

進程(Process)這個概念在上文中已經多次出現了,為了能更好地實現作業系統的並發性和共享性,遂引入了進程。

進程就是程式的一次執行過程,它是暫時的。不僅包含正在運行的程式實體,並且包括這個運行的程式中佔據的所有系統資源,比如說 CPU、記憶體、網路資源等。很多小夥伴在回答進程的概念的時候,往往只會說它是一個運行的實體,而會忽略掉進程所佔據的資源。比如說,同樣一個程式,同一時刻被兩次運行了,那麼他們就是兩個獨立的進程。

講到進程不得不說一嘴執行緒,一個進程中可以有多個執行緒,它們共享進程資源。

舉個例子,QQ 和 Chrome 瀏覽器是兩個進程,Chrome 進程裡面有很多執行緒,例如 HTTP 請求執行緒、事件響應執行緒、渲染執行緒等等,執行緒的並發執行使得在瀏覽器中點擊一個新鏈接從而發起 HTTP 請求時,瀏覽器還可以響應用戶的其它事件。

我們所說的進程管理其實主要包含兩個內容:

  • 進程通訊

  • 進程調度

進程通訊顧名思義,就是進程之間的相互交流。CPU 作為電腦最寶貴的資源,一個進程需要放入記憶體並給它分配 CPU 才能執行,而一個程式可能包含多個進程,這就需要進程之間進行相互交流,彼此同步,共同完成這個程式。舉個例子,如果進程 A 產生數據而進程 B 列印數據,那麼 B 在 A 產生數據之前就必須等待,那麼 A 是不是就得給 B 發消息,告訴 B 我生產了數據,你可以列印了。

進程調度就是說,通常情況下,會有多個進程或執行緒同時競爭 CPU,如果恰好只有一個 CPU 可用,這就導致 CPU 必須對下一個運行的進程或執行緒做出選擇,這個選擇的過程就是進程調度。

② 記憶體管理

高速快取作為除暫存器外最底層的存儲器,其管理是由硬體完成的,所以我們學習的內容集中在對記憶體的管理。

其實這個話題在上文作業系統的四個特徵中虛擬這個特徵時我們就說過了,記憶體一般用來保存正在執行的程式,在非常簡單的作業系統中,記憶體中每次只能運行一個程式,如果要運行第二個程式,第一個程式就必須被移除記憶體,再把第二個程式裝入記憶體。

顯然這樣非常低效的,為此引入了虛擬記憶體技術,把記憶體作為高速快取來使用,只用來保存最頻繁使用的部分程式,而把程式的大部分放在磁碟上。

那麼記憶體管理做的事情大概就是:

  • 把使用頻繁的部分程式放入記憶體

  • 當記憶體滿的時候,替換掉記憶體中的某些部分

③ 文件系統管理

文件其實是進程創建的資訊邏輯單元,一個磁碟可能含有幾千甚至幾百萬個文件,每個文件都是獨立於其他文件的,事實上,把每個文件看成一種地址空間更容易理解文件的本質。

文件同樣是受作業系統管理的,有關文件的構造、命名、存取、使用、保護、實現和管理方法都是作業系統設計的內容,這就是文件系統的主題。

④ I/O 設備管理

作業系統必須高效的管理 I/O 設備,它需要向 I/O 設備發送命令,捕捉中斷,並處理設備的各種錯誤,它還應該在設備和系統的其他部分之間提供簡單且易用的介面。

5. 內核態和用戶態

內核這個專有名詞可能會讓大家有點懵逼。這裡解釋一下。現代作業系統都採用進程的概念,為了更好的處理系統的並發性、共享性等,並使進程能夠協調地工作,僅依靠電腦硬體提供的功能是遠遠不夠的。例如,進程的調度就不能用硬體來實現,必須使用一組基本軟體對硬體資源進行改造,以便為進程的執行提供良好的運行環境,這個軟體就是內核(kernel)。

簡單來說,內核就是作業系統中的一組程式模組,作為可信軟體來提供支援進程並發執行的基本功能和基本操作,具有訪問硬體設備和所有記憶體空間的許可權。不誇張的說,內核是作業系統的核心。

當然,作業系統除了內核程式外,還有包括其他一些基本組件,如文本編輯器、編譯器、用來與用戶進行交互的程式比如桌面系統等。

① 什麼是內核態和用戶態

那麼既然內核是程式,它需要運行,就必須被分配 CPU。因此,CPU 上會運行兩種程式,一種是作業系統的內核程式(也稱為系統程式),一種是應用程式。前者完成系統任務,後者實現應用任務。兩者之間有控制和被控制的關係,前者有權管理和分配資源,而後者只能向系統申請使用資源。

顯然,我們應該把在 CPU 上運行的這兩類程式加以區分,這就是內核態和用戶態出現的原因。

  • 內核態(kernel mode):當 CPU 處於內核態時,這是作業系統管理程式(也就是內核)運行時所處的狀態。運行在內核態的程式可以訪問電腦的任何資源,不受限制,為所欲為,例如協調 CPU 資源,分配記憶體資源,提供穩定的環境供應用程式運行等。

  • 用戶態(user mode):應用程式基本都是運行在用戶態的,或者說用戶態就是提供應用程式運行的空間。運行在用戶態的程式只能訪問當前 CPU 上執行程式所在的地址空間,這樣有效地防止了作業系統程式受到應用程式的侵害。

對作業系統來說,什麼樣的程式應該放在內核態呢?這取決於對資源的需求、時間的緊迫和效率高低等因素。比如 CPU、記憶體、設備等資源管理器程式應該在內核態運行,否則安全性沒有保證。對於文件系統和數據來說,文件系統數據和管理必須放在內核態,但是用戶的數據和管理可以放在用戶態。

② 中斷機制

在合適的情況下,作業系統的內核會把 CPU 的使用權主動讓給應用程式,也就是使 CPU 從內核態轉換到用戶態。而 CPU 要想從用戶態回到內核態,只能通過中斷機制完成,如果沒有中斷機制,那麼一旦應用程式上 CPU 運行(用戶態),CPU 就會一直運行這個應用程式。也就是說,中斷是讓作業系統內核奪回 CPU 使用權的唯一途徑。可以說,作業系統是由中斷驅動的

當然,這裡的中斷機制非常廣義,包含了三種手段,也就是說從用戶態轉換到內核態有三種手段:

  • 1)程式請求作業系統服務,執行系統調用

  • 2)程式運行時產生外中斷事件(比如 I/O 操作完成),運行程式被中斷,轉向中斷程式處理

  • 3)在程式運行時發生內中斷(異常)事件,運行程式被打斷,轉向異常處理程式工作

以上這三種手段都是通過中斷機制來發生的,那麼接下來我們就來看看中斷到底有哪些類型。

按照中斷訊號來源於CPU 的外部還是內部,將中斷類型分為外中斷和內中斷:

  • 外中斷 (也稱中斷,狹義上的中斷)

    外中斷與當前執行的指令無關, 中斷訊號來源於 CPU 外部。如 I/O 完成中斷,表示設備輸入/輸出處理已經完成,CPU 能夠發送下一個輸入/輸出請求。此外還有時鐘中斷、控制台中斷等。

  • 內中斷(也稱 異常、例外)

    內中斷與當前執行的指令有關, 中斷訊號來源於 CPU 內部。如非法操作碼、地址越界、算術溢出,除數為 0 等。

這裡簡單解釋一下中斷機制的基本原理:不同的中斷訊號,肯定是需要用不同的中斷處理程式來處理的。那麼當 CPU 檢測到中斷訊號後,就會根據中斷訊號的類型去查詢中斷向量表,以此來找到相應的中斷處理程式在記憶體中的存放位置。

③ 系統調用

如上文所說,程式通過執行系統調用,也可以使得 CPU 從用戶態轉向內核態。那麼系統調用和中斷有啥關係呢?為什麼說這種方式也屬於中斷機制的一種呢?那是因為系統調用是通過陷入指令完成的,該指令會引發內中斷。

說的更詳細點,作業系統作為電腦硬體之上的第一層軟體,需要向上層提供一些簡單易用的服務,這個上層包括用戶和應用程式:

給用戶提供的介面有圖形介面 GUI 和命令介面,給應用程式提供的是程式介面,這個程式介面就是由一組系統調用組成的,是作業系統提供給開發人員使用的。可以理解為一種可供應用程式調用的特殊函數,應用程式可以通過系統調用來請求獲得作業系統內核的服務

 

系統調用的過程簡略版大致如下:

1)在用戶態,應用程式傳遞系統調用參數

2)執行陷入指令,引發一個內中斷,使 CPU 進入內核態

3)在內核態,執行相應的請求,內核程式處理系統調用

4)返回應用程式

思考一下為什麼系統調用是必須的

舉個例子:我們去學校列印店列印論文,你按下了 WPS 的 「列印」 選項,於是印表機開始工作。 你的論文列印到一半時,另一位同學按下了 Word 的 「列印」 按鈕,開始列印他自己的論文。想像一下如果兩個進程可以隨意的、並發的共享印表機資源,會發生什麼情況?

顯然,兩個進程並發運行,導致印表機設備交替的收到 WPS 和 Word 兩個進程發來的列印請求,結果兩篇論文的內容混雜在一起了

如何解決這個問題?這就需要作業系統內核對共享資源進行統一的管理,並向上層提供 「系統調用」 ,運行在用戶態的應用程式或者進程想要使用印表機這種共享資源,只能通過系統調用向作業系統內核發出請求,然後內核會對各個請求進行協調處理(進程調度)。

通過上面這個例子,我們就可以總結出什麼功能會用到系統調用:凡是與共享資源有關的操作(比如記憶體分配、I/O 操作、文件管理等),都必須通過系統調用的方式向作業系統內核提出請求,由作業系統內核代為完成。這樣可以保證系統的穩定性和安全性,防止用戶進行非法操作。這些系統調用按功能大致可分為如下幾類:

  • 設備管理。完成設備的請求或釋放,以及設備啟動等功能。

  • 文件管理。完成文件的讀、寫、創建及刪除等功能。

  • 進程式控制制。完成進程的創建、撤銷、阻塞及喚醒等功能。

  • 進程通訊。完成進程之間的消息傳遞或訊號傳遞等功能。

  • 記憶體管理。完成記憶體的分配、回收以及獲取作業佔用記憶體區大小及地址等功能。

6. 總結

縫縫補補終於寫完了,說實話,這種系列綜述類的文章真的難寫,既要照顧知識體系完整度,保證每個模組都能涉及,又不能講的太深太細,還需要循序漸進,防止陡然出現一個並未介紹的專有名詞。

OK,抓住春節的尾巴,祝大家新年快樂,牛年大吉 🎉,作業系統系列就此開篇了~

參考資料

🎉 關注公眾號 | 飛天小牛肉,即時獲取更新

  • 部落客東南大學碩士在讀,利用課餘時間運營一個公眾號『 飛天小牛肉 』,2020/12/29 日開通,專註分享電腦基礎(數據結構 + 演算法 + 電腦網路 + 資料庫 + 作業系統 + Linux)、Java 基礎和面試指南的相關原創技術好文。本公眾號的目的就是讓大家可以快速掌握重點知識,有的放矢。希望大家多多支援哦,和小牛肉一起成長 😃

  • 並推薦個人維護的開源教程類項目: CS-Wiki(Gitee 推薦項目,現已 1.0k+ star), 致力打造完善的後端知識體系,在技術的路上少走彎路,歡迎各位小夥伴前來交流學習 ~ 😊