Appel du système BRK dans C

Appel du système BRK dans C
La discontinuité du programme, qui marque la fin du segment de données du processus, i.e., La répartition du programme est la première position après l'achèvement du segment de données non initialisé, peut être modifiée à l'aide de BRK (). L'augmentation de la rupture du programme permet à la mémoire du processus; La réduction de la rupture permet à la mémoire du processus. Lorsque ce montant est raisonnable, le système aurait suffisamment de mémoire et le processus ne dépasse pas sa taille de données maximale, BRK () définit la fin du segment de données à la valeur fournie par l'addr. Brk () renvoie zéro s'il réussit. S'il y a une erreur, -1 est renvoyé. Le système fonctionne BRK () et sbrk () est utilisé pour réguler la quantité de mémoire allouée au segment de données du processus. Habituellement, ces fonctions sont invoquées à partir d'une fonction de bibliothèque de gestion de mémoire plus grande comme Malloc. La pause du programme, qui identifie la fin de la section du tas du processus, est déplacée avec BRK () et sbrk (). BRK () attribue la valeur de Addr à la fin du segment du tas. sbrk () augmente l'espace de tas du programme par incrément octets. Il vous ramène à la pause du programme précédent. L'emplacement actuel de la pause du programme peut être trouvé en appelant SBRK () avec juste une augmentation de 0.

Syntaxe

#inclure
int brk (void * end_data_segment);
void * sbrk (INTPTR_T Incrément);

Explication de la syntaxe

L'appel du système BRK () provoque la rupture du programme à la position du segment des données finales. Le segment de données final est arrondi aux limites de la page suivante, car la mémoire virtuelle est allouée en unités de page. Les tentatives de baisse de la valeur de rupture du programme en dessous de sa valeur initiale entraîneront certainement un comportement inattendu, comme un défaut de segmentation lors de la tentative d'accès aux données dans des parties désormais inaccessibles des segments de données initialisés ou non initialisés. Plusieurs facteurs déterminent la limite supérieure exacte de l'endroit où la rupture du programme peut être placée.

Pourquoi utiliser BRK () Call System in C

La fonction BRK () est utilisée pour modifier la quantité de mémoire allouée au processus de l'appelant. La modification est apportée en modifiant la valeur de rupture du processus à Addr et en fournissant le nombre nécessaire d'espace. La fonction BRK () est utilisée pour modifier la quantité de mémoire allouée au processus de l'appelant. À mesure que la valeur de rupture augmente, la quantité d'espace alloué aussi. L'espace nouvellement alloué a une valeur de 0 attribuée. Les valeurs de l'espace réaffecté ne sont pas vidé.

Conditions préalables

  • Accès à Ubuntu 20.04 Système d'exploitation
  • Installation du compilateur GCC

Exemple pour expliquer Brk () en C

Nous avons conçu l'exemple le plus simple pour élaborer le concept d'utilisation de l'appel du système BRK () en C. Créons un fichier avec le .Extension C en utilisant la commande nano dans le shell. Exécutez la commande ci-dessous annexée dans le shell:

$ nano brk1.c

Dans les systèmes d'exploitation Linux, GNU Nano est un simple éditeur de texte en ligne de commande. Il a toutes les fonctionnalités fondamentales que vous assumeriez d'un éditeur de texte, ainsi que quelques autres. Lors de l'exécution, le fichier sera ouvert dans l'éditeur GNU. Écrivez le code affiché dans votre fichier avec quelques modifications en fonction de vos exigences de travail.

Dans le code joint dans la capture d'écran ci-dessus, le nombre d'arguments est abrégé comme Argc, et les valeurs d'argument sont abrégées comme argv. Ce sont les variables qui sont transmises à la fonction principale lorsqu'il commence à fonctionner. Au moment de l'exécution, la fonction sysconf récupère les informations de configuration. Sysconf avec l'argument _SC PageSize est la bonne interface pour se renseigner sur la taille de la page. SBRK () augmente l'espace de stockage du programme en augmentant les octets. L'emplacement actuel de la rupture du programme peut être trouvé en appelant SBRK () avec un incrémentiel de 0. L'appel du système BRK () provoque la rupture du programme à la position du segment des données finales. Le segment de données final est arrondi jusqu'à la limite de la page suivante car la mémoire virtuelle est attribuée en unités de page.

La sortie du code peut être affichée en exécutant l'instruction ci-dessous dans l'ubuntu 20.04 Terminal du système d'exploitation Linux.

$ gcc brk1.c
$./un.dehors

Au cas où GCC n'est pas installé dans votre Ubuntu 20.04 Système d'exploitation, installez-le en exécutant la commande ci-dessous annexe dans le shell:

$ sudo apt install gcc

La sortie est affichée dans la capture d'écran ci-dessus présentant la taille de la page, l'adresse de rupture du programme, la taille de l'emploi, etc.

Conclusion

Cet article portait sur BRK () Call System in C en C Langage de programmation. Nous avons fait de notre mieux pour expliquer le concept d'appel du système BRK () dans le langage de programmation C et son utilisation. L'un des exemples a été expliqué en détail pour votre compréhension. La mise en œuvre de cet exemple avec les modifications requises vous apprendra l'utilisation des appels du système BRK () dans le langage de programmation C.