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 14

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

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

鐵人賽 Software Development DAY 21

技術 軟體與硬體的距離

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

鐵人賽 Software Development DAY 4

技術 Day-03 Process System call

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

鐵人賽 Software Development DAY 6

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

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

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

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

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

鐵人賽 Software Development DAY 11

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

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

鐵人賽 Software Development DAY 3

技術 Day-02 xv6 RISC-V 概要

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

鐵人賽 Software Development DAY 2

技術 Day-01 作業系統概要

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

鐵人賽 Software Development DAY 13

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

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

鐵人賽 Software Development DAY 8

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

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

鐵人賽 Software Development DAY 19

技術 Day-18 Page Fault Overview

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

鐵人賽 Software Development DAY 10

技術 Day-09 xv6 Paging, Page Table

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

鐵人賽 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 23

技術 Day-22 Race Condition, Spin Lock

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

鐵人賽 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 12

技術 Day-11 xv6 process virtual address space

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

鐵人賽 Software Development DAY 1

技術 Day-00 系列文簡介

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

鐵人賽 Software Development DAY 21

技術 Day-20 UART Driver TOP

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

鐵人賽 Software Development DAY 18

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

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

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

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

鐵人賽 Software Development DAY 22

技術 Day-21 UART Driver Bottom

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