ホームページ  >  記事  >  システムチュートリアル  >  Linux システム コールの詳細: 数値を 3 乗して出力する新しいシステム コール

Linux システム コールの詳細: 数値を 3 乗して出力する新しいシステム コール

WBOY
WBOYオリジナル
2024-07-28 04:29:15562ブラウズ

深入探究 Linux 系统调用:新增计算数字三次方并打印的系统调用

目次

1. 設計の目的と要件

2. デザイン内容

3. 設備と環境

4. デザイン思考

5. 主なデータ構造とプロセス

6. 実験結果と結果分析

7.コース設計の概要

別紙1 コース設計守備記録

別紙2ソースプログラムリスト

1. 設計の目的と要件

このコースは、中学生が Linux システム コールの実装原理を理解し、Linux カーネル ソース コードを変更する方法と、新しいシステム コールを呼び出すための呼び出しプログラムをコンパイルする方法を習得できるように設計されています。中学生はこのコースを独立して完了し、システム コールの概念と実装を理解する必要があります。

2. デザイン内容

コンパイル済みカーネル手法オペレーティングシステムの原理と Linux システム実験を使用して、Linux カーネルを再コンパイルし、Linux のシステムコールを削減します。

操作系统原理与linux系统实验_linux操作系统原理与应用_操作系统原理linux篇

要件: (1) システムコールによって実装される関数: 数値の 3 乗を推定し、それをコピーします。 (2) 呼び出す別のプログラムを作成します。

3. 設備と環境

デバイス: VMware Workstation Pro

環境:Ubantu15.0.2

イメージ: ubuntu-16.04-desktop-amd64.iso

4. デザイン思考 4.1 デザインアイデア

Linux カーネルを変更し、新しいシステム コールを下げて、数値の 3 乗を推定してコピーする機能を実装します。これには、Linux カーネル ソース コードのダウンロード、変更、変更された Linux カーネルのコンパイル、システムへのインストールが含まれます。この新しいシステム コールを呼び出すプログラムを作成します。

在这里插入图片描述

4.2 主な手順

(1) 元のカーネルを表示します:

(2)新しいカーネルをダウンロードします:

操作系统原理linux篇_操作系统原理与linux系统实验_linux操作系统原理与应用

wgetオペレーティングシステムの原理とLinuxシステムの実験Linux移植」を選択し、Enterを押します。結果はご覧のとおりです

(3) ダウンロードしたインストールパッケージを /usr/src ディレクトリに接続し、ターミナルで次のコマンドを入力すると、結果は次のようになります

mvlinux-5.6.15.tar.gz/usr/src

cd/usr/src

tar-xvflinux-5.6.15.tar.gz

(4) スーパーエディター vim をダウンロードします (以前にダウンロード済み)。ダウンロードされていない場合は、sudoapt-get-yinstallvim を使用してダウンロードできます。

在这里插入图片描述

(5) 新しいシステムコール:

呼び出し関数宣言を追加: viminclude/linux/syscalls.h

#ifndef の前に asmlinkagelongsys_cube(intnum);

を追加します

linux操作系统原理与应用_操作系统原理linux篇_操作系统原理与linux系统实验

注: 編集モードに入り、追加後、Esc キーを押して Linux 移植に戻り、最後に Shift+: wq キーを押して保存して終了します。

(6) 呼び出し関数の定義を追加し、vimkernel/sys.cと入力し、記事の最後に関数を追加します

SYSCALL_DEFINE1(立方体,整数,数値){

intresult=numnumnum;

printk(“Theresultis%d.n”,result);

結果を返す;

(7)システムコール番号を追加

vimarch/x86/entry/syscalls/syscall_64.tbl と入力し、syscall_64.tbl ファイルに 439 項目を追加します

(8) カーネルのコンパイルに必要な依存関係パッケージをインストールします。

操作系统原理与linux系统实验_linux操作系统原理与应用_操作系统原理linux篇

リーリー

(9) カーネルを設定する

makemenuconfigと入力し、ポップアップインターフェースで[保存]->[OK]->[終了]->[終了]を実行します

(10)コンパイル

操作系统原理linux篇_linux操作系统原理与应用_操作系统原理与linux系统实验

[ターミナル] に make-j8 と入力すると (8 スレッドでコンパイルが開始されます)、約 1 時間かかり、図のようにコンパイルが完了します

makemodules および makemodules_install コマンドを入力して、モジュールのコンパイルとインストールをそれぞれ完了します。

(11)カーネルをインストールします

【ターミナル】makeinstallと入力

(12)システムを再起動します

[ターミナル] uname-r と入力してカーネルのバージョンを確認します。 図のように、カーネルが再コンパイルされました。

在这里插入图片描述

呼び出しプログラムをコンパイルします:

保存後終了し、[ターミナル]で gcctest.c-otest.out と ./test.out を実行してテスト結果を取得します

5. 主なデータ構造とプロセス

以上がLinux システム コールの詳細: 数値を 3 乗して出力する新しいシステム コールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。