小白如何學操作系統(tǒng)?
點擊藍色“程序員cxuan?”關注我喲
加個“星標”,歡迎來撩

很多讀者問我如何學習操作系統(tǒng)?推薦幾本操作系統(tǒng)可以看的書?操作系統(tǒng)都需要學什么?有哪些視頻可以看嗎?下面我就針對性的對這些問題做一下我自己的闡述。
學習操作系統(tǒng)不是為了讓你設計一個操作系統(tǒng),而是為了讓你更好的了解其運行原理。
如果你覺得操作系統(tǒng)有些難度的話,強烈推薦看一下我的這本 PDF。
這個 PDF 能讓你對計算機的硬件和運行原理有基本的入門。
這本 PDF 可以說是對任何小白都適用了,如果你能看完,就說明你有一定的基礎了,可以正式入門操作系統(tǒng)了。
我學習操作系統(tǒng)是根據(jù)機械工業(yè)出版社的《現(xiàn)代操作系統(tǒng)》第四版學習的。我是根據(jù)中文版和英文版結合來看的,看完你可能會很懵逼,但是沒關系,就一句話很重要。
「花 200 - 300 小時入門一門課程,然后在你職業(yè)生涯中,不時溫習其中的精髓」
操作系統(tǒng)學習之旅
下面是操作系統(tǒng)的大綱

先對上面操作系統(tǒng)大綱有個印象,下面我會對每個章節(jié)放上我的文章和學習重點

第一章 操作系統(tǒng)概述
在這一章節(jié),你需要知道

什么是操作系統(tǒng)?什么是計算機系統(tǒng)?操作系統(tǒng)有什么用?操作系統(tǒng)滿足了什么需求?什么是內核態(tài)和用戶態(tài)? 計算機都有哪些硬件?它們各自的作用是什么?內存的層次模型是什么?多線程和多核芯片的關系?為什么會出現(xiàn)高速緩存?磁盤的構造是什么?I/O 的三種方式是什么?中斷的處理過程?總線是什么? 都有哪些操作系統(tǒng)? 操作系統(tǒng)都有哪幾類抽象?進程是什么?什么是地址空間?文件是什么?什么是 shell? 系統(tǒng)調用是什么?系統(tǒng)調用的分類 操作系統(tǒng)的結構有哪些?單體系統(tǒng)、分層系統(tǒng)、微內核、客戶-服務器模式都是什么意思?
你可以從下面我的文章中找到答案
第二章 進程和線程
在這一章節(jié),你需要知道下面這些內容

進程模型?進程創(chuàng)建的方式有幾種?進程的終止方式?Unix 和 Windows 體系結構一樣嗎?什么是上下文切換?進程有哪幾種實現(xiàn)? 并行和并發(fā)一樣嗎? 線程和進程一樣嗎?有了進程為什么還要有線程?什么是 POXIS 線程?線程實現(xiàn)有幾種方式? 進程間通信有幾種方式?競態(tài)條件是什么?臨界區(qū)是什么? 操作系統(tǒng)是如何調度的?進程有哪些行為?調度算法有哪些?調度的分類?
你可以從我下面這篇文章中找到答案
第三章 內存管理
在這一章,你需要知道下面這些知識點

什么是無存儲器抽象? 什么是有存儲器抽象?什么是地址空間的概念?如何管理空閑內存空間?有哪些管理算法? 頁面置換算法有哪些?頁面置換算法的優(yōu)劣性對比?如何選擇? 什么是虛擬內存?為什么能運行比系統(tǒng)內存還多的程序?什么是頁和頁表?內存如何加載數(shù)據(jù)?頁表的結構是什么?如何優(yōu)化/加速分頁過程?如果頁表特別大,該采取哪種方式進行優(yōu)化?
你可以從我下面這篇文章中找到答案
第四章 文件系統(tǒng)管理
在這一章,你需要知道下面這些知識點

什么是文件?文件是一種抽象嗎?文件的命名是怎樣的?文件的結構是什么?文件有哪些類型?文件如何訪問?屬性是什么?文件如何操作? 什么是一級語錄系統(tǒng)?路徑名是什么? 文件系統(tǒng)布局是怎樣的?文件系統(tǒng)實現(xiàn)有哪幾種方式?inode 是什么? 文件系統(tǒng)的管理和優(yōu)化是什么?磁盤空間是如何管理的?文件備份是什么?如何進行文件備份? 如何優(yōu)化文件系統(tǒng)性能?
你可以從我下面這篇文章中找到答案
第五章 I/O 管理
在這一章,你需要知道下面這些知識點

I/O 設備都分為哪幾類?各自的優(yōu)缺點是什么?什么是內存映射I/O ,它的優(yōu)缺點是什么?什么是 DMA?DMA 的工作原理?什么是中斷?中斷有哪些分類,各自是什么意思,如何解釋? I/O 的軟件目標是什么?有哪幾類 I/O 方式? I/O 層次結構如何劃分? 磁盤是如何工作的?磁盤的構造?磁盤調度算法有哪些?磁盤如何處理錯誤? 什么是時鐘?各自解釋一下時鐘硬件、軟件和定時器?
你可以從我下面這篇文章中找到答案
第六章 死鎖詳解
在這一章,你需要知道下面這些知識點

操作系統(tǒng)是如何定義資源的?什么是可搶占資源和不可搶占資源? 死鎖的模型,死鎖有哪幾種類型? 什么是鴕鳥算法? 死鎖如何檢測?通過哪幾種方式恢復死鎖? 如何避免死鎖? 如何破壞死鎖? 什么是資源死鎖?除此之外還有哪些死鎖方式?
你可以從我下面這篇文章中找到答案
操作系統(tǒng)概念和面試題
如果你看完計算機必知的核心基礎知識后還是感覺有些吃力,不妨先看看我整理的操作系統(tǒng)核心概念
還有為你準備的操作系統(tǒng)面試題
操作系統(tǒng)學習資料
開源項目
首先給大家推薦一個非常好的開源項目
自學計算機科學?
https://link.zhihu.com/?target=https%3A//github.com/keithnull/TeachYourselfCS-CN/blob/master/TeachYourselfCS-CN.md
你不僅僅可以找到操作系統(tǒng)相關的資源,你還可以找到其他計算機黑皮書資源

里面有一句話非常提神
?如果你是一個自學成才的工程師,或者從編程培訓班畢業(yè),那么你很有必要學習計算機科學。幸運的是,不必為此花上數(shù)年光陰和不菲費用去攻讀一個學位:僅僅依靠自己,你就可以獲得世界一流水平的教育。
?
為什么有的人說學習計算機基礎沒有必要?現(xiàn)在看來簡直是天方夜譚
?軟件工程師分為兩種:一種充分理解了計算機科學,從而有能力應對充滿挑戰(zhàn)的創(chuàng)造性工作;另一種僅僅憑著對一些高級工具的熟悉而勉強應付。
這兩種人都自稱軟件工程師,都能在職業(yè)生涯早期掙到差不多的工資。然而,隨著時間流逝,第一種工程師不斷成長,所做的事情將會越來越有意義且更為高薪,不論是有價值的商業(yè)工作、突破性的開源項目、技術上的領導力或者高質量的個人貢獻。
?
學習視頻
除此之外,我在 B 站上也給大家找來了一些學習視頻
機械工業(yè)黑皮書系列 B 站視頻
《現(xiàn)代操作系統(tǒng)》:https://www.bilibili.com/video/av9555596?from=search&seid=8107077283516919308
《算法導論》:https://www.bilibili.com/video/av48922404?from=search&seid=10653982037326460685
《深入理解計算機系統(tǒng)》:https://www.bilibili.com/video/av31289365?from=search&seid=16298868573410423104
《計算機網絡:自頂向下方法》:https://www.bilibili.com/video/av41404195?from=search&seid=15854652450440912260
《計算機程序的構造和解釋》:https://www.bilibili.com/video/av8515129?from=search&seid=537958487190286356
《編譯原理》:https://www.bilibili.com/video/av17649289?from=search&seid=5673462623145874347
《數(shù)據(jù)庫系統(tǒng)概念》:https://www.bilibili.com/video/BV1PJ411F78b?from=search&seid=2655021297331616552
操作系統(tǒng)書籍推薦
《操作系統(tǒng)導論》 強烈推薦,國外經典教材《Operating Systems:Three Easy Pieces》的中文版 《操作系統(tǒng)精髓與設計原理》 《深入理解計算機系統(tǒng)》 《現(xiàn)代操作系統(tǒng)》 《操作系統(tǒng)設計與實現(xiàn)》 《Linux內核設計與實現(xiàn)》 《深入理解linux內核》 《Linux設備驅動程序》 《Linux內核完全剖析》 《UNIX操作系統(tǒng)設計》
操作系統(tǒng)網站推薦
給大家推薦一些我在學習操作系統(tǒng)這門課的過程中,經常參考的網站
一般很少有人推薦操作系統(tǒng)的網站吧。。。。。。這幾個網站來源于我平常的學習總結,也有一些是來源于網上優(yōu)秀的回答,希望這幾個網站能夠助力你對操作系統(tǒng)有更深的認識。
studytonight
studytonight 簡直太棒了!??!studytonight 會包括 operationg system,但是并不是說 studytonight 就是一個單純的 OS 學習網站,它是一個基礎教程網,它的首頁是這樣的,不僅限于 os ,還會包括 「Java、C、CSS、OS、Computer network 等」。

這個頁面一看就愛上了,和國內很多頁面做的硬風格不同,這樣的教程才不那么生硬和讓人討厭。在所有的素材庫里面,有各種各樣的教程

我們推薦的是操作系統(tǒng),所以索性就點進去操作系統(tǒng)主頁好了,點進去的頁面就是這樣的
studytonight 是一個對初學者來說學習操作系統(tǒng)的一個很友好的網站。

課程藝術主要分為三部分,由易到難分別是基礎篇、中等篇、提高篇,我們點進去基礎篇的第一篇
這一篇主要是對操作系統(tǒng)的介紹,操作系統(tǒng)的功能、操作系統(tǒng)任務等
通過簡單的描述和圖片來說明,讓人感覺清晰易懂,很有目的性的學習,而且這些主題也可以作為面試題來考

你還真說對了,studytonight 還真的就有面試題
我們在 Test 頁簽下面會發(fā)現(xiàn)有很多面試題

我們選擇 「Operating System」 進去之后會發(fā)現(xiàn)有很多的測試

是一個一體化的學習平臺,適用于新手,我大致翻看了一下,里面的東西比較基礎,受眾廣,是大家學習必備的一個網站。
udacity
udacity 是一個視頻學習網站,界面看起來很清爽。

下面還有關于課程的介紹,同時你可以開始免費的課程,這個界面就是中文版了,讓人眼前一亮

我的課程 就是你學過的所有課程,你可以在所有課程中搜索指定的課程,種類非常多

我們還是以操作系統(tǒng)為例,來看一下具體的課程

左面是具體的課程列表,右面是講師授課部分,視頻非常清晰,而且講師吐字很清楚,可以鍛煉英語。有一些小伙伴們說英文看不懂,對英文網而退卻,這不是一個好習慣。英文在編程世界中的重要性不言而喻。所以英文是你一定要學好的一門語言。

講師講完課程之后還有具體的練習環(huán)節(jié),作為學習鞏固,非常不錯。
udacity 的課程要比 studytonight 更深一些,操作系統(tǒng)這門課就分成了 22 堂課,每一堂課還有很多小節(jié),真是一個非常好的網站。「我現(xiàn)在在寫文章,我巴不得不寫字了,馬上學習!」。還是忍住了,那就寫完了馬上去看?。?!
tutorialspoint
tutorialspoint 這個網站也是一個資源教程網,這個網站的搜索指數(shù)非常高,基本上搜任何問題都有 tutorialspoint 的解釋。

我們點進去 Library 之后發(fā)現(xiàn),這就是教程寶庫啊,羅列的非常清楚

tutorialspoint ?也有視頻教程,不過大多都收費。

教程非常多,不僅限于編程,也包含 Excel 、SAP 等教程。
tutorialspoint 還有電子書教程,不過大部分也是收費的,應該是 tutorialspoint 自己制作的 PDF,不知道寫的怎么樣,如果有興趣的小伙伴可以付費下載,到時候記得給我發(fā)一份哦,嘿嘿。

說了這么多,我們還沒有看 tutorialspoint 操作系統(tǒng)的主頁呢

左邊是導航欄,右邊是具體的教程,這個樣式感覺有些老,不過分類倒是很明確的,里面的內容要比 studytonight 差一些,也是一個入門非常好的教程網
classcentral
classcentral 這個網站有點強啊,里面匯總了各大名校的教程

我們發(fā)現(xiàn)了一個中文教程,一看是 南京大學 的教程,南京大學也是非常牛逼的一所學校,小編也有南大的基友在搞影視,其實我是一個被編程耽誤的導演,狗頭保命。
不扯皮了,來看看南大的課程

這么多牛逼的課程發(fā)現(xiàn)了中文大學,也側面說明了我國大學在國際上的地位。Overview 是 OS 的總體介紹。
我們注冊后點擊開始課程,就進入講課頁面

課程分為 6 周,以視頻的形式展開,我們開始 計算機系統(tǒng)概覽。

終于能看到國人講的操作系統(tǒng)了?。?!
右邊還可以隨時做筆記進行查看,課程還支持 下載 功能,非常不錯!

好了我們該退出來了,一會兒又忍不住聽課了!
nptel
仿佛見到了一個不得了的網站,這個網站的名字就隱隱的感覺有點牛逼。我們先看牛逼在哪,然后再看為什么牛逼

「你能感覺出來牛逼了嗎」?
這每一個目錄都 TM 是一本書啊,雖然頁數(shù)不多,但這確確實實是寶貝啊。
從操作系統(tǒng)概述到文件系統(tǒng)、進程管理、文件管理、I/O 管理等等等等。這還不是最牛逼的,最牛逼的是右邊能免費 下載,你說氣人不氣人

每一章節(jié)都支持下載 PDF 版本。
我們帶著好奇心,點開了 About Us。
然后就看到了下面這段話

也就是說,這是一個 印度的國家增強型學習計劃,也就是說,印度的各大名校聯(lián)合推出的免費學習計劃,這也能理解為什么印度人在電氣、編程、通信方面能夠越來越牛逼了。

這個網站你一定要看,我認為可以和黑皮書系列平起平坐了。
codescracker
codescracker 又是一個牛逼的網站,看完這個網站,我才覺得低調才是最牛逼的炫耀。。。

分類都非常全,解釋的也很到位,但是 codescracker 并不只是一個 os 網站,它是一門編程語言的學習一站式平臺,只不過網站比較簡潔

可以看到有各種各樣的教程,下面還是有測試類的,基本上企業(yè)用的語言都涵蓋到了。
你必須要珍藏的一個網站。
sciencedirect
sciencedirect 這個網站真是太牛逼了。百度對 sciencedirect 的解釋

不過 sciencedirect 大部分的 PDF 下載是需要收費的,感興趣的小伙伴們可以購買
homepage
Homepage 是做什么的,一看主頁就明白了

這是一個計算機科學和統(tǒng)計學的網站,然后我們點擊 search 搜索 os 直接跳轉到 os 的網站

然后就呵呵呵呵了,這個網站比較奇葩,它沒有后退和前進的按鈕,那怎么訪問?

我是直接通過 url 訪問的,主頁就是 https://homepage.cs.uri.edu/faculty/wolfe/book/Readings/Reading01.htm
但是網站太硬核了,很好的一個學習資料哦。
computer.howstuffworks.com
computer.howstuffworks.com 就是一個計算機網站,它涵蓋軟件和硬件的方方面面。

Computer 知識包括 「計算機硬件、網絡、計算機軟件、計算機秘密等等」
都是一些講的非常好的文章,可以說是計算機的百科全書了。
老樣子我們點開 COMPUTER OPERATING SYSTEMS 專題,可以看到都是一些非常好的文章

加入收藏夾!
tldp.org
這個網站又是一個學習操作系統(tǒng)非常牛逼的網站,我都不知道今晚上說了多少次了,哈哈哈哈。
來看看主頁是啥樣的

這一看就是一個牛逼的網站,不要問我為什么,OS 的頁面是這樣的

沒有任何點綴和裝飾,「成年人的生活就這么樸實無華」。
bilibili
說到教程,怎么能沒有我大 B 站?
各大視頻廠家坐在一起談論誰最牛逼,youtube 說,bilibili 你站起來,bilibili 很不情愿的說,"為什么"?"你站起來",youtube 說到,bilibili 很不情愿的站起來了,youbute 隨后說:「我不是針對誰,各位在座的都是垃圾!」

提出勘誤
最后,提出幾個我個人和讀者發(fā)現(xiàn)的勘誤。人非圣賢孰能無過,但是有錯誤還是要指出來的,以免大家碰到相同的問題無厘頭,既浪費時間又沒有效果,不去看英文原版的話很難發(fā)現(xiàn)問題。




?注:如果你在學習過程中也發(fā)現(xiàn)了勘誤,歡迎添加我的微信 lx252279279,我可以幫助你反饋。
?
最后
—?【 THE END 】— 本公眾號全部博文已整理成一個目錄,請在公眾號里回復「m」獲??! 3T技術資源大放送!包括但不限于:Java、C/C++,Linux,Python,大數(shù)據(jù),人工智能等等。在公眾號內回復「1024」,即可免費獲?。?!
