很多讀者問我如何學習操作系統?推薦幾本操作系統可以看的書?操作系統都需要學什麼?有哪些視頻可以看嗎?下面我就針對性的對這些問題做一下我自己的闡述。

學習操作系統不是爲了讓你設計一個操作系統,而是爲了讓你更好的瞭解其運行原理。

如果你覺得操作系統有些難度的話,強烈推薦看一下我的這本 PDF。

程序員必知核心基礎知識

這個 PDF 能讓你對計算機的硬件和運行原理有基本的入門。

這本 PDF 可以說是對任何小白都適用了,如果你能看完,就說明你有一定的基礎了,可以正式入門操作系統了。

我學習操作系統是根據機械工業出版社的《現代操作系統》第四版學習的。我是根據中文版和英文版結合來看的,看完你可能會很懵逼,但是沒關係,就一句話很重要。

花 200 - 300 小時入門一門課程,然後在你職業生涯中,不時溫習其中的精髓

操作系統學習之旅

下面是操作系統的大綱

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

第一章 操作系統概述

在這一章節,你需要知道

  • 什麼是操作系統?什麼是計算機系統?操作系統有什麼用?操作系統滿足了什麼需求?什麼是內核態和用戶態?
  • 計算機都有哪些硬件?它們各自的作用是什麼?內存的層次模型是什麼?多線程和多核芯片的關係?爲什麼會出現高速緩存?磁盤的構造是什麼?I/O 的三種方式是什麼?中斷的處理過程?總線是什麼?
  • 都有哪些操作系統?
  • 操作系統都有哪幾類抽象?進程是什麼?什麼是地址空間?文件是什麼?什麼是 shell?
  • 系統調用是什麼?系統調用的分類
  • 操作系統的結構有哪些?單體系統、分層系統、微內核、客戶-服務器模式都是什麼意思?

你可以從下面我的文章中找到答案

寫給大忙人看的操作系統

第二章 進程和線程

在這一章節,你需要知道下面這些內容

  • 進程模型?進程創建的方式有幾種?進程的終止方式?Unix 和 Windows 體系結構一樣嗎?什麼是上下文切換?進程有哪幾種實現?
  • 並行和併發一樣嗎?
  • 線程和進程一樣嗎?有了進程爲什麼還要有線程?什麼是 POXIS 線程?線程實現有幾種方式?
  • 進程間通信有幾種方式?競態條件是什麼?臨界區是什麼?
  • 操作系統是如何調度的?進程有哪些行爲?調度算法有哪些?調度的分類?

你可以從我下面這篇文章中找到答案

寫給大忙人看的進程和線程

第三章 內存管理

在這一章,你需要知道下面這些知識點

  • 什麼是無存儲器抽象?
  • 什麼是有存儲器抽象?什麼是地址空間的概念?如何管理空閒內存空間?有哪些管理算法?
  • 頁面置換算法有哪些?頁面置換算法的優劣性對比?如何選擇?
  • 什麼是虛擬內存?爲什麼能運行比系統內存還多的程序?什麼是頁和頁表?內存如何加載數據?頁表的結構是什麼?如何優化/加速分頁過程?如果頁表特別大,該採取哪種方式進行優化?

你可以從我下面這篇文章中找到答案

操作系統內存管理

第四章 文件系統管理

在這一章,你需要知道下面這些知識點

  • 什麼是文件?文件是一種抽象嗎?文件的命名是怎樣的?文件的結構是什麼?文件有哪些類型?文件如何訪問?屬性是什麼?文件如何操作?
  • 什麼是一級語錄系統?路徑名是什麼?
  • 文件系統佈局是怎樣的?文件系統實現有哪幾種方式?inode 是什麼?
  • 文件系統的管理和優化是什麼?磁盤空間是如何管理的?文件備份是什麼?如何進行文件備份?
  • 如何優化文件系統性能?

你可以從我下面這篇文章中找到答案

簡直不要太硬了!一文帶你徹底理解文件系統

第五章 I/O 管理

在這一章,你需要知道下面這些知識點

  • I/O 設備都分爲哪幾類?各自的優缺點是什麼?什麼是內存映射I/O ,它的優缺點是什麼?什麼是 DMA? DMA 的工作原理?什麼是中斷?中斷有哪些分類,各自是什麼意思,如何解釋?
  • I/O 的軟件目標是什麼?有哪幾類 I/O 方式?
  • I/O 層次結構如何劃分?
  • 磁盤是如何工作的?磁盤的構造?磁盤調度算法有哪些?磁盤如何處理錯誤?
  • 什麼是時鐘?各自解釋一下時鐘硬件、軟件和定時器?

你可以從我下面這篇文章中找到答案

肝了很久!一文了解操作系統 I/O

第六章 死鎖詳解

  • 操作系統是如何定義資源的?什麼是可搶佔資源和不可搶佔資源?
  • 死鎖的模型,死鎖有哪幾種類型?
  • 什麼是鴕鳥算法?
  • 死鎖如何檢測?通過哪幾種方式恢復死鎖?
  • 如何避免死鎖?
  • 如何破壞死鎖?
  • 什麼是資源死鎖?除此之外還有哪些死鎖方式?

你可以從我下面這篇文章中找到答案

寫給大忙人看的死鎖詳解

操作系統概念和麪試題

如果你看完計算機必知的核心基礎知識後還是感覺有些喫力,不妨先看看我整理的操作系統核心概念

我寫了一份操作系統詞典送給你!

還有爲你準備的操作系統面試題

看完這篇操作系統,和麪試官扯皮就沒問題了

操作系統學習資料

開源項目

首先給大家推薦一個非常好的開源項目

自學計算機科學

你不僅僅可以找到操作系統相關的資源,你還可以找到其他計算機黑皮書資源

裏面有一句話非常提神

如果你是一個自學成才的工程師,或者從編程培訓班畢業,那麼你很有必要學習計算機科學。幸運的是,不必爲此花上數年光陰和不菲費用去攻讀一個學位:僅僅依靠自己,你就可以獲得世界一流水平的教育。

爲什麼有的人說學習計算機基礎沒有必要?現在看來簡直是天方夜譚

軟件工程師分爲兩種:一種充分理解了計算機科學,從而有能力應對充滿挑戰的創造性工作;另一種僅僅憑着對一些高級工具的熟悉而勉強應付。

這兩種人都自稱軟件工程師,都能在職業生涯早期掙到差不多的工資。然而,隨着時間流逝,第一種工程師不斷成長,所做的事情將會越來越有意義且更爲高薪,不論是有價值的商業工作、突破性的開源項目、技術上的領導力或者高質量的個人貢獻。

學習視頻

除此之外,我在 B 站上也給大家找來了一些學習視頻

機械工業黑皮書系列 B 站視頻

《現代操作系統》: https://www.bilibili.com/video/av9555596?from=search&seid=8107077283516919308

《算法導論》: https://www.bilibili.com/video/av48922404?from=search&seid=10653982037326460685

《深入理解計算機系統》: 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

《數據庫系統概念》: https://www.bilibili.com/video/BV1PJ411F78b?from=search&seid=2655021297331616552

操作系統書籍推薦

操作系統網站推薦

給大家推薦一些我在學習操作系統這門課的過程中,經常參考的網站

一般很少有人推薦操作系統的網站吧。。。。。。這幾個網站來源於我平常的學習總結,也有一些是來源於網上優秀的回答,希望這幾個網站能夠助力你對操作系統有更深的認識。

studytonight

studytonight 簡直太棒了!!! studytonight 會包括 operationg system ,但是並不是說 studytonight 就是一個單純的 OS 學習網站,它是一個基礎教程網,它的首頁是這樣的,不僅限於 os ,還會包括 Java、C、CSS、OS、Computer network 等

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

我們推薦的是操作系統,所以索性就點進去操作系統主頁好了,點進去的頁面就是這樣的

studytonight 是一個對初學者來說學習操作系統的一個很友好的網站。

課程藝術主要分爲三部分,由易到難分別是基礎篇、中等篇、提高篇,我們點進去基礎篇的第一篇

這一篇主要是對操作系統的介紹,操作系統的功能、操作系統任務等

通過簡單的描述和圖片來說明,讓人感覺清晰易懂,很有目的性的學習,而且這些主題也可以作爲面試題來考

你還真說對了,studytonight 還真的就有面試題

我們在 Test 頁簽下面會發現有很多面試題

我們選擇 Operating System 進去之後會發現有很多的測試

是一個一體化的學習平臺,適用於新手,我大致翻看了一下,裏面的東西比較基礎,受衆廣,是大家學習必備的一個網站。

udacity

udacity 是一個視頻學習網站,界面看起來很清爽。

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

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

我們還是以操作系統爲例,來看一下具體的課程

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

講師講完課程之後還有具體的練習環節,作爲學習鞏固,非常不錯。

udacity 的課程要比 studytonight 更深一些,操作系統這門課就分成了 22 堂課,每一堂課還有很多小節,真是一個非常好的網站。 我現在在寫文章,我巴不得不寫字了,馬上學習! 。 還是忍住了,那就寫完了馬上去看!!!

tutorialspoint

tutorialspoint 這個網站也是一個資源教程網,這個網站的搜索指數非常高,基本上搜任何問題都有 tutorialspoint 的解釋。

我們點進去 Library 之後發現,這就是教程寶庫啊,羅列的非常清楚

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

教程非常多,不僅限於編程,也包含 Excel 、SAP 等教程。

tutorialspoint 還有電子書教程,不過大部分也是收費的,應該是 tutorialspoint 自己製作的 PDF,不知道寫的怎麼樣,如果有興趣的小夥伴可以付費下載,到時候記得給我發一份哦,嘿嘿。

說了這麼多,我們還沒有看 tutorialspoint 操作系統的主頁呢

左邊是導航欄,右邊是具體的教程,這個樣式感覺有些老,不過分類倒是很明確的,裏面的內容要比 studytonight 差一些,也是一個入門非常好的教程網

classcentral

classcentral 這個網站有點強啊,裏面彙總了各大名校的教程

我們發現了一箇中文教程,一看是 南京大學 的教程,南京大學也是非常牛逼的一所學校,小編也有南大的基友在搞影視,其實我是一個被編程耽誤的導演,狗頭保命。

不扯皮了,來看看南大的課程

這麼多牛逼的課程發現了中文大學,也側面說明了我國大學在國際上的地位。 Overview 是 OS 的總體介紹。

我們註冊後點擊開始課程,就進入講課頁面

課程分爲 6 周,以視頻的形式展開,我們開始 計算機系統概覽

終於能看到國人講的操作系統了!!!

右邊還可以隨時做筆記進行查看,課程還支持 下載 功能,非常不錯!

好了我們該退出來了,一會兒又忍不住聽課了!

nptel

彷彿見到了一個不得了的網站,這個網站的名字就隱隱的感覺有點牛逼。我們先看牛逼在哪,然後再看爲什麼牛逼

你能感覺出來牛逼了嗎?

這每一個目錄都 TM 是一本書啊,雖然頁數不多,但這確確實實是寶貝啊。

從操作系統概述到文件系統、進程管理、文件管理、I/O 管理等等等等。這還不是最牛逼的,最牛逼的是右邊能免費 下載 ,你說氣人不氣人

每一章節都支持下載 PDF 版本。

我們帶着好奇心,點開了 About Us

然後就看到了下面這段話

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

這個網站你一定要看,我認爲可以和黑皮書系列平起平坐了。

codescracker

codescracker 又是一個牛逼的網站,看完這個網站,我才覺得低調纔是最牛逼的炫耀。。。

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

可以看到有各種各樣的教程,下面還是有測試類的,基本上企業用的語言都涵蓋到了。

你必須要珍藏的一個網站。

sciencedirect

sciencedirect 這個網站真是太牛逼了。百度對 sciencedirect 的解釋

不過 sciencedirect 大部分的 PDF 下載是需要收費的,感興趣的小夥伴們可以購買

homepage

Homepage 是做什麼的,一看主頁就明白了

這是一個計算機科學和統計學的網站,然後我們點擊 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

這個網站又是一個學習操作系統非常牛逼的網站,我都不知道今晚上說了多少次了,哈哈哈哈。

來看看主頁是啥樣的

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

沒有任何點綴和裝飾, 成年人的生活就這麼樸實無華

bilibili

說到教程,怎麼能沒有我大 B 站?

各大視頻廠家坐在一起談論誰最牛逼,youtube 說,bilibili 你站起來,bilibili 很不情願的說,"爲什麼"?"你站起來",youtube 說到,bilibili 很不情願的站起來了,youbute 隨後說: 我不是針對誰,各位在座的都是垃圾!

提出勘誤

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

注:如果你在學習過程中也發現了勘誤,歡迎添加我的微信 lx252279279,我可以幫助你反饋。

最後

最後在本篇文章最後給大家推薦一下我自己彙總的 操作系統 PDF,可以離線在看,一共是 306 頁,大概 50w 字,排版非常精美,也非常清晰,字是我自己一個一個手敲的,圖是一筆一筆畫的。

另外,昨天有一位高校老師也肯定了我的這本 PDF,也算是對我的肯定吧,沒想到能起到這麼大的社會效應。

大家可以關注一下我的公衆號 Java建設者 或者掃描下面的二維碼,回覆 os 即可獲取這本寶貴的 PDF。

相關文章