歡迎您光臨本站 註冊首頁

操作系統實驗好難——系統調用

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

作者:彆扭小孩

實驗內容
此次實驗的基本內容是:在Linux 0.11上添加兩個系統調用,並編寫兩個簡單的應用程序測試該系統調用。實驗過程分兩步。

第一步是在Linux 0.11上增加一個系統調用whoami(),原型如下:

int whoami(void);

該系統調用的功能是將用戶的名字(例如:Li Zhijun)列印到屏幕上。用戶的名字字元串寫在內核源代碼中。然後在Linux 0.11下編寫一個測試程序whoami,它調用whoami()獲得自己的名字,並在標準輸出設備(通常就是屏幕上)列印字元串「I am XXX.」。返回值是任意非負數。

第二步在Linux 0.11上再添加一個系統調用iam(),其介面是:

int iam(const char * name);

完成的功能是將用戶程序中傳入的字元串參數name的內容拷貝到核心態數據段中。要求name的長度不能超過20個字元。可以假設在核心態數據段中有一個全局變數:char myname[21],iam將用戶態數據name拷貝到核心態數據myname中。返回值是拷貝的字元數。如果name的字元個數超出了myname的存儲能力,則返回「-EINVAL」。

然後修改的上面的whoami(),新的原型為:

int whoami(char* name, unsigned int size);

它不再向屏幕輸出任何內容,而是拷貝myname到name中,同時確保不會對name越界訪存(name的大小由size說明)。返回值是拷貝的字元數。如果size小於需要的空間,則返回「-EINVAL」。

然後再實現一個測試程序iam。最終要求的結果是:

$ iam lizhijun
$ whoami
I am lizhijun

[火星人 ] 操作系統實驗好難——系統調用已經有545次圍觀

http://coctec.com/docs/linux/show-post-185616.html