學習程式設計,作業系統是你必須要掌握的基礎知識,那麼作業系統到底是什麼呢?
這還用說麼,作業系統不就是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為藍本,教會讀者從零開始開發一個作業系統,同時可以讓初學者在編寫作業系統的過程中,了解作業系統背後更多的知識。
更多優質書單推薦!
搞定JVM基本原理和面試題,看看這幾本書妥妥夠了! 還搞不定Java多線程和并發程式設計面試題?你可能需要這一份書單! 這份Java Web必讀書單,值得所有Java工程師一看!