iT邦幫忙

鐵人檔案

2022 iThome 鐵人賽
回列表
Software Development

與作業系統的第一類接觸 : 探索 xv6 系列

xv6 為 MIT 用於教學所開發的作業系統,希望在本系列文章中,能夠藉由學習與閱讀 xv6 程式碼達到以下目標:

* 了解 C 程式的行為,如 violiate, inline,以及記憶體佈局。
* 了解 process, thread, memory paging, virtual memory 等虛擬化概念。
* trap, exception, interrupt 概念以及處理。
* RISC-V 基本暫存器,CSR 的使用與操作,特權模式。

本文為筆者在對於作業系統零基礎概念的情況下,開始學習xv6所進行的一些系統性整理以及心得記錄,拋磚引玉,還請各位多多指教。

鐵人鍊成 | 共 31 篇文章 | 20 人訂閱 訂閱系列文 RSS系列文 團隊那團名要叫什麼?
DAY 1

Day-00 系列文簡介

大家好,在本系列文中,將以 RISC-V xv6 以主要的學習目標來學習作業系統,希望本文可以達到以下幾個目標 藉由 top-down 的方式學習 xv6 的...

DAY 2

Day-01 作業系統概要

前言 首先在最一開始,將藉由 Hello World 範例程式,引入一些作業系統的基本部件。以及作業系統的概念與目標,抽象性的實現,最後引入 System c...

DAY 3

Day-02 xv6 RISC-V 概要

前言 昨天我們快速地看過作業系統需要達成的主要目標,包含抽象,多工等等。而在這一篇章,我們將了解作業系統的主要服務以及 xv6 作業系統的相關背景,以及 xv...

DAY 4

Day-03 Process System call

前言 在昨天我們已經順利的啟動 xv6 了,而在 xv6 中實現了 21 種 System call,今天我們將看到一些與 process 有關的 Syste...

DAY 5

Day-04 C 語言的檔案操作, xv6 File System call

前言 今天將複習 C 語言中對於檔案的基本操作,以及檔案中一些重要的概念,如重新導向,資料流等等,最後看到 xv6 中檔案的一些操作,System call,...

DAY 6

Day-05 I/O 重導向, pipe 概念

前言 在今天我們將運用前面所學的關於檔案操作的 System call,以及 Process 相關的 System call,來實現 I/O 重導向的概念,並...

DAY 7

Day-06 RISC-V 簡介, Microkernel vs Monolithic kernel

前言 由於下面在追蹤 xv6 的相關議題,如架構與啟動,會涉及到一些暫存器的操作,以及一些暫存器操作的指令,或是在進行 System call 時,涉及的特權...

DAY 8

Day-07 Linker Script File: kernel.ld

前言 今日的文章,將簡單的看過電腦的啟動流程,以及在 xv6 中的 bootloader 和 kernel.ld 這個檔案。 啟動概要 當電腦開機或是重新啟動...

DAY 9

Day-08 xv6 啟動與架構

前言 今日希望通過看到整個 xv6 的啟動過程,來一步步地看到作業系統相關的設計議題,如 memory page 機制,lock,process 等等。 啟動...

DAY 10

Day-09 xv6 Paging, Page Table

前言 在最一開始的時候,我們知道作業系統有一個很重要的目標,便是做到隔離性的部分,而隔離性這一部分的實作和虛擬記憶體管理有著很大的關係,以下將會介紹記憶體地址...