2.2.2. Bibliotecas del lenguaje
Texto íntegro de la conversión. Las figuras y la disposición de las notas se pueden consultar en el PDF.
2.2.2. Bibliotecas del lenguaje
Algunos lenguajes de programación ofrecen servicios más próximos a las necesidades del programador y, por lo tanto, permiten que el programador sea más productivo.
En el Unix, por ejemplo, las llamadas de entrada/salida (read/write) trabajan con cadenas de bytes. Si queremos escribir un valor entero en base 10 por pantalla, antes es necesario convertir el valor entero a la cadena de dígitos decimales que representa el valor.
En cambio, el lenguaje C ofrece una biblioteca de entrada/salida estándar (la biblioteca stdio con rutinas como printf o scanf) que permite realizar entrada/salida con formato.
La figura 4 muestra un ejemplo de cómo escribir en el Unix un número entero por pantalla en base 10. Si utilizamos directamente llamadas al sistema (código de la izquierda), hay que transformar este valor numérico en la cadena de caracteres que representa su valor. Si utilizamos la rutina de biblioteca printf (código de la derecha), esta rutina realiza la conversión e invoca la llamada al sistema correspondiente.
char s[10];
int i=9;
s[9]='\n';
while (n > 0) { i--; s[i] = '0' + (n%10);
n=n/10; } write(1, s[i], 10-i);
Figura 4. Cómo escribir en Unix un número entero por pantalla en base 10: utilizando llamadas al sistema (izquierda) y utilizando rutinas de la biblioteca del lenguaje (derecha)
La biblioteca del lenguaje también ofrece rutinas de uso común que están implementadas sin utilizar llamadas al sistema, como, por ejemplo, rutinas trigonométricas, generadores de números pseudoaleatorios o manipulación de cadenas de caracteres (strings).
Notas y pies de figura de la fuente
int n; printf("%d\n", n);
Página 18
La figura 5 muestra un ejemplo en el que aparece una aplicación que utiliza rutinas de una biblioteca del lenguaje. Podemos ver los pasos necesarios hasta llegar al código del sistema operativo que implementa el servicio solicitado.
Figura 5. Entrada indirecta al código del sistema operativo utilizando una rutina de la biblioteca del lenguaje
Ver fragmento extraído sin normalizar
2.2.2. Bibliotecas del lenguaje
Algunos lenguajes de programación ofrecen servicios más próximos a las ne-
cesidades del programador y, por lo tanto, permiten que el programador sea
más productivo.
En el Unix, por ejemplo, las llamadas de entrada/salida (read/write) trabajan
con cadenas de bytes. Si queremos escribir un valor entero en base 10 por
pantalla, antes es necesario convertir el valor entero a la cadena de dígitos
decimales que representa el valor.
En cambio, el lenguaje C ofrece una biblioteca de entrada/salida estándar (la
biblioteca stdio con rutinas como printf o scanf) que permite realizar entra-
da/salida con formato.
La figura 4 muestra un ejemplo de cómo escribir en el Unix un número entero
por pantalla en base 10. Si utilizamos directamente llamadas al sistema (código
de la izquierda), hay que transformar este valor numérico en la cadena de
caracteres que representa su valor. Si utilizamos la rutina de biblioteca printf
(código de la derecha), esta rutina realiza la conversión e invoca la llamada al
sistema correspondiente.
char s[10];
int i=9; int n;
s[9]='\n'; printf("%d\n", n);
while (n > 0) {
i--;
s[i] = '0' + (n%10);
n=n/10;
}
write(1, s[i], 10-i);
Figura 4. Cómo escribir en Unix un número entero por pantalla en base 10: utilizando lla-
madas al sistema (izquierda) y utilizando rutinas de la biblioteca del lenguaje (derecha)
La biblioteca del lenguaje también ofrece rutinas de uso común que están im-
plementadas sin utilizar llamadas al sistema, como, por ejemplo, rutinas tri-
gonométricas, generadores de números pseudoaleatorios o manipulación de
cadenas de caracteres (strings).
## Página 18
<!-- source-page: 18 -->
GNUFDL • PID_00214804 18 El sistema operativo: una máquina virtual
La figura 5 muestra un ejemplo en el que aparece una aplicación que utiliza
rutinas de una biblioteca del lenguaje. Podemos ver los pasos necesarios hasta
llegar al código del sistema operativo que implementa el servicio solicitado.
Figura 5. Entrada indirecta al código del sistema operativo utilizando una rutina de la biblioteca del lenguaje