Llamada del sistema BRK en C

Llamada del sistema BRK en C
La discontinuidad del programa, que marca la terminación del segmento de datos del proceso, I.mi., El desglose del programa es la primera posición después de la finalización del segmento de datos no inicializado, se puede cambiar usando BRK (). Aumentar la ruptura del programa permite la memoria al proceso; Reducir la ruptura permite la memoria al proceso. Cuando esa cantidad es sensata, el sistema tendría suficiente memoria y el proceso no supere su tamaño de datos máximo, BRK () establece la finalización del segmento de datos al valor suministrado por el ADDR. Brk () devuelve cero si tiene éxito. Si llega un error, -1 se devuelve. El sistema funciona BRK (), y SBRK () se utiliza para regular la cantidad de memoria asignada al segmento de datos del proceso. Por lo general, estas funciones se invocan desde una función de biblioteca de administración de memoria más grande como MALLOC. La ruptura del programa, que identifica el final de la sección del montón del proceso, se mueve con brk () y sbrk (). BRK () asigna el valor de ADDR al final del segmento de almacenamiento. SBRK () aumenta el espacio de montón del programa mediante bytes incrementos. Te lleva de regreso a la ruptura del programa anterior. La ubicación actual de la ruptura del programa se puede encontrar llamando a sbrk () con solo un aumento de 0.

Sintaxis

#incluir
int brk (void *end_data_segment);
void *sbrk (intptr_t increment);

Explicación de la sintaxis

La llamada del sistema BRK () hace que el programa se rompa en la posición del segmento de datos finales. El segmento de datos final se redondea a los límites de la página siguientes ya que la memoria virtual se asigna en las unidades de página. Los intentos de reducir el valor de ruptura del programa por debajo de su valor inicial ciertamente darán como resultado un comportamiento inesperado, como una falla de segmentación al intentar acceder a los datos en partes ahora inaccesibles de los segmentos de datos inicializados o no inicializados. Varios factores determinan el límite superior exacto para donde se puede colocar la ruptura del programa.

¿Por qué usar la llamada del sistema BRK () en c?

La función BRK () se usa para modificar la cantidad de memoria asignada al proceso de la persona que llama. La modificación se realiza alterando el valor de interrupción del proceso a ADDR y proporcionando el número necesario de espacio. La función BRK () se usa para modificar la cantidad de memoria asignada al proceso de la persona que llama. A medida que aumenta el valor de descanso, también lo hace la cantidad de espacio asignado. El espacio recién asignado tiene un valor de 0 asignado. Los valores del espacio reasignado no se vacían si el programa primero disminuye y luego incrementa el valor de ruptura.

Requisitos previos

  • Acceso a Ubuntu 20.04 Sistema operativo
  • Instalación del compilador GCC

Ejemplo para explicar brk () en c

Hemos diseñado el ejemplo más simple para elaborar el concepto para usar la llamada del sistema BRK () en C. Creemos un archivo con el .Ex extensión utilizando el comando nano en el shell. Ejecute el comando adjunto a continuación en el shell:

$ nano brk1.C

En los sistemas operativos de Linux, GNU Nano es un editor de texto de línea de comandos simple. Tiene todas las características fundamentales que asumiría de un editor de texto, así como algunas más. Tras la ejecución, el archivo se abrirá en el editor GNU. Escriba el código que se muestra en su archivo con pocas enmiendas dependiendo de sus requisitos de trabajo.

En el código adjunto en la captura de pantalla anterior, el recuento de argumentos se abrevia como argc, y los valores de argumentos se abrevian como argv. Estas son las variables que se pasan a la función principal cuando comienza a ejecutarse. En tiempo de ejecución, la función SYSCONF recupera la información de configuración. sysconf con el argumento _SC PageSize es la interfaz correcta para preguntar sobre el tamaño de la página. SBRK () aumenta el espacio de almacenamiento del programa aumentando bytes. La ubicación actual de la ruptura del programa se puede encontrar llamando a sbrk () con un incremental de 0. La llamada del sistema BRK () hace que el programa se rompa en la posición del segmento de datos finales. El segmento de datos final se redondea al límite de la página siguiente porque la memoria virtual se asigna en las unidades de página.

La salida del código se puede mostrar ejecutando la instrucción citada a continuación en el Ubuntu 20.04 Terminal del sistema operativo Linux.

$ GCC BRK1.C
ps./a.afuera

En caso de que el GCC no esté instalado en su Ubuntu 20.04 Sistema operativo, instálelo ejecutando el comando adjunto a continuación en el shell:

$ sudo apt install gcc

La salida se muestra en el tamaño de la página de presentación de captura de pantalla atacada anteriormente, la dirección de descanso del programa, el tamaño de Char, etc.

Conclusión

Este artículo fue sobre la llamada del sistema BRK () en el lenguaje de programación C. Hemos hecho todo lo posible para explicar el concepto de llamada del sistema BRK () en el lenguaje de programación C y su uso. Uno de los ejemplos se ha explicado en detalle para su comprensión. Implementar este ejemplo con los cambios requeridos le enseñará el uso de llamadas del sistema BRK () en el lenguaje de programación C.