CentOS on Mac 2 加入系統呼叫

2021-07-15 16:34:24 字數 2323 閱讀 5302

實驗要求:

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

在檔案最後新增函式(功能為輸出姓名學號

asmlinkage int sys_yssyscall(void)

4.加入 define __nr_yssyscall 329

cd /usr/src/linux-4.6.4/arch/x86/entry/syscalls

gedit syscall_64.tbl

我的電腦裡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
**如下

#include

#define __nr_yssyscall 329

int main()

(2)執行命令編譯

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