ホームページ > 記事 > システムチュートリアル > Linux システム コールの詳細: 数値を 3 乗して出力する新しいシステム コール
目次
1. 設計の目的と要件
2. デザイン内容
3. 設備と環境
4. デザイン思考
5. 主なデータ構造とプロセス
6. 実験結果と結果分析
7.コース設計の概要
別紙1 コース設計守備記録
別紙2ソースプログラムリスト
1. 設計の目的と要件
このコースは、中学生が Linux システム コールの実装原理を理解し、Linux カーネル ソース コードを変更する方法と、新しいシステム コールを呼び出すための呼び出しプログラムをコンパイルする方法を習得できるように設計されています。中学生はこのコースを独立して完了し、システム コールの概念と実装を理解する必要があります。
2. デザイン内容
コンパイル済みカーネル手法オペレーティングシステムの原理と 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)新しいカーネルをダウンロードします:
「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);
を追加します
注: 編集モードに入り、追加後、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) カーネルのコンパイルに必要な依存関係パッケージをインストールします。
リーリー
(9) カーネルを設定する
makemenuconfigと入力し、ポップアップインターフェースで[保存]->[OK]->[終了]->[終了]を実行します
(10)コンパイル
[ターミナル] に make-j8 と入力すると (8 スレッドでコンパイルが開始されます)、約 1 時間かかり、図のようにコンパイルが完了します
makemodules および makemodules_install コマンドを入力して、モジュールのコンパイルとインストールをそれぞれ完了します。
(11)カーネルをインストールします
【ターミナル】makeinstallと入力
(12)システムを再起動します
[ターミナル] uname-r と入力してカーネルのバージョンを確認します。 図のように、カーネルが再コンパイルされました。
呼び出しプログラムをコンパイルします:
保存後終了し、[ターミナル]で gcctest.c-otest.out と ./test.out を実行してテスト結果を取得します
5. 主なデータ構造とプロセス
以上がLinux システム コールの詳細: 数値を 3 乗して出力する新しいシステム コールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。