BRK System Call in C

BRK System Call in C
Nieciągłość programu, która oznacza zakończenie segmentu danych procesu, i.mi., Podział programu jest pierwszą pozycją po zakończeniu segmentu danych niezainicjowanego, można zmienić za pomocą BRK (). Zwiększenie przerwy programu pozwala na pamięć do procesu; Zmniejszenie przerwy pozwala na pamięć do procesu. Gdy kwota ta jest rozsądna, system miałby wystarczającą pamięć, a proces nie przewyższa maksymalnego rozmiaru danych, Brk () ustawia zakończenie segmentu danych na wartość dostarczoną przez AdDR. Brk () zwraca zero, jeśli się powiedzie. Jeśli pojawia się błąd, -1 jest zwracany. Funkcje systemu brk () i sbrk () jest wykorzystywane do regulacji ilości pamięci przydzielonej na segment danych procesu. Zwykle funkcje te są wywoływane z większej funkcji biblioteki zarządzania pamięcią, taką jak Malloc. Break programu, który identyfikuje koniec sekcji sterty procesu, jest poruszany za pomocą BRK () i SBRK (). brk () przypisuje wartość ADDR do zakończenia segmentu sterty. SBRK () zwiększa przestrzeń sterty programu o przyrost bajtów. Zabiera Cię z powrotem do wcześniejszej przerwy programu. Obecną lokalizację przerwy w programie można znaleźć, dzwoniąc SBRK () z podwyżką 0.

Składnia

#włączać
int brk (void *end_data_segment);
void *sbrk (increment intptr_t);

Objaśnienie składni

Połączenie systemowe BRK () powoduje pęknięcie programu w pozycji segmentu danych końcowych. Segment danych końcowych jest zaokrąglany do następnej strony, ponieważ pamięć wirtualna jest przydzielona w jednostkach stron. Próby obniżenia wartości przerwania programu poniżej jego wartości początkowej z pewnością spowodują nieoczekiwane zachowanie, takie jak usterka segmentacji podczas próby dostępu. Kilka czynników określa dokładny górny limit dla miejsca, w którym można umieścić zerwanie programu.

Dlaczego warto używać połączenia systemowego BRK () w C

Funkcja brk () służy do modyfikacji ilości pamięci przydzielonej do procesu dzwoniącego. Modyfikacja jest dokonywana przez zmianę wartości przerwania procesu w celu dodania i zapewnienie niezbędnej liczby przestrzeni. Funkcja brk () służy do modyfikacji ilości pamięci przydzielonej do procesu dzwoniącego. Wraz ze wzrostem wartości przerwy również ilość przydzielonej przestrzeni. Nowo przydzielona przestrzeń ma wartość 0 przypisaną do niej. Wartości realokowanej przestrzeni nie są opróżniane, jeśli program pierwszy spadnie, a następnie zwiększa wartość przerwania.

Wymagania wstępne

  • Dostęp do Ubuntu 20.04 System operacyjny
  • Instalacja kompilatora GCC

Przykład wyjaśnienia brk () w c

Zaprojektowaliśmy najprostszy przykład, aby opracować koncepcję korzystania z wywołania systemu BRK (). Utwórzmy plik z .rozszerzenie C za pomocą polecenia Nano w skorupce. Wykonaj dołączone poniższe polecenie w powłoce:

$ nano brk1.C

W systemach operacyjnych Linux GNU Nano jest prostym edytorem tekstu wiersza poleceń. Ma wszystkie fundamentalne funkcje, które można założyć od edytora tekstu, a także kilka innych. Po wykonaniu plik zostanie otwarty w Edytorze GNU. Napisz wyświetlany kod w pliku z kilkoma poprawkami w zależności od wymagań pracy.

W kodzie dołączonym na powyższym zrzucie ekranu liczba argumentów jest skrócona jako argc, a wartości argumentów są skrócone jako argv. Są to zmienne przekazywane do głównej funkcji, gdy zaczyna działać. W czasie wykonywania funkcja SysConf pobiera informacje o konfiguracji. SYSCONF z argumentem _sc Steose to poprawny interfejs do zapytania o rozmiar strony. SBRK () zwiększa przestrzeń do przechowywania programu poprzez zwiększenie bajtów. Obecną lokalizację przerwy w programie można znaleźć, wywołując SBRK () z przyrostem 0. Połączenie systemowe BRK () powoduje pęknięcie programu w pozycji segmentu danych końcowych. Segment danych końcowych jest zaokrąglony do następnej granicy, ponieważ pamięć wirtualna jest przypisana w jednostkach stron.

Wyjście kodu można wyświetlić, wykonując cytowaną poniżej instrukcję w Ubuntu 20.04 Terminal systemu operacyjnego Linux.

$ gcc brk1.C
$./A.na zewnątrz

W przypadku, gdy GCC nie jest zainstalowany w Ubuntu 20.04 System operacyjny, zainstaluj go, uruchamiając dołączone polecenie poniżej w powładzie:

$ sudo apt instal gcc

Wyjście jest wyświetlane w wyżej wymienionym zrzucie ekranu Prezentując rozmiar strony, adres przerwania programu, rozmiar char itp.

Wniosek

Ten artykuł dotyczył połączenia systemowego BRK () w języku programowania C. Staraliśmy się jak najlepiej wyjaśnić koncepcję połączenia systemowego BRK () w języku programowania C i jego użycie. Jeden z przykładów został szczegółowo wyjaśniony dla twojego zrozumienia. Wdrożenie tego przykładu za pomocą wymaganych zmian nauczy Cię użycie połączeń systemowych BRK () w języku programowania C.