Lab 1 Exercise 3 設置一個斷點在地址0x7c00處,這是boot sector被加載的位置。然后讓程序繼續運行直到這個斷點。跟蹤/boot/boot.S文件的每一條指令,同時使用boot.S文件和系統為你反匯編出來的文件obj/boot/boot.asm。你也可以使用GDB的x ...
內核 操作系統的內核往往運行在高的虛擬地址空間, 使低的地址空間留給用戶程序.上一節我們知道, 內核運行的入口物理地址是 x c , 這個地址是在 MB 地址空間范圍內的, 這個空間完全足夠內核開始運行. 內核的虛擬地址是內核希望執行的地址, 但是內存並沒有那么大的空間, 所以內核實際執行的地址是物理地址. 內核的虛擬地址是一個高地址, 是怎么映射到 x 到 x 這個低的物理地址空間的呢 我們知道 ...
2020-03-18 17:01 2 493 推薦指數:
Lab 1 Exercise 3 設置一個斷點在地址0x7c00處,這是boot sector被加載的位置。然后讓程序繼續運行直到這個斷點。跟蹤/boot/boot.S文件的每一條指令,同時使用boot.S文件和系統為你反匯編出來的文件obj/boot/boot.asm。你也可以使用GDB的x ...
Part 3 Kernel Address Space JOS把32位線性地址虛擬空間划分成兩個部分。其中用戶環境(進程運行環境)通常占據低地址的那部分,叫用戶地址空間。而操作系統內核總是占據高地址的部分,叫內核地址空間。這兩個部分的分界線是定義在memlayout.h文件中的一個宏 ULIM ...
Lab 1 Part 3: The kernel 現在我們將開始具體討論一下JOS內核了。就像boot loader一樣,內核開始的時候也是一些匯編語句,用於設置一些東西,來保證C語言的程序能夠正確的執行。 使用虛擬內存 在運行boot loader時,boot loader中的鏈接 ...
Lab 1: Booting a PC Part 1: PC Bootstrap 介紹這一部分知識的目的就是讓你能夠更加熟悉x86匯編語言,以及PC啟動的整個過程,而且也會首次學習使用QEMU軟件來仿真xv6操作系統,並且配合GDB對操作系統的運行進行調試。 開始學習X86匯編語言 ...
Lab 2: Memory Management lab2中多出來的幾個文件: inc/memlayout.h kern/pmap.c kern/pmap.h kern/kclock.h kern/kclock.c memlayout.h描述了虛擬地址 ...
Part 2: The Boot Loader 對於PC來說,軟盤,硬盤都可以被划分為一個個大小為512字節的區域,叫做扇區。一個扇區是一次磁盤操作的最小粒度。每一次讀取或者寫入操作都必須是一個或多 ...
Lab 1 Part 2 The Boot Loader Loading the Kernel 我們現在可以進一步的討論一下boot loader中的C語言的部分,即boot/main.c。但是在我們分析之前,我們應該先回顧一些關於C語言的基礎知識。 Exercise 4: 閱讀 ...
Introduction 在這個實驗中,我們將實現操作系統的一些基本功能,來實現用戶環境下的進程的正常運行。你將會加強JOS內核的功能,為它增添一些重要的數據結構,用來記錄用戶進程環境的一些信息;創建一個單一的用戶環境,並且加載一個程序運行它。你也可以讓JOS內核能夠完成用戶環境所作 ...