Linux作業系統實驗(2)

2021-08-03 03:40:07 字數 1640 閱讀 3445

核心模組的結構:

標頭檔案宣告。標頭檔案module.h和init.h是必不可少的。module.h是載入模組所需要的函式和符號定義;init.h中包含初始化和清楚函式的定義。如果載入是允許用                                    

戶傳遞引數,模組還應包括moduleparam.h。

模組許可宣告。用module_license巨集宣告此模組的許可證。

初始化和清理函式宣告。核心模組必須呼叫module_init和module_exit去註冊和清理函式。

核心的新增刪除:

insmod:該命令呼叫insmod程式,把需要載入的模組以目標**形式載入進核心中。 sudo insmod modulename

rmmod:呼叫rmmod命令,將已經載入到核心的模組從核心中解除安裝。 sudo rmmod modulename

dmesg:檢視核心系統日誌

lsmod:該命令顯示已載入到核心的所有模組資訊

核心模組的編譯與載入:

首先寫乙個makefile檔案。**如下

obj-m += hello.o                         #由此目標檔案生成模組 

current_path := $(shell pwd) #當前所在的路徑

linux_kernel := $(shell uname -r) #核心的版本號

#核心**所在的路徑

linux_kernel_path := /usr/src/linux-headers-$(linux_kernel)

#編譯all:

make -c $(linux_kernel_path) m=$(current_path) modules

#清除編譯生成的檔案

clean:

make -c $(linux_kernel_path) m=$(current_path) clean

通過核心模組顯示程序控制塊資訊

**如下

#include#include#include#include#include#include#includemodule_license("gpl");

static int num = -1;

module_param(num, int,s_irugo);

static int __init exp_init(void)

return 0;

} static void __exit exp_exit(void)

module_init(exp_init); /*進入核心的時候,呼叫exp_init */

module_exit(exp_exit); /*離開核心的時候,呼叫exp_exit */

操作指令如下:

$make //編譯

$sudo insmod hello.ko //新增核心模組

$dmesg //顯示核心系統日誌資訊 

$lsmod // 顯示已載入到核心的模組資訊

$sudo rmmod hello //刪除核心模組

作業系統實驗2

1 訊息的建立,傳送和接受。使用系統呼叫 msgget msgsnd msgrev 及msgctl 編制一長度為1k的訊息傳送和接受的程式。為了便於操作和觀察結果,用乙個程式做為 引子 先後fork 兩個子程序,server 和 client 程序通訊。server 端建立乙個key 為 75 的訊...

作業系統實驗2

2 當生產者 消費者分別由位於不同計算機上的若干程序充當時,如何設計實驗?給出設計方案和linux c語言實現 重要語句加上注釋 include include include include include include include include include include inclu...

Linux作業系統實驗

1.啟動ubuntu系統,開啟終端 或使用putty連線系統 如果未安裝ssh,可以使用sudo apt get install ssh 如圖1,命令 開啟終端 輸入sudo apt getinstall ssh 如果安裝失敗就要切換源 2.檢視系統資訊,並將以下檢視內容重定向新增到檔案system...