BRK -systemanrop i C

BRK -systemanrop i C
Programmets diskontinuitet, som markerer avslutningen av prosessens datasegment, i.e., Programoppdelingen er den første stillingen etter gjennomføringen av det uinitialiserte datasegmentet, kan endres ved hjelp av BRK (). Å øke programbruddet tillater minnet til prosessen; Å redusere bruddet tillater minnet til prosessen. Når det beløpet er fornuftig, vil systemet ha nok minne, og prosessen overgår ikke sin maksimale datastørrelse, BRK () setter avslutningen på datasegmentet til verdien som er levert av ADDR. BRK () returnerer null hvis det lykkes. Hvis det kommer en feil, returneres -1. Systemfunksjonene BRK () og SBRK () brukes til å regulere mengden minne som er tildelt prosessens datasegment. Vanligvis blir disse funksjonene påkalt fra en større minnestyringsbibliotekfunksjon som Malloc. Programbruddet, som identifiserer slutten av prosessens HAP -del, blir flyttet rundt med BRK () og SBRK (). BRK () tildeler verdien av addr til avslutningen av HEAP -segmentet. SBRK () øker masseplassen til programmet ved å øke byte. Det tar deg tilbake til den tidligere programpausen. Den nåværende plasseringen av programpausen finner du ved å ringe SBRK () med bare en økning på 0.

Syntaks

#inkludere
int brk (void *end_data_segment);
void *sbrk (Intptr_t inkrement);

Forklaring av syntaks

BRK () -systemanropet får programmet til å bryte i sluttdatasegmentposisjonen. Sluttdatasegmentet er avrundet til neste sidegrenser siden virtuelt minne er tildelt i sideenheter. Forsøk på å senke programbruddverdien under startverdien vil helt sikkert resultere i uventet atferd, for eksempel en segmenteringsfeil når du prøver å få tilgang til data i nå tilgjengelige deler av de initialiserte eller uinitialiserte datasegmentene. Flere faktorer bestemmer den nøyaktige øvre grensen for hvor programbruddet kan plasseres.

Hvorfor bruke BRK () Systemanrop i C

BRK () -funksjonen brukes til å endre mengden minne som er tildelt den som ringer prosessen. Modifiseringen gjøres ved å endre bruddverdien av prosessen til Addr og gi det nødvendige antallet plass. BRK () -funksjonen brukes til å endre mengden minne som er tildelt den som ringer prosessen. Når bruddverdien stiger, gjør også mengden tildelte rom. Det nylig tildelte rommet har en verdi på 0 tildelt den. Verdiene til det omfordelte rommet tømmes ikke hvis programmet først reduserer og etterpå øker bruddverdien.

Forutsetninger

  • Tilgang til Ubuntu 20.04 operativsystem
  • Installasjon av GCC -kompilatoren

Eksempel for å forklare BRK () i C

Vi har designet det enkleste eksemplet for å utdype konseptet for å bruke BRK () systemanrop i C. La oss opprette en fil med .c utvidelse ved å bruke nano -kommandoen i skallet. Utfør vedlagte kommandoen nedenfor i skallet:

$ Nano BRK1.c

I Linux-operativsystemer er GNU Nano en enkel kommandolinje-tekstredigerer. Den har alle de grunnleggende funksjonene du antar fra en tekstredigerer, i tillegg til noen flere. Ved utførelse vil filen bli åpnet i GNU -redaktøren. Skriv den viste koden i filen din med få endringer i den, avhengig av arbeidskravene dine.

I koden som er vedlagt i ovennevnte skjermbilde, blir argumentant forkortet som ARGC, og argumentverdier er forkortet som ARGV. Dette er variablene som sendes til hovedfunksjonen når den begynner å løpe. Ved kjøretid henter SYSCONF -funksjonen konfigurasjonsinformasjon. sysconf med argumentet _sc Pagesize er riktig grensesnitt for å forhøre seg om sidestørrelse. SBRK () øker programmets lagringsplass ved å øke byte. Den nåværende plasseringen av programpausen finner du ved å ringe SBRK () med en inkrementell på 0. BRK () -systemanropet får programmet til å bryte i sluttdatasegmentposisjonen. Sluttdatasegmentet er avrundet til neste sidegrense fordi virtuelt minne er tildelt i sideenheter.

Utgangen fra koden kan vises ved å utføre den siterte instruksjonen under Ubuntu 20.04 Linux operativsystemterminal.

$ GCC BRK1.c
$./en.ute

I tilfelle GCC ikke er installert i Ubuntu 20.04 Operativsystem, installer det ved å kjøre den vedlagte kommandoen nedenfor i skallet:

$ sudo apt install GCC

Utgangen vises i ovennevnte skjermbilde som presenterer sidestørrelse, programbrudd, størrelse på røye osv.

Konklusjon

Denne artikkelen handlet om BRK () systemanrop på programmeringsspråk. Vi har prøvd vårt beste for å forklare konseptet BRK () systemanrop på programmeringsspråk og dets bruk. Et av eksemplene er blitt forklart i detalj for din forståelse. Implementering av dette eksemplet med de nødvendige endringene vil lære deg BRK () -systemanropsbruken på C -programmeringsspråket.