nachos 系統呼叫程式設計實踐

2021-10-05 22:37:26 字數 1978 閱讀 2826

nachos系統呼叫的實現

cd nachos-4.1/code/test

vim start.s

.globl halt

.ent halt

halt:

addiu $2,$0,sc_halt //將sc_halt與$0暫存器($0暫存器恒為0)內容相加,並存放到暫存器$2,獲取中斷號,唯一標誌乙個系統呼叫

syscall //呼叫sc_halt

j $31 //無條件跳轉到$31(存放程式的返回位址)

.end halt

修改syscall

cd nachos-4.1/code/usrprogr

vim syscall.h

#define	sc_add	42

#define sc_sub 43

#define sc_mul 44

#define sc_pow 45

vim exception.cc
case sc_add:

debug

(dbgsys,

"add "

<< kernel->machine->

readregister(4

)<<

" + "

<< kernel->machine->

readregister(5

)<<

"\n");

/* process sysadd systemcall*/

int result;

//4,5暫存器相加

result =

sysadd

(/* int op1 */

(int

)kernel->machine->

readregister(4

),/* int op2 */

(int

)kernel->machine->

readregister(5

));//輸出除錯資訊

debug

(dbgsys,

"add returning with "

<< result <<

"\n");

/* prepare result */

kernel->machine->

writeregister(2

,(int)result)

;//結果儲存到到2號暫存器

/* modify return point */

//對pc的值進行設定

return

;assertnotreached()

;break

;

vim ksyscall.h
int

sysadd

(int op1,

int op2)

intsyssub

(int op1,

int op2)

intsysmul

(int op1,

int op2)

intsysppow

(int op1,

int op2)

return result;

}

cd build.linux

make clean

make

cd /test

vim mkefile

make clean

make

./nachos -x test.noff -d u

修改

sources = add.c halt.c matmult.c shell.c sort.c test.c

Linux系統程式設計 系統呼叫

系統呼叫,顧名思義,說的是作業系統提供給使用者程式呼叫的一組 特殊 介面。使用者程式可以通過這組 特殊 介面來獲得作業系統核心提供的服務,比如使用者可以通過檔案系統相關的呼叫請求系統開啟檔案 關閉檔案或讀寫檔案,可以通過時鐘相關的系統呼叫獲得系統時間或設定定時器等。從邏輯上來說,系統呼叫可被看成是乙...

Linux系統呼叫 檔案程式設計

檔案描述符 在linux系統中,開啟的檔案會對應乙個數字 非負整數 這個由系統分配的數字我們 稱之為檔案描述符 file descriptor 具體可以看下這裡的 linux中的檔案描述符與開啟檔案之間的關係 學習目標 1 學習系統呼叫的函式 open,close,read,write,creat,...

Linux程式設計之系統呼叫

1 linux的系統呼叫 系統呼叫system calls 系統呼叫 system calls linux api 是一些在應用程式裡呼叫的函式,這些函式間接地調 用了os中的功能 呼叫了linux核心的功能 在地位上,與windows api對等 在本質上,只呼叫了linux kernel 在形式...