原创 貓喫老鼠問題

今天在看雪看到這個“貓喫老鼠問題”的帖子,和當初學編程時的一個叫做“約瑟夫環問題”類似。 自己按照數學的方法分析了一下,得到一個數學算法。   問題描述:       現有n個老鼠圍成一圓圈,有一隻貓從任意位置開始喫老鼠,每次都隔一個老鼠

原创 第五步:進一步完善域結構並根據域結構重新編寫鍵盤驅動

    此次,對域結構進行了進一步完善,除了“子域”的概念沒有出來外,域結構的最基本特性已經展現出來了。下面就對“域”的一些特點進行一下簡單總結。然後利用“域”來重新實現鍵盤驅動程序。一個域,包含以下幾個基本要素:    1.生命值   

原创 貓吃老鼠問題

今天在看雪看到這個“貓吃老鼠問題”的帖子,和當初學編程時的一個叫做“約瑟夫環問題”類似。 自己按照數學的方法分析了一下,得到一個數學算法。   問題描述:       現有n個老鼠圍成一圓圈,有一隻貓從任意位置開始吃老鼠,每次都隔一個老鼠

原创 第四步:創建鍵盤中斷處理模塊和初步搭建程序執行系統

鍵盤中斷處理模塊:    在前一步,已經可以對鍵盤中斷有反應了,但是按下一次鍵盤按鈕後,就不再反應了。這是因爲,必須要向鍵盤數據端口取出從鍵盤傳來的掃描碼後,纔會繼續等待與保存下一個鍵盤中斷產生的掃描碼。 t_8 scan_code

原创 操作系統實驗二:從實模式跳轉到保護模式

寫在前面的話:       編寫這一個實驗實在是讓我感到慚愧,搗鼓了許多次,也失敗了許多次,才好不容易纔正確跳轉到保護模式。想當初我按照《自己動手寫操作系統》直接打代碼,用nasm編譯運行,儘管也會出現一些小錯誤。但仔細對照書或直接拉出源

原创 第三步:初步建立中斷異常處理機制

建立中斷異常處理機制,主要就是對8259A的初始化,建立中斷描述符表。因爲要對十來個已定義的異常進行處理,再加上16個外部中斷的處理,代碼量就顯得很龐大了。 因爲一時間也想不出更好的處理方案,所以就照搬《自己動手寫操作系統》裏的那一套方法

原创 操作系統實驗七:保護模式之中斷測試實驗

我對中斷的理解:    中斷,顧名思義,就是在遇到特殊的情況時,停下當前正在做的事情,轉去幹其他(根據特殊情況預先設計好的)事情,完成後(並不一定非要)再繼續之前做的事情。   首先說說“去幹其他(根據特殊情況預先設計好的)事情”。   

原创 操作系統實驗四:保護模式之局部任務(LDT)初探

      通過前幾次實驗,對於實模式與保護模式間的跳轉已經有了充分認知。此次實驗與接下來的實驗主要集中在認識保護模式下的一些特性, 如多任務的基礎(局部任務LDT)、分頁機制、中斷、異常、I/O等。爲了儘可能將實驗設計的簡單,我儘量將以

原创 操作系統實驗五:保護模式之初步認知門任務(求助:如何使用其他指令替代或模擬retf指令)

向彙編高手求助:       此次實驗中需要用到retf指令在調用門任務後返回。可是yc09編譯器不支持retf指令。而我使用ret指令無法正確跳轉返回。       因爲對彙編不熟,胡亂試了許多方法後依然無法解決,無奈之下,只好在編譯好

原创 漢諾塔問題算法(c語言控制檯動畫演示版)

遞歸思想非常簡單也是最常見的算法之一,其中一代表例題就是漢諾塔問題。 解題的算法很簡單: void Hanoi(int n,int A,int B,int C){    if(n>0)    {        Hanoi(n-1,a,c,

原创 第二步:在內核添加屏幕輸出函數

這一步,主要是一個過渡,爲將來的工作做準備。 在這裏的主要工作是整理代碼與添加字符串與int型數值的輸出函數。   在yc09中,編譯後的二進制文件,函數似乎是按照在代碼中的先後順序排列的,然後再在末尾放置所有的變量。 在整個內核中,是以

原创 第六步:繼續完善域結構並實現鍵盤模塊與視頻模塊的交互

    隨着編寫的不斷深入,整個工程變得越來越大了。以前的一些文件,這裏那裏偶爾需要進行一下小的改動。單個文件的代碼量也越來愈大。現今再一個一個文件的代碼貼出來,就太佔篇幅了。所以接下來的帖子裏,我將直接給出下載鏈接,免得想要實際運行一下

原创 第一步:加載內核到內存中

      在 操作系統學習筆記 裏基本完成了《自己動手寫操作系統》第三章的幾個實驗(除了分頁機制實驗外)。下面就要邁開編寫自己的操作系統這萬里長征的第一步了。         在邁出第一步前,有幾件事要簡要說明一下。       首先,

原创 操作系統實驗一:在引導扇區編寫顯示字符串的引導程序

寫在前面的話:       一直以來就想要自己動手寫一個簡單的操作系統,可惜水平有限,在linux下編譯安裝一個程序幾天都沒有成功,更不用說研究Linux的內核代碼了。後來買來minix的書籍,看了半個月,也不知道如何開始寫自己的第一行代

原创 操作系統實驗六:保護模式之使用調用門提升特權級

對IA32分段機制中特權級的個人總結:   在IA32的分段機制裏,分爲4個特權等級(ring0~ring3):       Level0                高(內層)    L e v e l 1