osdev

    0熱度

    3回答

    我正在研究大學的Pintos玩具操作系統,但使用GCC 4.6.2時出現了一個奇怪的錯誤。當我推入我的系統調用參數(在內聯程序集中只有3個pushl-s)時,一些神祕的數據也出現在堆棧上,並且參數的順序錯誤。設置-fno-omit-frame-pointer可以消除奇怪的數據,但參數仍然是錯誤的順序。 GCC 4.5正常工作。任何想法什麼具體選項可以解決這個問題 注意:問題仍然發生在-O0。

    8熱度

    3回答

    我想了解更多關於osdev的信息。所以我想從其他小內核那裏學習,在osdev上更好。有學習osdev的好內核嗎?當然,它需要是GPL,所以我可以訪問源代碼並可以自由修改它。

    3熱度

    1回答

    作爲32位x86處理器的某些OS開發的一部分,我正在考慮在中斷描述符表中使用頁面錯誤向量的任務門。目的是強制任務切換,以確保處理程序的堆棧被映射(並避免中斷任務的堆棧的一部分未被映射的情況)。 我正在QEMU下運行我的內核(但它是),但我發現當頁面錯誤發生時,它崩潰(我回到命令提示符)。我一直在閱讀和挖掘搜索提示,可能會幫助我找出確切的原因。我認爲我錯過了某些東西和/或誤解了某些東西。順便說一下,

    2熱度

    2回答

    我正在搞一些業餘愛好者操作系統開發,我對存儲器映射的I/O地址有點困惑。我理解整個內存映射I/O概念,但我想弄清楚開發人員如何獲取地址來操作硬件。 地址是由硬件供應商指定的,還是它們是所有計算機的某種標準地址?例如,用於文本打印的VGA存儲器從地址0xB8000開始。每個x86機器都是這個標準嗎?如果是這樣,誰來設定這個標準?例如,如果我想與以太網卡交談,我如何知道它用於通信的地址或端口? 在此先

    3熱度

    2回答

    我製作了一個桌面操作系統,內含c打印「hello world」的內核。我正在嘗試爲c中的操作系統創建一個GUI(自定義窗口管理器,按鈕),但我遇到了麻煩。我看着一個教程: http://www.osdever.net/tutorials/view/gui-development 是否有任何類型的GUI教程,是一個桌面操作系統Ç的? p.s.沒有Linux和沒有DOS。只有C標準。

    1熱度

    3回答

    我試圖做 memset(&idt_entries, 0, sizeof(idt_entry_t)*256); 產生 error: cannot convert 'idt_entry_t (*)[256] {aka idt_entry_struct ()[256]}' to 'u8int {aka unsigned char*}' for argument '1' to 'void memset

    5熱度

    1回答

    在操作系統用戶模式應用程序的虛擬地址空間是私有的,一個應用程序不能更改屬於另一個應用程序的數據。每個應用程序都是獨立運行的,並且如果應用程序崩潰,則崩潰僅限於該應用程序。其他應用程序和操作系統不會受到崩潰的影響 爲什麼在內核模式下操作系統不保護內存併發生BOSD?

    1熱度

    3回答

    我最近發現了舊的(非常舊的)筆記本電腦,儘管學習裝配和一些基本的操作系統開發可能是一個很好的機會。 大會教程最常獻給8086個芯片,所以我的問題是,這是否英特爾82340SX有什麼區別?語言使用有什麼變化嗎?

    3熱度

    1回答

    我正在開發一個C語言的操作系統,我在分頁上掙扎着。我通過分配內存並輸出處理物理和虛擬頁分配的低級內存分配輸出來測試我的內核堆。 當PDE 0,一切的偉大工程0-1023頁,但只要分配移動到PDE 1,如果我開始從不同的物理地址分配一個頁面故障引發本標誌設置,有時rw標誌了。 我是否需要從cr2獲取錯誤地址並將其映射回PDE和它所屬的頁面,然後設置或使用3的地址?之後,我需要重新啓動指令,但我該怎麼

    1熱度

    1回答

    我正在編寫一個需要與某些外部彙編程序函數接口的操作系統。我把聲明的標題: namespace Kernel { class DescriptorTables { public: void init(); void gdt_set_gate(s32int,u32int,u32int,u8int,u8int); private: