xv6學習筆記(4) : 進程 xv6所有程序都是單進程、單線程程序。要明白這個概念才好繼續往下看 1. XV6中進程相關的數據結構 在XV6中,與進程有關的數據結構如下 與前述的兩類信息的對應關系如下 操作系統管理進程有關的信息:內核棧kstack,進程的狀態state,進程 ...
https: blog.csdn.net Swartz article details xv 進程切換 swtch函數 進程切換中由於需要保存當前進程的寄存器狀態信息,又要將新進程記錄的寄存器狀態信息加載到寄存器,因此涉及到許多棧的操作,堆棧間的來回切換,容易讓人眼花繚亂,難以理解。本文試圖分析以下xv 中的進程切換過程。 當前進程通過調用yield函數,進行進程切換。yield函數調用sched ...
2018-07-11 11:50 0 1081 推薦指數:
xv6學習筆記(4) : 進程 xv6所有程序都是單進程、單線程程序。要明白這個概念才好繼續往下看 1. XV6中進程相關的數據結構 在XV6中,與進程有關的數據結構如下 與前述的兩類信息的對應關系如下 操作系統管理進程有關的信息:內核棧kstack,進程的狀態state,進程 ...
1. 下載xv6 從github上拉取xv6的源碼: 2. 下載qemu 在Ubuntu下使用apt-get,其他發行版自行搜索如何下載: 3. 測試編譯環境 輸入下面的命令 第二行應該輸出:elf32-i386 輸入下面的命令, 應輸出: /usr/lib ...
代碼在github上。 這一個實驗是要利用缺頁異常來實現懶分配(lazy allocation)。用戶態程序通過sbrk系統調用來在堆上分配內存,而sbrk則會通過kalloc函數來申請內存頁面,之后將頁面映射到頁表當中。 當申請小的空間時,上述過程是沒有問題的。但是如果當進程一次申請很大 ...
在包括XV6的絕大部分操作系統都是多個任務交錯執行的。交錯的一個原因是多核硬件:多核計算機的多個CPU核心獨立執行計算,如XV6的RISC-V處理器。多個CPU核心共享物理內存,XV6利用這種共享來維護所有核心都會讀寫的數據結構。而這種共享會導致一個CPU在讀取某數據結構時,可能有另一個CPU正在 ...
Xv6代碼閱讀報告-Topic3 @肖劍楠 20111013223 Xv6代碼閱讀報告-Topic3 1. 序 2. 上下文切換 ...
1.進程 1.1 進程的概念 1) 狹義定義:進程是正在運行的程序的實例。 2) 廣義定義:進程是一個具有一定獨立功能的程序關於某個數據集合的一次運行活動。它是操作系統動態執行的基本單元,在傳統的操作系統中,進程既是基本的分配單元,也是基本的執行單元。 1.2 進程的組成 1.3 ...
正在學習MIT的6.S081,把做的實驗寫一寫吧。 實驗的代碼放在了Github上。 第一個實驗是Lab util,算是一個熱身的實驗,沒有涉及到系統的底層,就是使用系統調用來完成幾個用戶模式的小程序。 Boot xv6 (easy) 啟動XV6,按照文檔執行就ok了。 在XV6中 ...
這一個實驗主要是對RISC-V的匯編、棧幀結構以及陷阱進行簡單的了解,難度並不大。 代碼放在github上。 RISC-V assembly (easy) Q1: Which registers ...