xv6 為 MIT 用於教學所開發的作業系統,希望在本系列文章中,能夠藉由學習與閱讀 xv6 程式碼達到以下目標:
* 了解 C 程式的行為,如 violiate, inline,以及記憶體佈局。
* 了解 process, thread, memory paging, virtual memory 等虛擬化概念。
* trap, exception, interrupt 概念以及處理。
* RISC-V 基本暫存器,CSR 的使用與操作,特權模式。
本文為筆者在對於作業系統零基礎概念的情況下,開始學習xv6所進行的一些系統性整理以及心得記錄,拋磚引玉,還請各位多多指教。
前言 在昨天我們看到了 xv6 中記憶體分頁與虛擬記憶體的概念與實作的部分,有了這一些功能,我們就能夠實現作業系統中的隔離性,也就是 process 之間使用...
前言 我們昨天看到了 kernel space 中的 kernel virtual address space,今天我們會看到 user virtual ad...
前言 這邊簡單的介紹 C 的記憶體管理機制與 Process 在 memory 中的布局與分布情形,之所以在這邊進行介紹,是為了方便理解後面的 object...
Synchronize Exception (同步異常) Exception 意思為處理器在執行指令時,遇到了非預期的情況,就稱之為 Exception。 S...
Interrupt 中斷 (Interrupt) 可以用來改變 CPU 執行程式的流程,當 CPU 在執行一個程式時,可以通過 Interrupt 讓 CPU...
前言 前面看完了 ecall 的前後變化,接下來我們將繼續深入追蹤 trap 的流程,查看是如何進行整個 user mode 到 supervisor mod...
前言 在前面我們看過了整個 trap 的流程,而在今天我們將以 exec() 這個 System call 來追蹤實際 trap 發生的情況。 exec()...
前言 我們簡單的回顧來自於 user mode 的 trap 的流程,整個流程為 uservec 到 usertrap() 再到 usertrapret()...
前言 我們在前面花了 5 個篇章對於 trap 進行了完整的介紹,並且瞭解了 trap 處理得具體流程,今天我們將看到 page fault 所造成的 tra...
前言 在前面我們介紹了 page fault 以及 lazy page allocation 的概念,而我們在 usertrap() 中通過 scause C...