北京大學作業系統實習 LAB1

2021-10-03 05:16:48 字數 1301 閱讀 3472

linux pcb:

linux 的pcb叫task_struct,位置在/usr/src/linux-headers-4.15.0-45/include/linux/sched.h中。(linux-headers-4.15.0-45是linux版本號)

主要包含:

nachos pcb:

nachos pcb位置在,nachos-3.4/code/threads/thread.h中

主要包含:

總結

nachos的pcb相對於linux比較簡單,只保留最基本的屬性。

main.cc

kernal啟動的入口,配以不同的引數可以呼叫不同功能,在這裡,main.cc 主要是呼叫threadtest()

threadtest.cc

void threadtest()是這個程式的入口,其中從main傳來testnum,如果是1的話就執行threadtest1()

void threadtest1()主要用來建立兩個程序,兩個程序不停地yeild,讓位給另乙個程序上cpu

thread.h

主要定義thread的資料結構,定義了thread的一些必要屬性,如暫存器的值,程式計數器,棧頂,棧底等,以及thread的一些基本方法,例如fork,sleep,yield等。

thread.cc

主要完成了thread的建構函式、析構函式、fork、sleep、yield等方法的編寫。

name: main, uid: 1000, pid: 0 

name: ljt, uid: 1000, pid: 1

name: ljt, uid: 1000, pid: 2

name: ljt, uid: 1000, pid: 3

name: ljt, uid: 1000, pid: 4

name: ljt, uid: 1000, pid: 5

....

..name: ljt, uid: 1000, pid: 125

name: ljt, uid: 1000, pid: 126

name: ljt, uid: 1000, pid: 127

assertion failed: line 46, file

"../threads/thread.cc"

aborted (core dumped)

參考文獻:

[1]

[2]

作業系統實驗課程 Lab1

lab1 bootloader interrupt device driver 啟動作業系統的bootloader,了解作業系統啟動前的狀態和要做的準備工作,了解執行作業系統的硬體支援,作業系統如何載入到記憶體中,理解兩類中斷 外設中斷 陷阱中斷 等 1.基於分段機制的儲存管理 2.裝置管理的基本概...

ucore作業系統lab1實驗準備知識

虛擬環境 virtualbox 操作環境 utunbu 10.04 編譯環境 gcc 4.6.x 作業系統是乙個軟體,也需要通過某種機制載入並執行它。在這裡我們將通過另外乙個更加簡單的軟體 bootloader來完成這些工作。為此,我們需要完成乙個能夠切換到x86的保護模式並顯示字元的bootloa...

基於ucore的作業系統實驗lab1

練習1.1 1 先編譯鏈結生成kernel檔案 2 再編譯鏈結生成bootblock檔案 3 生成ucore.imgsign.c生成bootblock 1.2 檢視sign.c可以發現關鍵在於bootblock.out小於510bytes,且 buf 510 0x55 buf 511 0xaa 練習...