原文:XV6學習筆記(1) : 啟動與加載

XV 學習筆記 . 啟動與加載 首先我們先來分析pc的啟動。其實這個都是老生常談了,但是還是很重要的 也不知道面試官考不考這玩意 , . 啟動的第一件事 bios 首先啟動的第一件事就是運行bios,這個時候我們的機器位於實模式,也就是 位地址。這個時候能訪問的空間只有 mb 就是設置cs寄存器的值為 xFFFF, ip的值為 x 這個就是bios的地址,然后我們會去運行bios執行各種對硬件的檢 ...

2021-08-16 21:43 5 326 推薦指數:

查看詳情

xv6學習筆記(4) : 進程調度

xv6學習筆記(4) : 進程 xv6所有程序都是單進程、單線程程序。要明白這個概念才好繼續往下看 1. XV6中進程相關的數據結構 在XV6中,與進程有關的數據結構如下 與前述的兩類信息的對應關系如下 操作系統管理進程有關的信息:內核棧kstack,進程的狀態state,進程 ...

Tue Aug 24 06:36:00 CST 2021 1 187
xv6學習筆記(5) : 鎖與管道與多cpu

xv6學習筆記(5) : 鎖與管道與多cpu 1. xv6鎖結構 1. xv6操作系統要求在內核臨界區操作時中斷必須關閉。 如果此時中斷開啟,那么可能會出現以下死鎖情況: 進程A在內核態運行並拿下了p鎖時,觸發中斷進入中斷處理程序。 中斷處理程序也在內核態中請求p鎖,由於鎖在 ...

Mon Aug 30 04:22:00 CST 2021 2 208
安裝並啟動xv6

1. 下載xv6 從github上拉取xv6的源碼: 2. 下載qemu 在Ubuntu下使用apt-get,其他發行版自行搜索如何下載: 3. 測試編譯環境 輸入下面的命令 第二行應該輸出:elf32-i386 輸入下面的命令, 應輸出: /usr/lib ...

Wed Jan 26 20:14:00 CST 2022 1 620
xv6學習筆記(3):中斷處理和系統調用

xv6學習筆記(3):中斷處理和系統調用 1. tvinit函數 這個函數位於main函數內 表明了就是設置idt表 1. SETGATE函數 這里的setgate是一個宏定義是用來設置idt表的 下面是函數參數的說明 Sel : 表示對於中斷處理程序代碼所在段的段選擇 ...

Sun Aug 22 23:16:00 CST 2021 0 189
xv6操作系統學習筆記

0x00背景 最近在看操作系統上的書 然后選了本知乎推薦的xv6 https://th0ar.gitbooks.io/xv6-chinese/content/content/chapter0.html 我們從這幾個問題入手 操作系統作用是什么? 內核的作用 ...

Sun Aug 06 08:53:00 CST 2017 0 1413
XV6學習(7)Lab lazy

代碼在github上。 這一個實驗是要利用缺頁異常來實現懶分配(lazy allocation)。用戶態程序通過sbrk系統調用來在堆上分配內存,而sbrk則會通過kalloc函數來申請內存頁面,之 ...

Sat Jan 16 18:39:00 CST 2021 1 461
XV6學習(10)鎖

在包括XV6的絕大部分操作系統都是多個任務交錯執行的。交錯的一個原因是多核硬件:多核計算機的多個CPU核心獨立執行計算,如XV6的RISC-V處理器。多個CPU核心共享物理內存,XV6利用這種共享來維護所有核心都會讀寫的數據結構。而這種共享會導致一個CPU在讀取某數據結構時,可能有另一個CPU正在 ...

Fri Feb 05 19:05:00 CST 2021 0 334
XV6學習(2)Lab syscall

實驗的代碼放在了Github上。 第二個實驗是Lab: system calls。 這個實驗主要就是自己實現幾個簡單的系統調用並添加到XV6中。 XV6系統調用 添加系統調用主要有以下幾步: 在user/user.h中添加系統調用函數的定義。 在user/usys.pl中添加 ...

Mon Dec 21 18:28:00 CST 2020 0 917
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM