不懂計算機系統也能寫程序,這是不爭的事實。可是咱們「學習操做系統並不是是爲了去創造一個操做系統,而是爲了理解操做系統以後寫出更好的程序」。git
全文脈絡思惟導圖以下:程序員
1. 什麼是操做系統
瞭解什麼是操做系統,操做系統是幹什麼用的,咱們還須要從操做系統的需求起源開始提及。web
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 小時,與1、二號的約會就是兩道併發執行的程序,而老渣的心則是有限的系統資源。
因爲併發運行的程序會爭搶使用系統資源,而系統中的資源有限,那麼老渣同一號或二號的 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,抓住春節的尾巴,祝你們新年快樂,牛年大吉 🎉,操做系統系列就此開篇了~
參考資料
-
《現代操做系統 — 第 3 版》 -
《王道考研 — 計算機網絡》 -
百度百科 — 進程管理 -
知乎 — 什麼是操做系統?https://www.zhihu.com/question/61861692/answer/575287870
😁 下方點擊卡片關注公衆號「飛天小牛肉」(專一於分享計算機基礎、Java 基礎和麪試指南的相關原創技術好文,幫助讀者快速掌握高頻重點知識,有的放矢),與小牛肉一塊兒成長、共同進步
🎉 並向你們強烈推薦我維護的 Gitee 倉庫 「CS-Wiki」(Gitee 推薦項目,目前已 0.9k star。面向全棧,致力於構建完善的知識體系:數據結構、計算機網絡、操做系統、算法、數據庫、設計模式、Java 技術棧、機器學習、深度學習、強化學習等),相比公衆號,該倉庫擁有更健全的知識體系,歡迎前來 star,倉庫地址 https://gitee.com/veal98/CS-Wiki。也可直接下方掃碼訪問
原創不易,讀完有收穫不妨點贊|分享|在看支持哦
本文分享自微信公衆號 - 飛天小牛肉(CS-Wiki)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。