乙個作業系統的實現 2

2021-09-20 01:56:15 字數 2067 閱讀 9388

接上文:

xiongjian

2010.12.22  msn:[email protected]

10 下面開始程序,首先引入幾個基本原則:

1)程序表a用來儲存程序a的資訊和程序a切換時,儲存當前a執行時暫存器資訊。定義為: processproc_table[1024]; 表示系統最多可以有1024個程序,process裡面就儲存了本程序執行時的各個暫存器資訊(這樣可以在程序切換回來的時候返回暫存器資訊),該程序對應的ldt描述符(一般指向**段和資料段),最後還有乙個指向gdt中該程序位置的描述符。

實現乙個最簡單的程序切換系統,需要下面3個子模組:

時鐘中斷處理程式/程序排程模組/至少1個主程序和2個子程序

乙個程序(ring1)的最小需要的元素為程序執行體,堆疊大小和位置。另外需要gdt中有乙個選擇符指向乙個該程序的ldt。在時鐘中斷發生時,時鐘中斷處理函式(ring0)將esp指向將要執行的程序在程序表中的位置。

當做到這裡,系統應該可以定時觸發時間中斷處理函式,時間中斷處理函式會輪流的呼叫程序a和b了。(這也是個ring0到ring1直接相互切換的過程)

到此為止,作業系統的啟動可以高於段落。

其他需要注意的是:系統呼叫

系統呼叫的簡單實現就是程序(ring1)將引數例如:num,儲存在暫存器中,然後自己產生乙個中斷,例如int 100h.表示軟體發生100h號中斷(假設中斷處理函式為sys_call)。

i/o system(注意以下都是微核心形態)

io首先第乙個想到的就是鍵盤,其實鍵盤驅動非常簡單,只要注意以下幾個方面即可:

1 建立鍵盤中斷處理函式

2 開啟8259a的鍵盤中斷

3 解析中斷發生時的資料以確定使用者按下的具體按鍵

4 鍵盤有乙個緩衝區,用於儲存使用者按鍵資訊,驅動需要及時的吧這個緩衝區的資料讀取出來,如果不是乙個完整資料,需要做臨時快取。

系統有乙個固定的視訊記憶體記憶體位置,顯示的最基本原理就是n個位元組裡面儲存字元和顏色資訊,最常見的是的565色。linux的多終端機制的一般規則為多個終端對應乙個螢幕,使用者在使用乙個螢幕的時候,可以隨時切換到其他螢幕而好像是切換了使用者一樣。實現這樣機制的乙個程序叫做tty程序,他作為第乙個微核心以為的系統程序而存在,已區別於一般的使用者程序。下面就來看看他的大概實現思路:

tty_task()

else傳送者處於send狀態,並等待一直到接收者處於receive為止,通過呼叫程序排程程序實現。

}

²       6 通過msg_send的呼叫,在實體地址層面,訊息就被複製到了接收程序中(訊息可以保持在接收程序的程序表項中)。下面看看接受程序:接收程序呼叫msg_recv來阻塞的接收訊息

msg_recv(接收者,傳送者,接收訊息的指標m)

²       7 到目前為止,程序可以實現傳送和接收訊息了。實現的根本原理還是通過實體地址的訊息複製。 現在的程序有了以下狀態:傳送(訊息)狀態,接收(訊息)狀態,執行狀態,休眠狀態。 其中 傳送/接收/休眠狀態都不會獲得cpu執行機會。

,同時mm程序會不停的查詢,如果有訊息,則呼叫do_fork真正建立程序。

從這一系列流程可以看出,微核心僅僅給上層傳送和接收訊息2個介面,而不關心具體實現。具體的實現是他們通過引數傳給具體的ring1程序(例如fs,mm……)來實現。

以上就是微核心的思想,同時也是乙個簡單同步ipc思想

未完待續(檔案系統+記憶體管理)

從零實現乙個作業系統 day2

我的部落格 startcraft.cn 今天主要是對作業系統的啟動進行學習,因為都是理論的部分,這篇部落格就當學習的筆記了 首先在按下電源鍵後計算機首先讀取寫在rom中的bios basic input output system 基本輸入輸出系統 然後bios程式會進行硬體自檢,若硬體出問題發出相...

乙個作業系統的實現 2 保護模式1

1 實模式下記憶體定址 段首位址 16 偏移量 實體地址 段暫存器左移四位 offset 2 保護模式下定址 1 段暫存器中存放段選擇子selector 2 gdtr 全域性描述符表暫存器 中存放段描述符首位址 3 通過選擇子與gdtr中首位址,找到對應的段描述符 4 段描述符中有段的物理首位址,就...

乙個小作業系統

1 1 chapter1 a boot.asm 乙個 作業系統 可以只有20行 把下面這段 用nasm編譯一下 nasm boot.asm o boot.bin org 07c00h 告訴編譯器程式載入到7c00處 mov ax,cs mov ds,ax mov es,ax call dispstr...