實驗要求:
1.加入系統呼叫,在終端輸出資訊
2.編寫使用者態程式,執行輸出
實驗步驟
1.修改實驗一的原始碼
終端進入
/usr/src/linux-4.6.4/usr/include/asm/unistd_64.h
這裡64是64位,32位應為32
2.修改系統呼叫號
查詢系統呼叫號,不同的系統號不同,應該為未使用過的
3.簡單起見按照第一篇文章的函式修改sys.c檔案
gedit /usr/src/linux-4.6.4/kernel/sys.c
在檔案最後新增函式(功能為輸出姓名學號
4.加入 define __nr_yssyscall 329asmlinkage int sys_yssyscall(void)
我的電腦裡syscall_64.tbl的位置很奇怪,若找不到搜尋一下就好了cd /usr/src/linux-4.6.4/arch/x86/entry/syscalls
gedit syscall_64.tbl
同理,若是32位即找對應的tbl檔案
5.make menuconfig
詳細介紹
6.重新編譯核心
清除上次痕跡 make mrproper
編譯
7.reboot 重新啟動 進入新核心
8.編寫使用者態檔案
在主檔案目錄(/home)下建立資料夾
mkdir test
進入/home/test/目錄下
cd test
(1)建立檔案test.c
gedit test.c
**如下
(2)執行命令編譯#include
#define __nr_yssyscall 329
int main()
gcc –o test test.c
(3)編譯成功後
./testhello
(4)檢視核心日誌
檢視系統呼叫在核心空間的運**況
思考問題
「什麼是作業系統的系統呼叫(system call)?系統呼叫過多會引起程序的效能開銷麼?為什麼?」linux核心中設定了一組用於實現各種系統功能的子程式,稱為系統呼叫。
使用者可以通過系統呼叫命令在自己的應用程式中呼叫它們。系統呼叫和普通的函式呼叫非常相似。
區別僅僅在於,系統呼叫由作業系統核心提供,執行於核心態;而普通的函式呼叫由函式庫或使用者自己提供,執行於使用者態。系統呼叫過多會引起程序的效能開銷,因為系統呼叫需要從使用者空間陷入核心空間,處理完後,又需要返回使用者空間。其中除了系統呼叫服務例程的實際耗時外,陷入/返回過程和系統呼叫處理程式(查系統呼叫表、儲存\恢復使用者現場)也需要花銷一些時間,這些時間加起來就是乙個系統呼叫的響應速度。
系統呼叫對效能要求很苛刻,因為它需要陷入核心執行,所以和其他核心程式一樣要求**簡潔、執行迅速。
在Android中加入GOOGLE統計系統
google的統計分析系統,不僅在傳統web統計中應用很廣,在android 應用中,都可以應用的。步驟如下 1 申請好google 分析統計系統的帳號 4 同時設定好android.permission.internet 和 android.permission.access network st...
關於北航2系調劑
首先所有的調劑都是複試成績大於180分。低於180分便失去了本校調劑資格,只能去找別的學校的進行調劑。1.報考是學碩的調劑 學碩調劑的話,只要錄取一定就是本部,未被錄取可以調劑積體電路專碩或者學碩 這個調劑也是自己報名參加,2系會在成績公布那天下午或者晚上把2系沒錄滿的專業說出來,你看你想報名調劑哪...
Monodepth2 加入IMU資料
為了將imu感測器資料融合到網路之中,需要讓imu和同步輸入到訓練網路中 1.通過pykitti讀取imu資料 在kitti dataset.py 中kittirawdateset 中通過pykitti utils.load oxts packet ande pose 獲取oxts檔案 def lo...