天天看點

作業系統原理_作業系統原了解析與ucore(開篇介紹)

      今天開始,我将為大家在公衆号持續更新一個新的專題 《作業系統原了解析與ucore》 ,而這個專題的開啟也标志着我們的公衆号也将要進入正軌,做真正的技術分享。我知道這将會是一條艱難的路,但是我會盡我所能,給大家分享能讓大家真正學到東西、有所收獲的内容。我的小夥伴也會分享一些其他領域的内容,同時也歡迎大家分享自己的學習心得和學習建議。      

作業系統原理_作業系統原了解析與ucore(開篇介紹)

       決定更新這個專題有以下幾個原因:        1、我本人在研究所學生階段的研究方向為作業系統方向,是以在作業系統基本原理和實作的學習上必須不遺餘力,打好根基。盡管之前我已經學習過作業系統以及ucore但是畢竟是為了應付考試,舍棄了其中相當一部分的内容。而現在,os成為了我的方向,我便必須要直面挑戰了。弄懂ucore的全部核心代碼并且能夠将其深入淺出的解析出來對我來說必然是一個重大的挑戰,但是如果我可以做到,那麼我必然能夠獲益匪淺。       2、我的公衆号目前的關注主體主要為考研er,而對各位來說,無論是迎戰408還是912亦或者是其他cs高校的專業課,作業系統都是必須要邁過去的坎。與實實在在的“計算機組成原理”、完全存在于抽象中的”資料結構”不同,作業系統是抽象與具體的結合産物,是以,作業系統本身的存在就顯得更加飄忽不定、難以了解,很多人對于作業系統的認識都是一種很模糊的感覺,甚至隻是對幾個諸如“銀行家算法”、“PV操作”等孤立知識點的強行記憶,卻缺乏一種整體化的感覺,更遑論實作。在越來越飄忽不定的計算機命題趨勢下,這種淺層次的孤立了解顯然難以在以後的考試中取得優秀的成績,是以,實實在在的了解作業系統究竟是什麼,如何具體工作就至關重要。而對于計算機科學來說,代碼是最精确、最實實在在的東西,當你真正能夠了解代碼的時候,你就準确把握了問題本身。     3、選擇ucore是因為ucore是我比較熟悉的東西,主體程式設計語言也是大家都比較熟悉的C語言。如果大家能夠在我的解析下深刻了解了ucore本身,那麼便可以發揮自己的能力,對ucore進行擴充,而這就可以解決考研黨們普遍存在的沒有項目的窘境。要知道,作業系統項目在當今環境下是具有極高的含金量的,本人也正是憑借對ucore的擴充在清華計算機系學碩的面試中取得了一個不錯的分數最終得以錄取。     4、CSer樂園不僅僅是cs考研黨的樂園,更應該是所有喜愛計算機這個領域的同道們的樂園。是以我也希望通過這個專題,結識更多對作業系統有興趣的朋友,一起互相借鑒學習,揚長避短,共同進步!     

作業系統原理_作業系統原了解析與ucore(開篇介紹)

      下面我就談談如果你要學習作業系統、研究作業系統必須厘清的最根本的東西:        第一,是要厘清視界與實際内容的差別。        何為視界,何為實際内容?先舉一個生活中的例子吧。比方說你是一個企業的總公司的老闆,你的電腦上存儲着企業所有員工的名單,你的一切調配都可以通過在電腦上修改表格來實作,表格對你來說就是視界,而由于你的級别足夠高,你對視界的修改也會對應到現實中的具體操作,是以你看到的視界實際上是現實内容的一種對應。       同樣的道理,作業系統作為整個計算機系統的“大老闆” ,它可以觀測到計算機上所有程序、記憶體、檔案等的視界,例如程序控制塊、檔案控制塊等,作業系統從視界中擷取資訊,然後指令 硬體進行實際的操作,最後再根據操作的内容修改視界,這就是作業系統管理計算機的邏輯。 是以os源碼充斥着資料結構的修改+内聯彙編,便是這種視界 與實際 操作交替的邏輯 。       第二,是要厘清哪些工作屬于軟體功能,哪些工作屬于硬體功能。       我們學習的作業系統,從本質上來說還是一種軟體,是以硬體系統對我們來說更多的是一種黑盒子的功能,我們必須對這一點有很清晰的認識。例如中斷的實作,系統根據 IDTR(一個特定寄存器)中存儲的位址尋找到IDT(中斷描述符表)的初始位址,再根據觸發中斷的類型(例如時鐘中斷)給出特定的中斷号(每一種中斷類型對應的中斷号是硬體決定的而不是軟體),利用該中斷号便可以在IDT中找到對應的中斷描述符進而進行中斷服務例程了。在這個過程中,IDT如何填寫,中斷服務例程如何實作,則是我們需要編寫的軟體功能。厘清軟體和硬體,是正确認識作業系統的一個根本要求。     

作業系統原理_作業系統原了解析與ucore(開篇介紹)

       作業系統中還有很多我們需要去掌握,去認識的東西,現在的我甚至我的老師也不敢說全盤掌握。但是我希望能夠在學習與分享的過程當中,與大家一起去享受剖析知識、深入本質的樂趣,這無論對于我還是對于大家來說可能都是一個不小的挑戰,但是正是因為有挑戰,我們的努力才更有意義,不是嗎?

繼續閱讀