UNIVERSIDAD NACIONAL DE TRUJILLO
Escuela de Informática
1
LLAMADAS DEL SISTEMA
Cuando encendemos el ordenador, el primer programa que se ejecuta es el Sistema Operativo. Esteprograma se encarga de controlar toda la actividad que se produzca en el ordenador. Esto incluyequién se conecta, la gestión de la memoria y los discos, el uso de la CPU y la comunicación con otrasmáquinas.Los programas se comunican con el Sistema Operativo por medio de llamadas al sistema. Una llamadaal sistema es normalmente una demanda al sistema operativo (núcleo) para que haga una operación dehardware/sistema específica o privilegiada. Una llamada al sistema es similar a las llamadas aprocedimientos. Los parámetros pasados a
syscall
() son el número de la llamada al sistema seguida porel argumento necesario. Los números de llamadas al sistema se pueden encontrar en
<
linux/unistd.h
>
.En la arquitectura i386, las llamadas al sistema están limitadas a 5 argumentos además del número dellamada al sistema, debido al número de registros del procesador. Si se usa Linux en otra arquitecturase puede comprobar el contenido de <
asm/unistd.h
> para ver cuántos argumentos admite el hardware.La llamada al sistema la invoca un proceso de usuario (o mejor dicho un proceso en modo usuario) yes servida por el núcleo (el mismo proceso en modo núcleo). Una llamada al sistema implica pasar o
saltar
del código del usuario al código del núcleo. Este
salto
conlleva un cambio en el modo delfuncionamiento del procesador. El procesador debe pasar de modo usuario (acceso restringido a losrecursos) a modo supervisor o privilegiado.Las llamadas al sistema implican un cierto coste. Mientras que una llamada a una función oprocedimiento puede ser llevada a cabo con unas pocas instrucciones máquina, una llamada al sistemarequiere salvar el estado completo de la máquina, permitir al Sistema Operativo tomar el control de laCPU para que ejecute las funciones que tenga que realizar mediante el lanzamiento de una instrucciónde interrupción, volver a recuperar el estado y finalmente devolver el control al usuario.
1.
Interfaz con el Sistema Operativo
Podemos distinguir fácilmente dos puntos de vista en la interfaz ofrecida por las llamadas alsistema.Por una parte tenemos la interfaz ofrecida por el núcleo del Sistema Operativo.
•
Es una interfaz definida a nivel de lenguaje ensamblador.
•
Depende directamente del hardware sobre el que se está ejecutando el S.O. (Registros delprocesador, cómo se cambia de modo y se salta del código de usuario al código del núcleoetc.) Por otro lado nos encontramos con la interfaz ofrecida al programador o usuario (API)
•
Todas las implementaciones de UNIX disponen de unas bibliotecas de usuario que escondenla implementación concreta de las llamadas al sistema.
•
Se ofrece al programador una interfaz desde un lenguaje de alto nivel como es C.
•
Presenta la ventaja añadida de la portabilidad entre distintas versiones de UNIX y entrediferentes arquitecturas.
•
Todas las llamadas al sistema se encuentran documentadas en la sección 2 del manual deUNIX.
2.
Biblioteca de llamadas al sistema
La biblioteca que contiene todas las llamadas al sistema es la "libc". Esta biblioteca se encarga deocultar los detalles de la interfaz de llamadas al sistema del núcleo en forma de funciones de C(pasa de nivel ensamblador a un lenguaje de alto nivel). Dichas funciones se encargan de trasladar
Add a Comment