回覆列表
  • 1 # 山西新華電腦職業學校

    軟盤讀盤D3

    簡單的寫視訊記憶體-圖形顯示D4

    滑鼠,鍵盤驅動D6-D8

    記憶體管理(動態分割槽+相鄰回收)D9,10

    timer+FIFO長緩衝區(連結串列)+中斷號管理時間片D12-13

    解析度提高-圖形驅動D14

    多工處理(優先順序+等長時間片?)D15-D16

    控制檯:鍵盤IO,視窗滾動,控制檯命令 D17-19

    FAT: D19

    系統級API D20

    系統安全防護:容錯輸入,防非法記憶體訪問,支援異常【考慮用系統態/使用者態解決】 D21

    C程式例項 D22

    圖形處理 D23

    視窗切換,移動(包括最佳化),關閉,輸入定向,多視窗,D24-26檔案操作API D28*

    按內容分大概就是這樣:

    記憶體: D9,D10

    滑鼠,鍵盤驅動:D6-D8

    圖形處理相關: D4,D14,D23,D24-D26

    多工相關: D12-D13,D15-D16

    檔案管理: D19,D28

    系統庫: D20,D27

    具體功能:

    控制檯:D17-19

    系統安全:D21

    C程式例項:D23

    其他未收錄的大部分都是一些具體的細節最佳化

    目前讀到D19的樣子,記錄下一些很散的點:(改進用加粗)

    P115,關於系統態/應用態的設定

    P154 本OS用486彙編

    關於時間中斷號,對中斷號基值改為宏定義,可減少全域性變數

    直接往視訊記憶體寫內容 0xa0000

    http://community.osdev.info/?(AT)BIOS這個網站貌似已經沒有資訊了不能使用

    關於執行緒排程,原OS只有簡單的執行態,就緒態,目前對於硬體IO的部分還有阻塞態,用多級優先順序反饋佇列,但不存在末佇列為輪轉,並且,系統功能目前還沒有分成幾個執行緒去支援。

    至今為止很多模組還沒有獨立開來,日後可能會獨立出來【D16】

    P344“處於32位模式無法向BIOS查詢?”

    老師的相關回答:BIOS的中斷例程適用於16位的真實模式(就是以前的DOS,可直接訪問空間為1MB,不支援虛擬儲存),32位以後要支援虛擬儲存就必須採用保護模式,所以就不用BIOS的中斷例程了。之所以這麼長時間以來BIOS不改進,一是為了相容,二是windows自己提供保護模式下的中斷服務例程,且是可擴充套件可升級的,所以用不著BIOS提供。

    【要自己寫IO】

    小BUG:按下一次shift後,小字母無法輸入【真機正確,模擬器的問題】

    sprintf:將字串格式化以後存入s,然後再呼叫自己實現的寫視訊記憶體顯示的函式putfont_XX兩個函式配套使用。

    網上找到的滑鼠排列【比原來的好看點】:

    "*...............",

    "**..............",

    "*O*.............",

    "*OO*............",

    "*OOO*...........",

    "*OOOO*..........",

    "*OOOOO*.........",

    "*OOOOOO*........",

    "*OOOOOOO*.......",

    "*OOOO*****......",

    "*OO*O*..........",

    "*O*.*O*.........",

    "**..*O*.........",

    "*....*O*........",

    ".....*O*........",

    "......*.........";

    其實最終這個課程設計會變成什麼樣子,我個人猜測可能已經不是原來設想的在haribote這個系統的基礎上進行演算法新增和修改了,由於課程設計最核心的需要實現檔案管理,這就要實現IO驅動了,但是保護模式又不能用BIOS的真實模式提供中斷例程,目前解決方案有2:

    1. 自己寫IO驅動

    2. 不使用磁碟,把軟盤空閒區用來儲存系統內的檔案,雖然容量受限,但還是可以有模有樣的寫個FAT12檔案管理的,而且難度更低。

  • 2 # 小張在浙

    1、一套高水準的作業系統,就是一個社會的縮影,它要兼顧萬般需求、相容各類客戶,它的穩定性、多功能性、相容性、可擴充套件性這些看似矛盾的要求必須提現在一套軟體內,因此首先就要求研製者本身具備對社會永珍具備極高的理解力,要見多識廣,否則一個社會可能的需要什麼你都不清楚,又如何研發出一款可以滿足社會各類需求的軟體呢?不可能。

    但很多社會本身就不發達、文化單一,那麼這個社會的需求與見識就必定有限,這就意味著一套成功的作業系統,只能在一個開放多元、高度發達社會、各類文化豐富多彩的社會內才可能被研製出來,因為一套作業系統其實就是一個社會的縮影,沒有極為豐富的見識、沒有千奇百怪的需求,你如何做出一套可以相容這個社會99%的需求的產品?這就是常說的“你的見識決定了你的高度”。

    2、其次是競爭的壓力,即便是在一個發達的社會中,各類需求要素都被你掌握了,但如果沒有貌似殘酷的競爭,沒有巨大的壓力,一套成功的系統也不可能被研製出來。

    這就像戰爭一樣,沒有生與死的壓力,你個人的才華與潛能根本就不可能被髮揮出來。作業系統也是如此,如果你只是國家出面組織一幫人,關起門來埋頭研發,我敢說“十年也只是搞出一個四不像來”,因為根本就沒有在市場中被反覆的蹂躪、實證和PK過,不可能有好產品。只有在生與死的壓力下,才可能出好貨。

    換言之: 只有在一個純粹市場經濟的環境中才可能競爭出一個好的作業系統。

    3、我們知道,天才之火也要靠利益之油來維持,在軟體行業特別依靠對智慧財產權的尊重,必須依靠購買正版軟體,讓研發的公司有巨大的利益,願意持續投入,才能讓一套作業系統可以數十年的持續改進,維持高水準、高效能、高的相容性,在一個盜版橫生的市場上,是不可能誕生一套高階的作業系統的,因為研發人員早就餓死了。

  • 3 # 示範車

    研究一下老前輩是如何成功研發“兩彈一星”的,研究透了,沒有華人幹不成的事情。當然,首先是當官的必須無腐敗。

  • 4 # 大學生程式設計指南

    操作算是在軟體開發裡面功能非常齊全難度非常大的一個超級工程,目前國內掌握操縱系統技術的科技公司也是少的可憐,而且不完全是技術層面的東西了,還需要構建生態鏈,國內的阿里公司在這方面已經做過嘗試了,只能講不是很成功,主要開發出來了需要真的有人去使用,現在無論桌面的作業系統還是移動端的作業系統都有巨無霸存在,而且還是壟斷性質般的存在,現在華為手機因為安卓禁止使用服務導致國外的銷量下滑,現在華山一條路只能啟動一個自主的作業系統的研發,還在華為公司已經做了大量的準備,不至於這麼被動,但任重而道遠。

    回到主題從零開始開發一個作業系統,本身就不是一個人能做的事情。這個工程量巨大,但從學習的角度可以研究一下如何完成一個簡化版的linux,記得剛學習C語言的時候基本語法剛學習完的時候,就去學校的圖書館借了一本linux核心深度剖析,覺得自己的C語言基礎玩的差不多,結果看了100多頁實在是堅持不下去了,所以程式設計的學習是一個長期積累的過程,只是學了一門程式語言距離真正的程式設計還得差得遠,程式設計的學習是一個長期積累的過程。

    要製作最簡單的作業系統需要掌握的基礎,C語言,組合語言以及常見的作業系統常識,真要仔細的描述就不是幾百字能夠描述清楚地,bootloader載入,記憶體管理,系統程序排程,中斷處理等等這些簡單的功能實現可能會比較簡單,融合在一起流暢的執行就不是那麼簡單的事情了,現在網路上很多簡單的幾十行彙編程式碼,其實就是讓大家找個感覺感受下自己製作個作業系統是什麼感覺,真正玩起來需要做的細節太多,都不是一個人能玩的事情。

    從工作上講作業系統的定製主要在嵌入式領域用的比較多,嵌入式領域因為受到硬體的限制,需要對載入的系統進行定製,不需要全套新功能可能涉及到作業系統的定製,這點是有技術含量,現在還是有很多微小的嵌入式系統需要精細化的定製,當然linux核心在有些場景下也需要定製。

    對於初學者需要開發一個作業系統的東西,需要儲備大量的理論知識,需要對計算機的系統執行原理都需要有所瞭解,需要的程式語言,彙編,C語言,需要程式的載入以及記憶體執行管理,中斷等等理論有一個深刻的瞭解,一般做這方面工作的需要經驗豐富的老程式設計師,涉及到底層動作經驗佔據非常重要的因素。

    如果覺得對於linux核心比較感興趣,可以學習下linux齧合深度剖析,裡面對於初級的linux主要框架進行了分解,剖析到了每個功能以及內部的原理實現,對於深入瞭解作業系統有非常大的好處,學習任何東西首先要掌握一定的理論才能去實踐,在不懂得理論的基礎上再進行實踐是最好的方式。

  • 5 # 和不同

    假設是個人想從零開始開發一個作業系統,要注意三點:

    興趣:一個個人小作業系統很難有商業競爭力,只有依靠個人興趣來完成

    簡單:別想一口吃成胖子,先完成一個極簡作業系統就是成功

    堅持:開發過程中,會遇到很多挫折,要能堅持學習和實踐下去

    作業系統從簡單到複雜,差距極大。

    如果是個人想從零開始開發一個作業系統,比較現實的是開發一個簡單系統。但無論有多簡單,都要做好投入大量精力的準備,當然,技術上的收穫也會很豐富。

    有幾個簡單作業系統是帶有教學性質的,可以學習相關書籍,閱讀程式碼,並嘗試自己實現,如:

    µC/OS:極簡單、適用於微控制器的實時作業系統(RTOS)

    Minix:簡單的類UNIX作業系統,Linus的靈感和入門教程

    其實有很多好專案都是個人或小團隊完成的,如Lua語言,Linux系統(早期)。夢想還是要有的,萬一實現了呢?

  • 6 # 與自然做鬥爭

    如果你會製造晶片,那麼系統怎麼做都可以。

    如果你用別的晶片開發系統,只能向別人買開源指令,不同晶片指令不同。

    最後一種第三方面模擬系統,列如在WIN和安卓作業系統製造第二系統。

    一個是獨立完全屬於自己,一個需要授權於人構造上要以他的規則來寫系統。最後一個系統中寫系統。不知道你想用那種方式做系統!

    第一種可以完全按照的意思去規劃,同時與晶片設計同步,那麼所有指令等都在你手上,各種設計運算規格都是自己的,做起來思維比較清晰不會出現任何雜亂現象,如果你用第二種第三種寫系統,等會別人把一些暗碼給鎖定不告訴你,晶片無法完全釋放功能上運算當然大大折扣,同樣的配置別人比流暢幾十倍,你反而慢的不行。

    零開始學習製作系統沒有深厚的經驗底功,至少5年左右基礎學習,因為它包含有串列埠,無線等。有想法但系統一個人是做不過來的,要團隊合作,一個負責設計結構,然後分工寫系統,一個寫顯示,一個寫音訊,一個寫運算,等等!程式碼至少1萬條,每一條程式碼都有一定的作用!希望你好好努力吧,一個人做不過來,還是老老實實的學習程式設計小軟體小遊戲,修改程式之類複製過來在加工利用。

  • 7 # 我是一個西瓜w

    假設是個人想從零開始開發一個作業系統,要注意三點:

    興趣:一個個人小作業系統很難有商業競爭力,只有依靠個人興趣來完成簡單:別想一口吃成胖子,先完成一個極簡作業系統就是成功堅持:開發過程中,會遇到很多挫折,要能堅持學習和實踐下去

    作業系統從簡單到複雜,差距極大。

    如果是個人想從零開始開發一個作業系統,比較現實的是開發一個簡單系統。但無論有多簡單,都要做好投入大量精力的準備,當然,技術上的收穫也會很豐富。

    有幾個簡單作業系統是帶有教學性質的,可以學習相關書籍,閱讀程式碼,並嘗試自己實現,如:

    µC/OS:極簡單、適用於微控制器的實時作業系統(RTOS)Minix:簡單的類UNIX作業系統,Linus的靈感和入門教程

    其實有很多好專案都是個人或小團隊完成的,如Lua語言,Linux系統(早期)。

  • 中秋節和大豐收的關聯?
  • 被信任是一種能力嗎?為什麼?