iT邦幫忙

xv6相關文章
共有 40 則文章
鐵人賽 Software Development DAY 28

技術 Day-27 C 語言, 變數範圍, volatile, inline

前言 在研讀 xv6 專案程式碼的過程,我們可能會看到各種 C 語言的修飾字以及相關用法,諸如 static, extern, violiate 等等,我們將...

鐵人賽 Software Development DAY 5

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

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

技術 [MIT-6.S081-2020] OS課程----Xv6作業系統的環境架設

前言 哈囉大家好,6.S081是麻省理工的一門作業系統的課程,小弟我在寒假時有聽說這們課程很厲害,但是才寫了一個lab就沒有繼續寫下去了XD 想說趁暑假閒閒沒事...

鐵人賽 Software Development DAY 24

技術 淺談特權模式與模式切換

恐龍書上的 User Mode 與 Kernel Mode 在恐龍書中有提到,作業系統一般會在 User Mode 與 Kernel Mode 之間切換,Ker...

鐵人賽 Software Development DAY 22

技術 淺談檔案系統

你是否想過: 電腦是如何儲存我們所建立的檔案? 為什麼要做磁碟重組? 如果不知道問題的答案,就跟著筆者一起閱讀作業系統追尋問題的答案吧! 進入正題 參考 O...

鐵人賽 Software Development DAY 29

技術 Day-28 Pointer, A Pointer of A Pointer, Function Pointer

前言 在 xv6 中,我們可以看到各種 C 語言的指標操作,而在這一篇章中,我們將回顧一些指標的概念,並且結合部分 xv6 的程式碼進行更多的理解。 指向陣列...

鐵人賽 Software Development DAY 21

技術 軟體與硬體的距離

本文目標 理解作業系統與外部硬體的溝通方式 學習 xv6 作業系統是如何順利讀取到硬碟的資訊 本篇文章將會帶讀者探討 Virtio 以及作業系統如何處理各種...

鐵人賽 Software Development DAY 14

技術 Day-13 Exception vs Interrupt, Trap overview Driver

Synchronize Exception (同步異常) Exception 意思為處理器在執行指令時,遇到了非預期的情況,就稱之為 Exception。 S...

鐵人賽 Software Development DAY 6

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

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

鐵人賽 Software Development DAY 4

技術 Day-03 Process System call

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

鐵人賽 Software Development DAY 11

技術 Day-10 xv6 memory layout kernel virtual address space

前言 在昨天我們看到了 xv6 中記憶體分頁與虛擬記憶體的概念與實作的部分,有了這一些功能,我們就能夠實現作業系統中的隔離性,也就是 process 之間使用...

鐵人賽 自我挑戰組 DAY 22
C 語言筆記 系列 第 22

技術 [C 語言筆記--Day22] 6.S081 Lab syscall: 在 xv6 中新增一個 System Call

關於 xv6 的環境架設,可以參考我之前寫的這篇文章 6.S082 課程連結(我這裡用的是 2021 的版本) 這篇文章是要寫課程當中的 Lab syscall...

鐵人賽 Software Development DAY 3

技術 Day-02 xv6 RISC-V 概要

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

鐵人賽 Software Development DAY 2

技術 Day-01 作業系統概要

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

鐵人賽 Software Development DAY 8

技術 Day-07 Linker Script File: kernel.ld

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

鐵人賽 Software Development DAY 13

技術 Day-12 C Memory Management, Process Memory layout in UNIX

前言 這邊簡單的介紹 C 的記憶體管理機制與 Process 在 memory 中的布局與分布情形,之所以在這邊進行介紹,是為了方便理解後面的 object...

鐵人賽 Software Development DAY 15

技術 Day-14 xv6 Trap (user mode): overview, ecall

Interrupt 中斷 (Interrupt) 可以用來改變 CPU 執行程式的流程,當 CPU 在執行一個程式時,可以通過 Interrupt 讓 CPU...

鐵人賽 Software Development DAY 7

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

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

鐵人賽 Software Development DAY 10

技術 Day-09 xv6 Paging, Page Table

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

鐵人賽 Software Development DAY 19

技術 Day-18 Page Fault Overview

前言 我們在前面花了 5 個篇章對於 trap 進行了完整的介紹,並且瞭解了 trap 處理得具體流程,今天我們將看到 page fault 所造成的 tra...

鐵人賽 Software Development DAY 16

技術 Day-15 xv6 Trap (user mode): Trace Trap

前言 前面看完了 ecall 的前後變化,接下來我們將繼續深入追蹤 trap 的流程,查看是如何進行整個 user mode 到 supervisor mod...

鐵人賽 Software Development DAY 9

技術 Day-08 xv6 啟動與架構

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

鐵人賽 Software Development DAY 26

技術 Day-25 xv6 Thread, Switch Thread

前言 在這一篇文章中,我們將會介紹何謂 Thread,和 Process 之間有什麼樣的區別,前面介紹的 Thread 和 Process 的差別是理論上的差...

鐵人賽 Software Development DAY 23

技術 Day-22 Race Condition, Spin Lock

前言 如果一個應用程式想要使用多個 CPU 的核心 (thread),並且使用了 System call,將會觸發 trap,而多個核心使用 System c...

鐵人賽 Software Development DAY 12

技術 Day-11 xv6 process virtual address space

前言 我們昨天看到了 kernel space 中的 kernel virtual address space,今天我們會看到 user virtual ad...

鐵人賽 Software Development DAY 21

技術 Day-20 UART Driver TOP

前言 前面我們知道在 xv6 啟動後,Shell 會輸出 $ 到 Console 上,而我們可以追蹤產生 $ 的行為了解 UART 的運作,以及介紹一下 Dr...

鐵人賽 Software Development DAY 1

技術 Day-00 系列文簡介

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

鐵人賽 Software Development DAY 18

技術 Day-17 Trap (supervisor mode, machine mode), conclusion Trap in xv6

前言 我們簡單的回顧來自於 user mode 的 trap 的流程,整個流程為 uservec 到 usertrap() 再到 usertrapret()...

鐵人賽 Software Development DAY 22

技術 Day-21 UART Driver Bottom

前言 繼續前面 UART TOP 的部分,下面將介紹 UART Bottom 的部分,也就是關於 Interrupt 的處理,並從 Interrupt 的處理...

技術 Day-30 Switch Thread 中 lock 的設計,sleep 和 wakeup 概念

前言 前面我們看到了整個 Switch Thread 的運作,首先會有 Timer Interrupt 產生 trap,接著 yield() 會將 Proce...