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 練習...