原文:xv6學習筆記(5) : 鎖與管道與多cpu

xv 學習筆記 : 鎖與管道與多cpu . xv 鎖結構 . xv 操作系統要求在內核臨界區操作時中斷必須關閉。 如果此時中斷開啟,那么可能會出現以下死鎖情況: 進程A在內核態運行並拿下了p鎖時,觸發中斷進入中斷處理程序。 中斷處理程序也在內核態中請求p鎖,由於鎖在A進程手里,且只有A進程執行時才能釋放p鎖,因此中斷處理程序必須返回,p鎖才能被釋放。 那么此時中斷處理程序會永遠拿不到鎖,陷入無限循 ...

2021-08-29 20:22 2 208 推薦指數:

查看詳情

XV6學習(10)

在包括XV6的絕大部分操作系統都是多個任務交錯執行的。交錯的一個原因是多核硬件:多核計算機的多個CPU核心獨立執行計算,如XV6的RISC-V處理器。多個CPU核心共享物理內存,XV6利用這種共享來維護所有核心都會讀寫的數據結構。而這種共享會導致一個CPU在讀取某數據結構時,可能有另一個CPU正在 ...

Fri Feb 05 19:05:00 CST 2021 0 334
xv6學習筆記(4) : 進程調度

xv6學習筆記(4) : 進程 xv6所有程序都是單進程、單線程程序。要明白這個概念才好繼續往下看 1. XV6中進程相關的數據結構 在XV6中,與進程有關的數據結構如下 與前述的兩類信息的對應關系如下 操作系統管理進程有關的信息:內核棧kstack,進程的狀態state,進程 ...

Tue Aug 24 06:36:00 CST 2021 1 187
XV6學習筆記(1) : 啟動與加載

XV6學習筆記(1) 1. 啟動與加載 首先我們先來分析pc的啟動。其實這個都是老生常談了,但是還是很重要的(也不知道面試官考不考這玩意), 1. 啟動的第一件事-bios 首先啟動的第一件事就是運行bios,這個時候我們的機器位於實模式,也就是16位地址。這個時候能訪問的空間只有1mb ...

Tue Aug 17 05:43:00 CST 2021 5 326
xv6學習筆記(3):中斷處理和系統調用

xv6學習筆記(3):中斷處理和系統調用 1. tvinit函數 這個函數位於main函數內 表明了就是設置idt表 1. SETGATE函數 這里的setgate是一個宏定義是用來設置idt表的 下面是函數參數的說明 Sel : 表示對於中斷處理程序代碼所在段的段選擇 ...

Sun Aug 22 23:16:00 CST 2021 0 189
xv6操作系統學習筆記

0x00背景 最近在看操作系統上的書 然后選了本知乎推薦的xv6 https://th0ar.gitbooks.io/xv6-chinese/content/content/chapter0.html 我們從這幾個問題入手 操作系統作用是什么? 內核的作用 ...

Sun Aug 06 08:53:00 CST 2017 0 1413
XV6學習(7)Lab lazy

代碼在github上。 這一個實驗是要利用缺頁異常來實現懶分配(lazy allocation)。用戶態程序通過sbrk系統調用來在堆上分配內存,而sbrk則會通過kalloc函數來申請內存頁面,之 ...

Sat Jan 16 18:39:00 CST 2021 1 461
XV6學習(2)Lab syscall

實驗的代碼放在了Github上。 第二個實驗是Lab: system calls。 這個實驗主要就是自己實現幾個簡單的系統調用並添加到XV6中。 XV6系統調用 添加系統調用主要有以下幾步: 在user/user.h中添加系統調用函數的定義。 在user/usys.pl中添加 ...

Mon Dec 21 18:28:00 CST 2020 0 917
XV6學習(3)Page tables

頁表是操作系統中非常重要的一部分,用於將虛擬地址轉化為物理地址。虛擬內存是操作系統實現進程隔離的關鍵技術。 在 XV6 中通過 RISC-V 的頁表機構完成了虛擬地址向物理地址的轉換。 分頁硬件機構 XV6 運行於 Sv39 RISC-V 上,64 位地址中的低 39 位被使用。RISC-V ...

Mon Dec 21 18:32:00 CST 2020 0 743
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM