fbpx
Wikipedia

Glibc

La biblioteca de C de GNU (del inglés GNU C library), comúnmente conocida como glibc es la biblioteca de tiempo de ejecución estándar del lenguaje C de GNU. Se distribuye bajo los términos de la licencia GNU LGPL.

GNU C Library
Parte de GNU toolchain
Información general
Tipo de programa Biblioteca runtime
Desarrollador Proyecto GNU
Vulnerabilidades
Licencia GNU LGPL
Estado actual Activo
Información técnica
Programado en C
Versiones
Última versión estable 2.32 (info) 5 de agosto de 2020 (1 año)
Archivos legibles
Time Zone Information Format
Archivos editables
Time Zone Information Format
Enlaces
Sitio web oficial
Repositorio de código
Seguimiento de errores
La biblioteca de C de GNU provee funcionalidad que aísla a las aplicaciones del núcleo (Linux en esta imagen). Para utilizar funcionalidad específica de Linux se emplea la rutina syscall() de la biblioteca de C de GNU. O bien una implementación propia de la llamada a sistema en ensamblador. Si una aplicación utiliza la interfaz de llamadas a sistema de Linux con implementaciones propias en exclusiva, entonces dicha aplicación se considera monolítica.

En los sistemas en los que se usa, esta biblioteca de C que proporciona y define las llamadas al sistema y otras funciones básicas, es utilizada por casi todos los programas. Es muy usada en los sistemas GNU y sistemas basados en el núcleo Linux. Es muy portable y soporta gran cantidad de plataformas de hardware. En los sistemas Linux se instala con el nombre de libc6.

Hardware y núcleos soportados

Glibc es usada en sistemas que trabajan con muchos núcleos diferentes y diferentes arquitecturas de hardware. El uso más común es en sistemas con el núcleo Linux en hardware x86, pero también soporta oficialmente las siguientes plataformas de hardware: x86, Motorola 680x0, DEC Alpha, PowerPC, ARM, ETRAX CRIS, S/390 y SPARC. Tiene soporte oficial para núcleos Hurd y Linux, aunque hay disponibles versiones con muchos parches que funcionan con núcleos de FreeBSD y NetBSD (como es el caso de Debian GNU/kFreeBSD y Debian GNU/NetBSD, respectivamente). Es también usada (de una forma modificada) como la libroot de BeOS y por eso en Haiku.

Funcionalidad de GNU

La Glibc no solo provee funcionalidad según las especificaciones POSIX sino que también provee extensiones GNU a dicho estándar, de manera que las aplicaciones pueden ser escritas para POSIX o para GNU. Glibc también implementa heurísticas en tiempo de ejecución para la gestión de memoria.

La función malloc puede tener una gran complejidad detrás de ella. No solo se limita a reservar la cantidad demandada de memoria dinámica en el montículo de memoria (heap) gestionado por el núcleo del sistema operativo. Glibc mantiene varios bloques de memoria dinámica que superan la capacidad demandada. Dichos bloques los administra a conveniencia sin necesidad de llamar continuamente al núcleo del sistema operativo.[1]

Otro ejemplo de heurísticas de tiempo de ejecución implementadas en Glibc consiste en la elección de la llamada a sistema que corresponda según arquitectura y versión de Linux.[2]​ Linux dispone de múltiples llamadas a sistema y no todas están disponibles para todas las arquitecturas. Además, para una misma especificación de llamada a sistema puede haber distintas implementaciones, como la encargada de truncar archivos (truncate de Glibc). Dicha llamada a sistema cuenta con dos versiones en Linux: truncate y truncate64. Glibc se encarga de escoger la adecuada cuando un programa llama a truncate de Glibc.

La biblioteca de C de GNU provee la función syscall para poder invocar llamadas a sistema específicas del núcleo del sistema.[3]​ Si el núcleo del sistema no dispone de la llamada al sistema solicitada, Glibc devuelve el valor -1 y el código de error ENOSYS (función no implementada) queda almacenado en la variable errno. Un ejemplo de funcionalidad que requiere del uso de syscall() es la llamada al sistema futex de Linux. Esta llamada es utilizada por la Glibc para implementar los cerrojos de exclusión mutua de PThreads en GNU/Linux.[4]​ Glibc no proporciona un envoltorio para ser utilizada directamente por una aplicación en espacio de usuario.[5]​ Sin envoltorio disponible, el programador puede utilizar futex mediante la función proxy syscall de GNU. Los detalles de la arquitectura hardware a la hora de llamar al núcleo han de ser gestionados por la aplicación. Los detalles de la convención del lenguaje C son manejados por Glibc: guardar y restaurar registros, activar la interrupción software de entrada al núcleo, valor de retorno de la llamada a sistema y variable errno. Utilizar syscall dificulta la portabilidad de la aplicación, pero es más fácil que tener que gestionar en ensamblador los registros, valores de retorno e interrupción software.

Normalmente una aplicación enlazada con la biblioteca de C no utiliza rutinas integradas que manejen por sí mismas el uso de la interfaz de llamadas a sistema de Linux. Hacer eso supone interferir con la gestión que hace la biblioteca. Por ejemplo, utilizar las llamadas a sistema brk y sbrk que manejan el puntero de rotura (program break) interfiere con la función malloc.

Lo primero que se ejecuta de un programa enlazado con la Glibc son una serie de rutinas llamadas desde el archivo de ensamblador start.S. Dicho archivo pertenece a la biblioteca de C de GNU. Inicializa una serie de punteros a función y llama a __libc_start_main. Dicha función realiza más inicializaciones, entre ellas detectar la familia del procesador para escoger versiones optimizadas de las funciones de la biblioteca. Después, la función main es invocada.[6]

Las extensiones GNU han implementado varias funciones que más tarde fueron estandarizadas como parte del lenguaje C en su estándar C90 y C99.

Glibc es usada por GCC. La portabilidad de GCC+Glibc ha permitido a Intel optimizar la distribución de GNU/Linux Clear Linux. Al compilar con GCC utilizan una opción que dispone para generar múltiples versiones de una rutina de un programa. Esto les faculta para tener el sistema operativo optimizado para distintas generaciones de procesadores. Luego utilizan la capacidad de detección y auto optimización de la Glibc para cargar binarios de bibliotecas optimizados para la CPU. Dichos binarios son distribuidos con Clear Linux, manteniendo múltiples versiones de una misma biblioteca.[7]​ Los resultados de rendimiento dan una ventaja superior al 10% a favor de Clear Linux contra Ubuntu 17.10.[8]

Contenido de Glibc

  • Programas instalados: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump y zic
  • Bibliotecas instaladas: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so y libutil.[a,so]

La biblioteca libc.[a,so], que implementa la funcionalidad del estándar del lenguaje C y de GNU C, aglutina un total aproximado de 500 llamadas a sistema y funciones.

Referencias

  1. DJ Delorie, Andreas Schwab, Adhemerval Zanella (2016,2017). «Overview of Malloc» (en inglés). Consultado el 7 de septiembre de 2017. 
  2. Andries Brouwer, Michael Kerrisk (1998, 2007). «syscalls - Linux system calls» (en inglés). Consultado el 7 de septiembre de 2017. 
  3. Los regentes de la universidad de California (1980, 1991, 1993). «syscall - indirect system call» (en inglés). Consultado el 7 de septiembre de 2017. 
  4. Darren Hart (11 de noviembre de 2009). «A futex overview and update» (en inglés). LWN.net. Consultado el 7 de septiembre de 2017. 
  5. Thomas Gleixner, Michael Kerrisk (2015). «futex - fast user-space locking» (en inglés). Consultado el 7 de septiembre de 2017. 
  6. Gentoo. «Mini FAQ about the misc libc/gcc crt files.». Gentoo Linux (en inglés). Gentoo Linux. Consultado el 8 de septiembre de 2017. 
  7. Michael Larabel (15 de septiembre de 2017). «Clear Linux & Their Love For FMV + dl_platform/dl_hwcap In The Name Of Performance - Phoronix». www.phoronix.com (en inglés). Consultado el 15 de septiembre de 2017. 
  8. Michael Larabel (12 de septiembre de 2017). «Core i9 7900X vs. Threadripper 1950X On Ubuntu 17.10, Antergos, Clear Linux - Phoronix». www.phoronix.com (en inglés). Consultado el 15 de septiembre de 2017. 

Enlaces externos

  • Sitio oficial de Glibc (en inglés)
  • Manual de Glibc (en inglés)
  •   Datos: Q856089
  •   Multimedia: GNU C Library

glibc, debe, confundirse, glib, biblioteca, inglés, library, comúnmente, conocida, como, glibc, biblioteca, tiempo, ejecución, estándar, lenguaje, distribuye, bajo, términos, licencia, lgpl, libraryparte, toolchaininformación, generaltipo, programabiblioteca, . No debe confundirse con GLib La biblioteca de C de GNU del ingles GNU C library comunmente conocida como glibc es la biblioteca de tiempo de ejecucion estandar del lenguaje C de GNU Se distribuye bajo los terminos de la licencia GNU LGPL GNU C LibraryParte de GNU toolchainInformacion generalTipo de programaBiblioteca runtimeDesarrolladorProyecto GNUVulnerabilidades variasCVE 2016 6323CVE 2016 4429CVE 2016 3706CVE 2016 3075CVE 2016 1234CVE 2015 8779CVE 2015 8778CVE 2015 8777CVE 2015 8776CVE 2015 7547CVE 2015 5277CVE 2015 1781CVE 2015 1473CVE 2015 1472CVE 2015 0235CVE 2014 9761CVE 2014 9402CVE 2014 8121CVE 2014 7817CVE 2014 6040CVE 2014 5119CVE 2014 4043CVE 2014 0475CVE 2013 7424CVE 2013 7423CVE 2013 4788CVE 2013 4458CVE 2013 4332CVE 2013 4237CVE 2013 2207CVE 2013 1914CVE 2013 0242CVE 2012 6656CVE 2012 4424CVE 2012 4412CVE 2012 3480CVE 2012 3406CVE 2012 3405CVE 2012 3404CVE 2012 0864CVE 2011 4609CVE 2011 2702CVE 2011 1659CVE 2011 1658CVE 2011 1095CVE 2011 1089CVE 2011 1071CVE 2011 0536CVE 2010 4756CVE 2010 4052CVE 2010 4051CVE 2010 3856CVE 2010 3847CVE 2010 3192CVE 2010 0830CVE 2010 0296CVE 2010 0015CVE 2009 5064CVE 2009 5029CVE 2009 4881CVE 2009 4880CVE 2004 1453CVE 2004 1382CVE 2004 0968CVE 2003 0859CVE 2003 0028CVE 2002 1265CVE 2002 1146CVE 2002 0684CVE 2000 0959CVE 2000 0824CVE 2000 0335LicenciaGNU LGPLEstado actualActivoInformacion tecnicaProgramado enCVersionesUltima version estable2 32 info 5 de agosto de 2020 1 ano Archivos legiblesTime Zone Information FormatArchivos editablesTime Zone Information FormatEnlacesSitio web oficial Repositorio de codigo Seguimiento de errores editar datos en Wikidata La biblioteca de C de GNU provee funcionalidad que aisla a las aplicaciones del nucleo Linux en esta imagen Para utilizar funcionalidad especifica de Linux se emplea la rutina syscall de la biblioteca de C de GNU O bien una implementacion propia de la llamada a sistema en ensamblador Si una aplicacion utiliza la interfaz de llamadas a sistema de Linux con implementaciones propias en exclusiva entonces dicha aplicacion se considera monolitica En los sistemas en los que se usa esta biblioteca de C que proporciona y define las llamadas al sistema y otras funciones basicas es utilizada por casi todos los programas Es muy usada en los sistemas GNU y sistemas basados en el nucleo Linux Es muy portable y soporta gran cantidad de plataformas de hardware En los sistemas Linux se instala con el nombre de libc6 Indice 1 Hardware y nucleos soportados 2 Funcionalidad de GNU 3 Contenido de Glibc 4 Referencias 5 Enlaces externosHardware y nucleos soportados EditarGlibc es usada en sistemas que trabajan con muchos nucleos diferentes y diferentes arquitecturas de hardware El uso mas comun es en sistemas con el nucleo Linux en hardware x86 pero tambien soporta oficialmente las siguientes plataformas de hardware x86 Motorola 680x0 DEC Alpha PowerPC ARM ETRAX CRIS S 390 y SPARC Tiene soporte oficial para nucleos Hurd y Linux aunque hay disponibles versiones con muchos parches que funcionan con nucleos de FreeBSD y NetBSD como es el caso de Debian GNU kFreeBSD y Debian GNU NetBSD respectivamente Es tambien usada de una forma modificada como la libroot de BeOS y por eso en Haiku Funcionalidad de GNU EditarLa Glibc no solo provee funcionalidad segun las especificaciones POSIX sino que tambien provee extensiones GNU a dicho estandar de manera que las aplicaciones pueden ser escritas para POSIX o para GNU Glibc tambien implementa heuristicas en tiempo de ejecucion para la gestion de memoria La funcion malloc puede tener una gran complejidad detras de ella No solo se limita a reservar la cantidad demandada de memoria dinamica en el monticulo de memoria heap gestionado por el nucleo del sistema operativo Glibc mantiene varios bloques de memoria dinamica que superan la capacidad demandada Dichos bloques los administra a conveniencia sin necesidad de llamar continuamente al nucleo del sistema operativo 1 Otro ejemplo de heuristicas de tiempo de ejecucion implementadas en Glibc consiste en la eleccion de la llamada a sistema que corresponda segun arquitectura y version de Linux 2 Linux dispone de multiples llamadas a sistema y no todas estan disponibles para todas las arquitecturas Ademas para una misma especificacion de llamada a sistema puede haber distintas implementaciones como la encargada de truncar archivos truncate de Glibc Dicha llamada a sistema cuenta con dos versiones en Linux truncate y truncate64 Glibc se encarga de escoger la adecuada cuando un programa llama a truncate de Glibc La biblioteca de C de GNU provee la funcion syscall para poder invocar llamadas a sistema especificas del nucleo del sistema 3 Si el nucleo del sistema no dispone de la llamada al sistema solicitada Glibc devuelve el valor 1 y el codigo de error ENOSYS funcion no implementada queda almacenado en la variable errno Un ejemplo de funcionalidad que requiere del uso de syscall es la llamada al sistema futex de Linux Esta llamada es utilizada por la Glibc para implementar los cerrojos de exclusion mutua de PThreads en GNU Linux 4 Glibc no proporciona un envoltorio para ser utilizada directamente por una aplicacion en espacio de usuario 5 Sin envoltorio disponible el programador puede utilizar futex mediante la funcion proxy syscall de GNU Los detalles de la arquitectura hardware a la hora de llamar al nucleo han de ser gestionados por la aplicacion Los detalles de la convencion del lenguaje C son manejados por Glibc guardar y restaurar registros activar la interrupcion software de entrada al nucleo valor de retorno de la llamada a sistema y variable errno Utilizar syscall dificulta la portabilidad de la aplicacion pero es mas facil que tener que gestionar en ensamblador los registros valores de retorno e interrupcion software Normalmente una aplicacion enlazada con la biblioteca de C no utiliza rutinas integradas que manejen por si mismas el uso de la interfaz de llamadas a sistema de Linux Hacer eso supone interferir con la gestion que hace la biblioteca Por ejemplo utilizar las llamadas a sistema brk y sbrk que manejan el puntero de rotura program break interfiere con la funcion malloc Lo primero que se ejecuta de un programa enlazado con la Glibc son una serie de rutinas llamadas desde el archivo de ensamblador start S Dicho archivo pertenece a la biblioteca de C de GNU Inicializa una serie de punteros a funcion y llama a libc start main Dicha funcion realiza mas inicializaciones entre ellas detectar la familia del procesador para escoger versiones optimizadas de las funciones de la biblioteca Despues la funcion main es invocada 6 Las extensiones GNU han implementado varias funciones que mas tarde fueron estandarizadas como parte del lenguaje C en su estandar C90 y C99 Glibc es usada por GCC La portabilidad de GCC Glibc ha permitido a Intel optimizar la distribucion de GNU Linux Clear Linux Al compilar con GCC utilizan una opcion que dispone para generar multiples versiones de una rutina de un programa Esto les faculta para tener el sistema operativo optimizado para distintas generaciones de procesadores Luego utilizan la capacidad de deteccion y auto optimizacion de la Glibc para cargar binarios de bibliotecas optimizados para la CPU Dichos binarios son distribuidos con Clear Linux manteniendo multiples versiones de una misma biblioteca 7 Los resultados de rendimiento dan una ventaja superior al 10 a favor de Clear Linux contra Ubuntu 17 10 8 Contenido de Glibc EditarProgramas instalados catchsegv gencat getconf getent glibcbug iconv iconvconfig ldconfig ldd lddlibc4 locale localedef mtrace nscd nscd nischeck pcprofiledump pt chown rpcgen rpcinfo sln sprof tzselect xtrace zdump y zicBibliotecas instaladas ld so libBrokenLocale a so libSegFault so libanl a so libbsd compat a libc a so libc nonshared a libcrypt a so libdl a so libg a libieee a libm a so libmcheck a libmemusage so libnsl a libnss compat so libnss dns so libnss files so libnss hesiod so libnss nis so libnss nisplus so libpcprofile so libpthread a so libresolv a so librpcsvc a librt a so libthread db so y libutil a so La biblioteca libc a so que implementa la funcionalidad del estandar del lenguaje C y de GNU C aglutina un total aproximado de 500 llamadas a sistema y funciones Referencias Editar DJ Delorie Andreas Schwab Adhemerval Zanella 2016 2017 Overview of Malloc en ingles Consultado el 7 de septiembre de 2017 Andries Brouwer Michael Kerrisk 1998 2007 syscalls Linux system calls en ingles Consultado el 7 de septiembre de 2017 Los regentes de la universidad de California 1980 1991 1993 syscall indirect system call en ingles Consultado el 7 de septiembre de 2017 Darren Hart 11 de noviembre de 2009 A futex overview and update en ingles LWN net Consultado el 7 de septiembre de 2017 Thomas Gleixner Michael Kerrisk 2015 futex fast user space locking en ingles Consultado el 7 de septiembre de 2017 Gentoo Mini FAQ about the misc libc gcc crt files Gentoo Linux en ingles Gentoo Linux Consultado el 8 de septiembre de 2017 Michael Larabel 15 de septiembre de 2017 Clear Linux amp Their Love For FMV dl platform dl hwcap In The Name Of Performance Phoronix www phoronix com en ingles Consultado el 15 de septiembre de 2017 Michael Larabel 12 de septiembre de 2017 Core i9 7900X vs Threadripper 1950X On Ubuntu 17 10 Antergos Clear Linux Phoronix www phoronix com en ingles Consultado el 15 de septiembre de 2017 Enlaces externos EditarSitio oficial de Glibc en ingles Manual de Glibc en ingles Datos Q856089 Multimedia GNU C LibraryObtenido de https es wikipedia org w index php title Glibc amp oldid 128337445, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos