Maison  >  Article  >  Tutoriel système  >  Une plongée approfondie dans les appels système Linux : nouvel appel système pour créer un numéro et l'imprimer

Une plongée approfondie dans les appels système Linux : nouvel appel système pour créer un numéro et l'imprimer

WBOY
WBOYoriginal
2024-07-28 04:29:15567parcourir

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

Table des matières

1. Objectif et exigences de conception

2. Concevoir du contenu

3. Équipement et environnement

4. Pensée conceptuelle

5. Principales structures et processus de données

6. Résultats des tests expérimentaux et analyse des résultats

7. Résumé de la conception du cours

Pièce jointe 1 Dossier de soutenance de conception de cours

Liste des programmes sources de la pièce jointe 2

1. Objectif et exigences de conception

Ce cours est conçu pour permettre aux collégiens de comprendre les principes de mise en œuvre des appels système Linux, de maîtriser comment modifier le code source du noyau Linux et comment compiler des programmes appelants pour appeler de nouveaux appels système. Les collégiens doivent suivre ce cours de manière indépendante et comprendre le concept et la mise en œuvre des appels système.

2. Concevoir du contenu

À l'aide de la méthode du noyau compiléPrincipes du système d'exploitation et expériences du système Linux, recompilez le noyau Linux et réduisez un appel système sous Linux.

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

Exigences : (1) Fonction implémentée par appel système : estimer le cube d'un nombre et le copier. (2) Écrivez un autre programme à appeler.

3. Équipement et environnement

Appareil : VMware Workstation Pro

Environnement : Ubantu15.0.2

Image : ubuntu-16.04-desktop-amd64.iso

4. Pensée de conception 4.1 Idée de conception

Modifiez le noyau Linux et abaissez un nouvel appel système pour implémenter la fonction d'estimation du cube d'un nombre et de sa copie, y compris le téléchargement du code source du noyau Linux, la modification, la compilation du noyau Linux modifié et son installation dans le système, Écrivez un programme qui appelle ce nouvel appel système.

在这里插入图片描述

4.2 Principales étapes

(1) Afficher le noyau d'origine :

(2)Téléchargez le nouveau noyau :

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

wgetPrincipes du système d'exploitation et expérience du système LinuxTransplantation Linux, puis appuyez sur Entrée. Le résultat est comme indiqué

(3) Connect the downloaded installation package to the /usr/src directory, and then unzip it. Enter the following command in the terminal, and the result is as shown

mvlinux-5.6.15.tar.gz/usr/src

cd/usr/src

tar-xvflinux-5.6.15.tar.gz

(4) Download the super editor vim (already downloaded before). I have already downloaded it here. If it is not downloaded, you can use sudoapt-get-yinstallvim to download it

在这里插入图片描述

(5) New system call:

Add calling function declaration: viminclude/linux/syscalls.h

Add asmlinkagelongsys_cube(intnum);

before #ifndef

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

Note: i enters the editing mode, after adding, Esc returns to linux transplantation, and finally shift+: hit wq to save and exit.

(6) Add the calling function definition, enter vimkernel/sys.c, and add the function at the end of the article

SYSCALL_DEFINE1(cube,int,num){

intresult=numnumnum;

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

returnresult;

(7)Add system call number

Enter vimarch/x86/entry/syscalls/syscall_64.tbl and add 439 items in the syscall_64.tbl file

(8) Install the dependency packages required to compile the kernel:

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

apt-get -y install make
apt-get -y install libncurses5-dev
apt-get -y install flex
apt-get -y install bison
apt-get -y install libssl-dev
apt-get -y install libelf-dev

(9) Configure the kernel

Enter makemenuconfig and execute [Save]->[Ok]->[Exit]->[Exit] in the pop-up interface

(10)Compile

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

Type make-j8 in [Terminal] (8 threads start compilation), it will take about an hour, and the compilation is completed as shown in the picture

Type the makemodules and makemodules_install commands to complete the compilation and installation of the module respectively.

(11)Install kernel

【Terminal】Input makeinstall

(12)Restart the system

[Terminal] Enter uname-r to check the kernel version. As shown in the picture, the kernel has been recompiled

在这里插入图片描述

Compile calling program:

Exit after saving, and execute gcctest.c-otest.out and ./test.out in [Terminal] to get the test results

5. Main data structures and processes

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn