學習編程,操做系統是你必需要掌握的基礎知識,那麼操做系統究竟是什麼呢?c++
這還用說麼,操做系統不就是Windows、Linux、Mac、IOS、Android、IOS這類咱們每天都在用的東西麼?面試
此話不假,可是操做系統做爲計算機科學裏的一門基礎學科,確定不能這麼接地氣對不對,總的來點高大上的概念,震懾一下大家吧。算法
根據百度百科的介紹,操做系統是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。操做系統須要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入設備與輸出設備、操做網絡與管理文件系統等基本事務。操做系統也提供一個讓用戶與系統交互的操做界面。編程
這個介紹足夠高大上了吧,那麼到底啥是操做系統呢,簡單來講,操做系統就是管理計算機硬件和軟件資源的一種軟件,計算機裏的硬盤、鼠標鍵盤、顯示器等設備,都要由它來管理,你打開遊戲、打開瀏覽器或者是看電影,也都要經過操做系統來執行。瀏覽器
沒有了操做系統,電腦就失去了靈魂,只是一堆硬件而已。緩存
瞭解了操做系統的基本概念以後,接下來咱們再來看看,爲何咱們要學習操做系統呢?網絡
首先,固然是由於面試要考啦。多線程
其次,不管你學習什麼編程語言,和都避免不了和操做系統打交道,好比你學習Java,用到多線程技術,實際上操做系統纔是負責管理進程和線程的,因此Java裏的線程經常要和操做系統的線程或者進程一一對應。併發
此外,你會學習到內存分配的知識,好比c++裏能夠直接分配一段內存,此時其實是調用操做系統提供的API進行內存分配。編程語言
操做系統不只負責管理進程和線程的調度、內存的分配和管理,以及設備和IO的處理,還要負責管理文件系統和網絡。
最重要的是,操做系統要負責把代碼從硬盤加載到內存,再告訴cpu去讀取內存代碼,這是一切計算機運行的基礎。
若是不懂操做系統,你在將來學習編程語言的高級特效,涉及到線程進程調度,內存分配,或者是學習Linux相關的知識時,都會一頭霧水,因此,只有學會了操做系統,我麼纔可以更好地學習其餘語言和技術。
今天咱們就來推薦一份關於操做系統的優質書單!請查收!
操做系統書單
深刻理解計算機系統
深刻理解計算機系統(第2版) 這本書的全名是:Computer Systems:A Programmer’s Perspective,因此它又被稱爲 CSAPP。若是想打下紮實的計算機基礎又不想把操做系統計算機結構編譯原理這些書通通讀一遍,閱讀深刻理解計算機系統是最有效率的方式。
Randal E. Bryant,1981年於麻省理工學院得到計算機博士學位,1984年至今一直任教於卡內基-梅隆大學。
David R. O’Hallaron卡內基梅隆大學電子和計算機工程系教授。
操做系統導論
這是一本關於現代操做系統的書。全書圍繞虛擬化、併發和持久性這3個主要概念展開,介紹了全部現代系統的主要組件(包括調度、虛擬內存管理、磁盤和I/O子系統、文件系統 )。
本書共50章,分爲3個部分,分別講述虛擬化、併發和持久性的相關內容。本書大部分章節均先提出特定的問題,而後經過書中介紹的技術、算法和思想來解決這些問題。筆者以對話形式引入所介紹的主題概念,行文詼諧幽默卻又鞭辟入裏,力求幫助讀者理解操做系統中虛擬化、併發和持久性的原理。
本書內容全面,並給出了真實可運行的代碼(而非僞代碼),還提供了相應的練習,適合高等院校相關專業教師教學和高校學生自學。
做者簡介
雷姆茲·H.阿帕希杜塞爾(Remzi H.Arpaci-Dusseau)和安德莉亞·C.阿帕希杜塞爾
(Andrea C.Arpaci-Dusseau)夫婦是美國威斯康星大學計算機科學教授。二人都從事計算機操做系統方面的教學和研究。
30天自制操做系統
《30天自制操做系統》是一本兼具趣味性、實用性與學習性的操做系統圖書。做者從計算機的構造、彙編語言、C語言開始解說,讓讀者在實踐中掌握算法。在這本書的指導下,從零編寫全部代碼,30天后就能夠製做出一個具備窗口系統的32位多任務操做系。
《30天自制操做系統》適合操做系統愛好者和程序設計人員閱讀。
做者簡介
川合秀實(Hidemi Kawai),生於1975年,是一位以「輕量化」編程思想見長的「非主流」開發者。2000年因自行開發的OSASK項目而名聲大噪。OSASK是一個開源的32位微型操做系統,它並不是以Linux等內核爲基礎,而是徹底從零開始開發,在一張軟盤的容量下實現了GUI、多任務、多語言等高級特性,啓動時間只需1秒。本書的內容能夠當作是做者以OSASK爲藍本,教會讀者從零開始開發一個操做系統,同時可讓初學者在編寫操做系統的過程當中,瞭解操做系統背後更多的知識。