BRK -Systemaufruf in C

BRK -Systemaufruf in C
Die Programmdiskontinuität, die die Beendigung des Datensegments des Prozesses markiert, i, i.e., Die Programmaufschlüsselung ist die erste Position nach Abschluss des nicht initialisierten Datensegments und kann mit BRK () geändert werden. Das Erhöhen der Programmunterbrechung ermöglicht das Speicher des Prozesses. Durch die Reduzierung des Pauses ermöglicht das Speicher auf den Prozess. Wenn dieser Betrag sinnvoll ist, hätte das System genügend Speicher und der Prozess übertrifft seine maximale Datengröße nicht, BRK () legt das Ende des Datensegments auf den von dem ADDR bereitgestellten Wert fest. BRK () gibt Null zurück, wenn es erfolgreich ist. Wenn ein Fehler kommt, wird -1 zurückgegeben. Die Systemfunktionen BRK () und SBRK () wird verwendet, um die Menge an Speicher zu regulieren, die dem Datensegment des Prozesses zugewiesen wird. Normalerweise werden diese Funktionen aus einer größeren Speicherverwaltungsbibliotheksfunktion wie Malloc aufgerufen. Die Programmpause, die das Ende des Haufens des Prozesses identifiziert, wird mit BRK () und SBRK () bewegt. BRK () weist den Wert von ADDR dem Ende des Heap -Segments zu. SBRK () erhöht den Haufen des Programms durch Inkrement -Bytes. Sie bringt Sie zurück zur früheren Programmpause. Der gegenwärtige Ort der Programmpause findet sich an SBRK () mit nur einer Erhöhung von 0.

Syntax

#enthalten
int brk (void *end_data_segment);
void *SBRK (INTPTR_T -Inkrement);

Erläuterung der Syntax

Der BRK () -Systemaufruf bewirkt, dass das Programm in der Position des Enddatensegments durchbricht. Das Enddatensegment ist an die nächsten Seitengrenzen abgerundet, da der virtuelle Speicher in Seiteneinheiten zugewiesen wird. Versuche, den Programm des Programms unter seinem Anfangswert unter dem Wert zu senken, führen sicherlich zu unerwartetem Verhalten, z. Mehrere Faktoren bestimmen die genaue Obergrenze dafür, wo die Programmunterbrechung platziert werden kann.

Warum Brk () Systemanruf in C verwenden

Die BRK () -Funktion wird verwendet, um die dem Anruferprozess zugewiesene Speichermenge zu ändern. Die Änderung erfolgt durch Änderung des Bruchwerts des Prozesses in ADR und der Bereitstellung der erforderlichen Anzahl von Speicherplatz. Die BRK () -Funktion wird verwendet, um die dem Anruferprozess zugewiesene Speichermenge zu ändern. Wenn der Bruchwert steigt, ist auch die Menge des zugewiesenen Raums. Der neu zugewiesene Raum hat einen Wert von 0, der ihm zugewiesen ist. Die Werte des realgewierten Raum.

Voraussetzungen

  • Zugang zu Ubuntu 20.04 Betriebssystem
  • Installation des GCC -Compilers

Beispiel, um BRK () in C zu erklären

Wir haben das einfachste Beispiel entwickelt, um das Konzept für die Verwendung des BRK () -Systemaufrufs C in C auszuarbeiten. Erstellen wir eine Datei mit der .c Erweiterung mit dem Befehl nano in der Shell verwenden. Führen Sie den angehängten Befehl unten in der Shell aus:

$ nano brk1.C

In Linux-Betriebssystemen ist GNU Nano ein einfacher Befehlszeilen-Texteditor. Es verfügt über alle grundlegenden Merkmale, die Sie von einem Texteditor annehmen würden, sowie einige mehr. Bei der Ausführung wird die Datei im GNU -Editor geöffnet. Schreiben Sie den angezeigten Code in Ihrer Datei mit wenigen Änderungen in der IT abhängig von Ihren Arbeitsanforderungen.

In dem im obigen Screenshot angehängten Code wird die Argumentenzahl als argc abgekürzt, und die Argument -Werte werden als Argv abgekürzt. Dies sind die Variablen, die an die Hauptfunktion übergeben werden, wenn sie zu laufen beginnt. Zur Laufzeit ruft die Sysconf -Funktion Konfigurationsinformationen ab. sysconf mit dem argument _sc pageSize ist die richtige Schnittstelle, die Sie nach der Seitengröße erkundigen können. SBRK () erhöht den Speicherplatz des Programms durch Erhöhen von Bytes. Der gegenwärtige Ort der Programmpause finden Sie unter Aufrufen von SBRK () mit einer Inkrementellen von 0. Der BRK () -Systemaufruf bewirkt, dass das Programm in der Position des Enddatensegments durchbricht. Das Enddatensegment ist bis zur nächsten Seitengrenze abgerundet, da der virtuelle Speicher in Seiteneinheiten zugewiesen ist.

Die Ausgabe des Codes kann angezeigt werden.04 Linux -Betriebssystemanschluss.

$ GCC BRK1.C
$./A.aus

Falls GCC nicht in Ihrem Ubuntu 20 installiert ist.04 Betriebssystem, installieren Sie es, indem Sie den angehängten Befehl unten in der Shell ausführen:

$ sudo APT Installieren Sie GCC

Die Ausgabe wird in dem oben genannten Screenshot-Präsentationsseitengröße, der Programmverlustadresse, der Größe des Zeichens usw. angezeigt.

Abschluss

In diesem Artikel ging es um BRK () -Systemanruf in C -Programmiersprache C. Wir haben unser Bestes versucht, das Konzept des BRK () -Systemaufrufs in C -Programmiersprache und seiner Verwendung zu erklären. Eines der Beispiele wurde ausführlich für Ihr Verständnis erläutert. Durch die Implementierung dieses Beispiels mit den erforderlichen Änderungen werden Ihnen die Verwendung von BRK () Systemanrufe in der C -Programmiersprache beigebracht.