❶ 寫一個操作系統內核有多難大概的內容,步驟是什麼
項目概述和開發環境配置
計算機啟動過程、GRUB 以及 multiboot 標准
裸機上運行的 Hello OS Kernel
字元模式下的顯卡驅動
相關庫函數和調試列印函數
添加全局段描述符表
添加中斷描述符表
完成中斷請求和定時器中斷
物理內存管理的實現
虛擬內存管理的實現
內核堆管理的實現
內核線程的創建與切換
接下來如何繼續學習
------------------------------------------
這個東西很難被稱為「內核」,甚至說它是「玩具內核」都是繆贊了。這只是一個看起來能運行的原理示範性質的小程序。不過不可否認,按照文檔來,你可以寫出一個看起來挺好玩的東西並學到一些基礎知識。
雖然一個真正的內核很難很復雜,但是一個簡單的Demo並不是遙不可及。即使有興趣,學習的過程中也需要樂趣和不斷獲得的成就感,不是嗎?
網路搜索「系統城」會有更多更新的電腦系統下載、電腦教程為您解決電腦相關問題。
❷ 如何製作一個基於linux-2.6.19內核的小型Linux操作系統
內核,是一個操作系統的核心。它負責管理系統的進程、內存、設備驅動程序、文件和網路系統,決定著系統的性能和穩定性。Linux作為一個自由軟體, 在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了舊內核的bug,並增加了許多新的特性
❸ 操作系統的內核技術是什麼
學院北京101407)
(版權歸原作者所有)
摘要
文章介紹了作者在過擊5年中在微內核技術上所做的工作.由於集成電路、計算機網路、分布式處理、多機並行處理、容錯等技術的迅速發展,面向單處理機,採用內核不可搶占技術的Unix操作系統已經很難適應硬體技術的發展.為了適應以上技術的發展,Unix操作系統的內核越做越大,越做越復雜.完全喪失了其初始設計目標:系統短小精悍,容易理解.卡內基梅隆大學在美國國防部、國家科學基金的資助下,於1986年推出了一個基於微內核結構的操作系統Math.口:隨後.斯坦福大學等研究機構紛紛發表了他們在這個領域所做的工作, 各個大公司紛紛推出了基於微內核結構的操作系統、D 微內核技術已成為新一代操作系統體系結構的研究熱點.
基於微內核結構的操作系統和傳統操作系統相}匕,具有以下特點:① 內核精巧.通常內核只由任務管理、虛存管理和進程間通信3個部分組成.傳統操作系統內核中的許多部分都被移出內核.採取伺服器方式實現;② 面向多處理機和分布式系統.基於微內核的操作系統,在內核中引入了多處理機調度和管理機制,並引入了細粒度並發機制——
線程,使得多個處理機可以在同一個任務中並行地執行;③ 基於客戶/伺服器體系結構.在微內核結構的操作系統中,任務間通信機制—— 消息機制是系統的基礎,操作系統的各種功能都以伺服器方式實現,向用戶提供服務.用戶對伺服器的請求是以消息傳遞的方式傳給伺服器的.
「八五」期間,耪們在國家「八五攻關項目的支持下,對操作系統微內核技術進行了探入研究,在微內核系統調度技術、存儲管理技術、計時模型、微內核系統擴展技術及微內核操作系統原型系統構造方面取得了一些研究成果.本文將介紹這些研究成果.
正文
1 微內核系統調度技術
與傳統的操作系統內核相比,微內核調度系統中最突出的特徵是增加了處理機和處理機集及線程的管理,並且向用戶提供了靈活的手段來控翩自己的程序在處理機上的運行.這{羊,微內核系統就能很好地支持多處理機體系結構.同時,線程為用戶提供了細粒度的並行處理機制,使得同一個用戶任務中的不同線程可以同時在多個處理機上運行.
與進程相比,線程中所帶的資源很少,因此,創建線程和撤消線程的開銷就比進程小.線程也稱為「輕進程.在系統調度中,線程的切換開銷也比進程步,但是不同任務中的線程切換會引起任務的切換,在這種情況下,線程和進程的調度開銷就變成一樣了.為了優化系統效率,減步由於線程切換而弓I起的任務切換,在調度演算法中加入了以下代碼:
IF (所選中的線程和當前運行的城程屬於同一十任務)
THEN 不做任務切換}
ELSE進行任務切換操作}
顯然,這種方法在某種情況下會對系統性能有所幫助,但是這種方法在很大程度上屬於一種「被動的,或者說是一種「碰運氣」的方法.另外,單純以線程為主的調度演算法對用戶任務有失公平性,以線程為主的調度演算法是完全參照傳統操作系統中的調度演算法設計而成的.當線程投入運行時,系統為它分配周定大小的時間片,系統中線程按時間片輪轉.這樣,就產生了公平性問題:如果一個任務中有兩個線程,那麼,從理論上講,它將比只用一個線程實現的任務多獲得近1倍的處理機時間.在傳統的進程調度系統中,一個用戶可以通過創建多個進程來獲得更多的處理機調度機會,但是,它是建立在增加了創建進程和進程間通訊的系統開銷代價的基礎上的相比之下,創建線程的開銷非常小,同一任務間的線程之閉通訊開銷也很小為了解決上述問題,我們提出並實現了一種將傳統的任務和新的線程調度機翩相結合的方法:以任務為單位分配時間片(這樣可以保證調度的公平性),在線程調度時,當一個線程不是由於任務時間片用完的原因而放棄處理機時,只要系統中沒有高優先順序線程,就從本任務中選取線程,從而使得由線程切換而引起的任務切換操作開銷達到最小.
從目前的發展來看,用戶任務的並行粒度越來越小,即用戶任務中的線程越來越多,而每個線程所執行的操作會越來越步.因此,使用線程+任務的方法可以有效地減少單純的以線程為主的系統調度所引起的系統開銷.
2 微內核虛擬存儲管理技術
微內核虛擬存儲管理系統弓『入了存儲對象(Memory Object)的概念,將物理內存看成外部存儲對象的(如磁碟)高速緩存(Cache),實現了虛擬存儲器寫時拷貝(Copy onWrite)技術,引入了lazy evaluation技術.定義了虛擬存儲器和硬體存儲管理機制的介面(Pmap),實現了與機器無關的虛擬存儲系統.
虛擬存儲器寫時拷貝演算法是微內核虛擬存儲管理系統的核心演算法.它的弓f入使得虛擬存儲器管理的效率大大提高了一步.但是,它的實現依賴於硬體存儲管理機制的頁面保護機制,對於一個具有寫時拷貝共享屬性的存儲區,其頁面保護被設置成防寫.多個用戶可以共享的方式對它進行讀操作,但是,當用戶試圖對這塊區域進行寫操作時,將產生防寫故障,頁面故障管理程序將為用戶進程復制物理頁面.從而達到寫時拷貝的目的.
在I386體系結構下,只有用戶態頁面允許防寫,在其他機器狀態下,硬體存取機制將繞過頁面保護機翩,直接對頁面進行寫操作.在這種狀態下,寫時拷貝演算法將失效.而在微內核體系結構中,可能有各種狀態下的伺服器,如在內核態下運行的伺服器.為了解決這個問題。我們引入了寫時拷貝和訪問時拷貝(Copy oil Reference)相結合的演算法.
即在用戶態上使用寫時拷貝演算法,在其他狀態下使用訪問時拷貝演算法來替換寫時拷貝演算法,以解決寫時拷周演算法失效的問題.訪問時拷貝演算法的實現依賴於頁面保護機制的映頁機制.這樣,在其他狀態下,在設置頁面保護時將防寫改成映頁即可.新的方法在效率上比寫時拷貝演算法低,但是比完全拷貝的方法高出許多,特別是與lazy evaluation技術相配合時
效率會更高.由於微內核提供的寫時拷貝演算法是對用戶透明的,即對於用戶編寫的任何狀態下的伺服器都將使用寫時拷貝演算法.因此,在I386體系結構下,在非用戶態上運行的用戶伺服器有可能出錯,新的演算法解決了這個問題.
3 微內核計時模型
在傳統操作系統中,為統計出每個進程的處理機時間使用量的單元.系統計時一般是放在處理機時鍾中斷服務程序中.系統
IF (當前盎程處於用戶態)
增加當前進程的用戶奮處理機時間使用量
在每個進程結構中都沒有統計進程使用處理機時間
般採用如下代碼段來進行用戶進程的時間統計.
ELSE
增加當前進程的系統態處理機時聞使用量
由於在傳統的操作系統中,操作系統提供的服務完全由操作系統內核來完成。用戶通過系統調用進入內核來取得服務.因此,採用上述方法能比較准確地統計出用戶所用的處理機時間.但是,這種計時方法是一種比較粗糙的計時方法.每次時鍾中斷時,它就將一個固定的時間片(時鍾中斷周期)加入披中斷的進程中,而不管該進程是否完全使用了這些處理機對向.由於這種方法實現起來非常簡單,系統開銷很小,幾乎所有的操作系繞都採用了這種方法.在新的操作系統中引入了細粒度的並行執行部件—— 線程。對於線程的計時也採用了和進程相同的方法.為了取得精確的處理機時同統計精度.一些新型操作系統弓『入了新的計時機制.如MACH 3.0中引^了基於時間戳的精確計時機制.在微內核體系結構下.傳統的操作系統功能是通過伺服器的方式來實現的.伺服器和用戶任務一樣,也作為一個進程運行.當用戶進程調用操作系統服務時,微內核通過消息將系統服務的參數傳遞給操作系統伺服器,由操作系統伺服器來完成用戶請求,並將結果通過消息傳遞給用戶進程.這樣,如果採用傳統的方法來進行進程的處理機時問統十。就會將操作系統為用戶提供服務所用的處理機時間記入伺服器中.而不是用戶進程中.
為了解決這個問題,我們引^了委託線程的概念,建立了新的用戶進程計時模型.在客戶/伺服器模型中,用戶通過消息請求伺服器的服務,伺服器接收用戶的消息完成用戶的請求,再通過消息將結果傳給用戶.在這種體系結構下,可看成用戶將自己的一部分工作委託給伺服器完成,伺服器是在為委託線程服務.當用戶線程向伺服器發出請求時,將用戶線程標識傳遞給伺服器,當伺服器中的某個線程處理這個請求時,將用戶線程標識記^伺服器線程結構中的委託線程域中.在系統時鍾中斷服務程序中增加為委託線程計時的代碼。就可將操作系統伺服器為用戶進程限務的時同計算到用戶進程中.
IF(當前線程結構中有委託線程)
IF(當前線程赴於用戶態)
增加委託線程的用戶態赴理機時間使用量
ELSE
增加委託線程的系統態處理機時間使用量
在多伺服器體系結構下,一個用戶請求往往需要多個伺服器的協同服務,如一個文件讀操作,需要文件伺服器的服務,如果文件伺服器發現數據存放在磁碟中,它就需要請求設備伺服器的眼務,設備伺服器實際上是在為用戶線程服務.因此,在多伺服器情況下,當一個伺服器向另一個伺服器發出請求時,必須將自己的委託線程標識號傳遞給目標伺服器.這樣,操作系統為一個線程提供所有服務所使用的處理機時間都將計算到用戶線程中擊.為了完成以上功能,必須對微內核的消息傳遞機制進行擴充,使用戶在請求服務時能將線程的標識傳遞給伺服器,伺服器在接收消息時能接收到委託線程標識.所有這些操作必須對用戶透明.微內核的消息傳遞機制由消息發送和消息接收兩部分組成.通過在這兩個原語中加入以下邏輯來實現委託線程標識的發送和接收.
SEND :
IF(當前線程結構中有委託線程標識)
將委託線程標識傳遞出去
ELSE
將當前線程的標識傳遞出擊
RECEIVE:
IF(當前線程是伺服器)
將委託線程號放凡伺服器線程結構
在發送原語中,可將委託線程標識從一個伺服器傳遞到另一個伺服器.在接收邏輯中,通過增加伺服器標識的判斷可以避免非伺服器線程之間的偶發通訊而導致的用戶線程的計時錯誤.
4 結論
微內核技術是當今操作系統發展的最新成果.在體系結構方面,它採用了面向對象技術來描述操作系統內核對象,提出並實現了基於客戶伺服器體系結構的操作系統.在演算法方面,提出了許多高教新穎的演算法,如線程及處理機調度演算法、寫時拷貝演算法、與硬體無關的存儲管理演算法以及精確計時演算法等等.在國產微內核操作系統COSIX2.0的研製過程中,通過對國外微內核技術的消化和研究,提出並實現了一些新的演算法和模型,改進了系統的性能,提高了系統的可靠性,做到了有所繼承,有所刨新目前,我們正在進行基於微內核的JAVA虛擬機,支持服務質量(Quality of Services)的調度系統微內核熱重啟(Hot Restart)技術的研究.以上內容是我們一部分研究工作的總結.
❹ 寫一個操作系統內核有多難大概的內容,步驟是什麼
「一個好一點兒的計算機碩士畢業的學生。寫一個操作系統的內核絕對是應該辦到而且肯定可以辦到的事兒。」 ------這句話我們可以理解為」一個好的計算機碩士掌握的理論知識足夠他搭建起一個簡單的操作系統框架「。x0dx0ax0dx0a我上操作系統課(大二)的第一天就問我的老師,學完了這門課可以自己實現一個操作系統了嗎?老師說:」你可以基本掌握操作系統中要處理的主要問題,但是即使實現最簡單的五臟俱全的操作系統還需要掌握很多很多東西,而且前提是你已經有很不錯的代碼能力。「x0dx0ax0dx0a回到題目上來,我們要實現一個簡單的操作系統,最先需要解決的是哪些問題?這個問題我相信翻開任何一本操作系統書都可以得到答案,一般都是操作系統書的前五,六章內容(第一章基本是操作系統概念及發展歷史)。x0dx0a包括:x0dx0ax0dx0a進程管理x0dx0a存儲管理x0dx0a文件系統x0dx0a輸入/輸出x0dx0a這些大部分是討論理論類的書,比如我們上課用的書是西電湯子瀛老師的《計算機操作系統》,後來自己為了深入學習買了Andrew S. Tanenbaum的《Modern Operating Systems》。x0dx0ax0dx0a如果想寫個操作系統,除了理論知識外,動手之前最好先看看操作系統源代碼,Linux的代碼都是開源的,可以先學習學習。不過對於我們這種初學者千萬不要看最新的Linux內核代碼,因為那是很多人的傑作,可能一輩子都看不完。最好先看看國內同濟大學趙炯基於0.11的《Linux完全注釋》,即使只看懂30%也至會讓自己懂很多之前不知道的東西。x0dx0ax0dx0a理論類的書很少有提到Bootload問題的,就是加電之後從哪裡開始執行的部分。僅僅是這個步驟也需要花不少時間去了解CPU知識,匯編語言知識等,相當不容易。不話說回來,這部分如果能處理好之後會發現組成原理,匯編語言,微機原理的知識被自己運用到了,成就感巨大。這部分內容,可以參看MIT的課程6.828 Operating System Engineering的課程,Google一下就能搜到不少大牛關於這門課的博客。如果英語不太好我記得華中科技大學有一個叫32位操作系統實踐的課,資料都放到網上了,看起來很不錯。x0dx0ax0dx0a過了這一關,用《深入理解計算機系統》加上《現代操作系統》看一下虛擬存儲器的內容,這兩本書這部分說得都很棒。虛擬存儲器的概念貫穿所有,如果能弄懂,對很多方面都有很大的幫助,不僅僅是操作系統這塊。有了虛擬存儲器概念之後對於鏈接,載入等知識理解就會深刻許多。 不過,這部分內容也需要對硬體部分有所了解,又是一坑。x0dx0ax0dx0a之後回到進程上來之後,終於可以把工作重心從硬體部分轉移過來了。但是我們又將面對進程創建,進程調度,進程通信三大問題,既然是簡單實現,就先不考慮線程的事。演算法書中會給很多,不過這些演算法都是有一定的局限性,比如調度演算法,對應的調度演算法優劣差異很大,至於如何抉擇就看個人需求。不過話說回來,操作系統里的」演算法「和ACM里的演算法在難度上差很多,還是比較容易實現的。x0dx0ax0dx0a內容太多了,就不完全展開了,後面就看自己「耐力」了,寫操作系統是需要堅持很長實踐+大量知識積累的。有些問題還涉及到哲學的觀點,這里推薦上海交大鄒恆明教授的《操作系統之哲學原理》。除了理論方面的書,現在市面上也有直接教如何實現一個操作系統的,比如《Orange'S:一個操作系統的實現》和《30天自製操作系統》(僅有的幾本「XX天XX」而不是爛書的書),起步階段跟著這些書來還是很不錯的。x0dx0ax0dx0a總之,實現最最基本的功能也許可以做到。實現功能強大,魯棒性強的操作系統極難。
❺ 什麼是電腦系統 內核
內核是計算機的核心,只有一些基本的功能和驅動,向一個計算機該是框架模塊結構的,方便擴展,核心可以為其他接入的硬體提供驅動,給某種設備供電,劉向發動機提供電源為核心計算機供電,核心計算機帶動雷達,預警設備等正常工作。
❻ 開發一個操作系統內核真的很難嗎
1、目前的操作系統市場我認為更像「生態圈」,無論硬體或是軟體都圍著Windows轉,因為Windows佔有大部分市場,硬體生產商和軟體開發商都要賺錢,沒有多大市場的東西他們根本就是懶得去做。
2、計算機軟體並不是只有什麼QQ和MSN這流的,還有許許多多的行業軟體,中間件等等,所有這些大部分在Windows上都已經運行得很好了,沒有誰會去把成熟的應用完全推翻然後去開發一個根本沒有市場的東西。
3、linux嚴格來說只是一個內核,什麼ubuntu、Fedora之類的只是一個發行版本,就是把一些軟體和內核包裝起來做成的一個發行版本。雨林木風之流的更不要提了,算不上是發行版本,只不過拿ubuntu改了個主題罷了。安卓也是基於linux的,只不過封裝了自己的api和gui而已。蘋果macOS是基於BSD的,linux和BSD都是類unix系統。
4、看看大部分行業軟體都是人家國外人開發的,資料庫之類的也是外國人開發的,你就懂了。中國並不能孤立在世界之外。按你的說法,我們自己也搞一套,或許真的可以,但……所有你想要實現的軟體你得都得自己開發,網路上的各種通訊協議,各種文件系統……還是配套的硬體……想想吧。
5、我想到了一個比較詞比較適合你的想法,哪就是「閉門造車」。
❼ 如何自己做以UNIX為內核的操作系統
可以參考lfs,這個基本上就是給了你一個純內核,在此基礎上搭建出一個定製化極高的linux操作系統,這需要對linux有個比較深的理解才能做,如果你還沒從源碼包編譯過軟體並安裝使用,建議先不要這樣。。。如果想挑戰極限,那麼關鍵在於毅力,一般人弄個3-5天一看啥也沒整明白,系統也根本裝不上就煩了,最後不了了之,但是如果你有信心堅持3-4個月的弄lfs,那麼你肯定沒問題的。YLMFOS具體怎麼弄得我不太清楚,但是通過修改ubuntu的部分代碼就可以達到那樣的效果。