Chiama di sistema BRK in C

Chiama di sistema BRK in C
La discontinuità del programma, che segna la risoluzione del segmento di dati del processo, i.e., La rottura del programma è la prima posizione in seguito al completamento del segmento di dati non inizializzato, può essere modificata utilizzando BRK (). L'aumento della rottura del programma consente la memoria al processo; Ridurre l'interruzione consente la memoria al processo. Quando tale importo è sensibile, il sistema avrebbe una memoria sufficiente e il processo non supera la dimensione massima dei dati, BRK () imposta la fine del segmento di dati sul valore fornito dall'ADDR. BRK () restituisce zero se ci riesce. Se arriva un errore, -1 viene restituito. Il sistema funzioni brk () e sbrk () vengono utilizzati per regolare la quantità di memoria assegnata al segmento di dati del processo. Di solito, queste funzioni sono invocate da una più ampia funzione di libreria di gestione della memoria come Malloc. La pausa del programma, che identifica la fine della sezione heap del processo, viene spostata con BRK () e SBRK (). BRK () assegna il valore di ADDR alla fine del segmento heap. SBRK () aumenta lo spazio heap del programma per incremento di byte. Ti riporta alla pausa del programma precedente. L'attuale posizione della pausa del programma è disponibile chiamando SBRK () con un solo aumento di 0.

Sintassi

#includere
int brk (void *end_data_segment);
void *sbrk (incremento intptr_t);

Spiegazione della sintassi

La chiamata di sistema BRK () fa sì che il programma si rompa nella posizione del segmento di dati finali. Il segmento dei dati finali è arrotondato fino ai confini della pagina successiva poiché la memoria virtuale è allocata nelle unità di pagina. I tentativi di abbassare il valore di interruzione del programma al di sotto del suo valore iniziale comporteranno sicuramente un comportamento imprevisto, come un errore di segmentazione quando si tenta di accedere ai dati in parti ormai inaccessibili dei segmenti di dati inizializzati o non inizializzati. Diversi fattori determinano il limite superiore esatto per il luogo in cui è possibile inserire l'interruzione del programma.

Perché utilizzare la chiamata di sistema BRK () in C

La funzione BRK () viene utilizzata per modificare la quantità di memoria allocata al processo del chiamante. La modifica viene apportata alterando il valore di interruzione del processo ad ADDR e fornendo il numero necessario di spazio. La funzione BRK () viene utilizzata per modificare la quantità di memoria allocata al processo del chiamante. Man mano che il valore di pausa aumenta, aumenta anche la quantità di spazio assegnato. Lo spazio appena assegnato ha un valore di 0 assegnato. I valori dello spazio rialoccato non vengono svuotati se il programma prima diminuisce e successivamente aumenta il valore di interruzione.

Prerequisiti

  • Accesso a Ubuntu 20.04 Sistema operativo
  • Installazione del compilatore GCC

Esempio per spiegare BRK () in C

Abbiamo progettato l'esempio più semplice per elaborare il concetto per l'utilizzo della chiamata di sistema BRK () in C. Creiamo un file con il .c estensione usando il comando nano nella shell. Eseguire il comando aggiunto di seguito nella shell:

$ nano brk1.C

In Linux Operating Systems, GNU Nano è un semplice editor di testo di comando. Ha tutte le funzionalità fondamentali che assumeresti da un editore di testo, oltre a alcune altre. Al momento dell'esecuzione, il file verrà aperto nell'editor GNU. Scrivi il codice visualizzato nel file con pochi emendamenti in esso a seconda delle esigenze di lavoro.

Nel codice allegato nello screenshot sopra, il conteggio degli argomenti è abbreviato come argc e i valori degli argomenti sono abbreviati come argv. Queste sono le variabili che vengono passate alla funzione principale quando inizia a funzionare. In runtime, la funzione SYSCONF recupera le informazioni di configurazione. sysconf con l'argomento _sc Pageize è l'interfaccia corretta per indagare sulla dimensione della pagina. SBRK () aumenta lo spazio di archiviazione del programma aumentando i byte. L'attuale posizione dell'interruzione del programma è disponibile chiamando SBRK () con un incrementale di 0. La chiamata di sistema BRK () fa sì che il programma si rompa nella posizione del segmento di dati finali. Il segmento dei dati finali è arrotondato fino al limite della pagina successiva perché la memoria virtuale è assegnata nelle unità di pagina.

L'output del codice può essere visualizzato eseguendo le istruzioni citate di seguito in Ubuntu 20.04 Terminale del sistema operativo Linux.

$ GCC BRK1.C
$./UN.fuori

Nel caso in cui GCC non sia installato nel tuo Ubuntu 20.04 Sistema operativo, installalo eseguendo il comando aggiunto di seguito nella shell:

$ sudo APT Installa GCC

L'output viene visualizzato nella schermata di presentazione di Pagina di Pagina sopra attaccata, Indirizzo di interruzione del programma, dimensioni di Char, ecc.

Conclusione

Questo articolo riguardava il linguaggio di sistema BRK () in linguaggio di programmazione C. Abbiamo fatto del nostro meglio per spiegare il concetto di sistema di sistema BRK () in linguaggio di programmazione C e il suo utilizzo. Uno degli esempi è stato spiegato in dettaglio per la tua comprensione. L'implementazione di questo esempio con le modifiche richieste ti insegnerà il sistema BRK () Call Utilizzo nel linguaggio di programmazione C.