自製作業系統(八)

2021-10-03 07:56:19 字數 836 閱讀 4240

現在是源**,是需要編譯的,整個過程是用nask也好,gcc也好,最後變成乙個二進位制檔案而已,僅僅是乙個檔案而已,然後這個檔案直接拷貝到記憶體,它掌控著所有,反正不管怎麼說,現在初級階段就進行分資料夾是不對的,沒有什麼意義。

這回是要進行命名的,如何命名呢?

常量,巨集定義都是大寫字母

全域性變數是l開頭的,後面跟大寫而不是下劃線

普通變數,開頭小寫,中間大寫

函式,如果有類就好了,但是沒有類,有主謂型函式,有謂賓型函式,開頭大寫,中間也大寫

結構體,列舉型別是首字母大寫。

下劃線用於跟在後面,用來描述屬性用

盡量不縮寫,那麼現在的話,,,,,我的目標就是實現我那個作業系統而已,至於裡面的精巧結構。。。如果說把所有東西都看成類的話,顯然用c語言並不合適。。。既然我用c語言,那麼實現類的話,我只能實現靜態單例模式,如果這樣的話,對於乙個單例項類,類名大寫,類變數小寫,類常量大寫,類函式也小寫吧,盡量不縮寫,中間用下劃線相連線,例如system_run(),emmmm,感覺不錯。。。當然了,用static來定義,感覺不錯。這樣就會少很多沒有意義的全域性變數了。

計畫呢,就是從2.02版開始,實現自主canvas,滑鼠鍵盤控制等等,最後實現能夠在那個系統上編譯程式,然後成為日常可用系統即可。

應用程式如何進入核心態呢?執行系統呼叫,int 80好像是硬體指定的。

還有核心棧。核心在建立程序的時候,在建立task_struct的同時,會為程序建立相應的堆疊。每個程序會有兩個棧,乙個使用者棧,存在於使用者空間,乙個核心棧,存 在於核心空間。當程序在使用者空間執行時,cpu堆疊指標暫存器裡面的內容是使用者堆疊位址,使用使用者棧;當程序在核心空間時,cpu堆疊指標暫存器裡面的內 容是核心棧空間位址,使用核心棧。

自製作業系統 (2)

接上篇,檔案跳轉到了entry.s裡面,這是kernel的入口。首先面臨這麼乙個問題,kernel被載入到了什麼地方?回想上篇elf檔案的載入機制,以及objdump裡列印出的kernel資訊,可以看到,kernel的 段 text段 被載入到了0x100000的位置,也就是1m的位置,所以記憶體布...

自製作業系統 二

組合語言學習與makefile入門 2.helloos.nas程式核心部分。jmp指令 jump,跳轉。相當於c中的goto。mov指令 move,移動。理解mov指令就理解彙編一大半。指賦值的功能 把乙個東西移走了,他原來占用的位置不會空出 3.cpu的一種儲存電路 暫存器,相當於變數的功能。以下...

自製作業系統(二)

現在呢,大致流程寫在下面 首先,編寫彙編 檔名為myos.asm,所有 大致如下 下面是標準fat12格式軟盤專用 db 0xeb,0x4e,0x90 db myos ipl 啟動區名稱,必須8位元組 dw 512 每個扇區必須為512位元組 db 1 蔟必須為1個扇區 dw 1 fat的起始位置必...