2.2.1. Biblioteca del sistema
Material de estudio basado en la edición de 2014. Borrador pendiente de revisión editorial independiente.
Biblioteca del sistema como mecanismo indirecto
Desde el punto de vista del programador, los traps tienen un gran problema de portabilidad: dependen del lenguaje maquina del procesador. Si queremos que el codigo fuente sea portable entre arquitecturas diferentes con el mismo SO, necesitamos una forma independiente del hardware para hacer las llamadas al sistema.
La solucion es la biblioteca del sistema. Las rutinas de esta biblioteca permiten expresar de forma estandar las llamadas al sistema. Ejemplo en Unix: la interfaz de la llamada write en C es:
ssize_t write(int fd, const void *buf, size_t count);
La rutina write de la biblioteca del sistema para IA-32 invoca la llamada al sistema usando los registros e instruccion int propios de esa arquitectura. Para Alpha, usa sus propias instrucciones. El programador la invoca como una rutina normal de C, sin conocer los detalles de la arquitectura.
Ventajas:
- El programador no necesita conocer el lenguaje maquina de cada arquitectura.
- El codigo fuente es portable entre sistemas con el mismo SO.
- La biblioteca se encarga de los detalles de implementacion para cada arquitectura.
Los otros dos mecanismos (interrupciones y excepciones) no estan a disposicion directa del usuario.
Esquema de repaso
- Biblioteca del sistema: puente portable entre programador y llamadas al sistema.
- Cada arquitectura tiene su propia implementacion de la biblioteca.
- El programador usa la interfaz estandar; la biblioteca resuelve los detalles.
Debes poder explicar
- Por que los traps no son portables.
- Como la biblioteca del sistema resuelve el problema de portabilidad.
- Ejemplo concreto de como
writefunciona en dos arquitecturas diferentes.