Definición breve: llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.
Cada SO implementa un conjunto propio de llamadas al sistema. Ese
conjunto de llamadas es la interfaz del SO frente a las aplicaciones.
Constituyen el lenguaje que deben usar las aplicaciones para comunicarse
con el SO. Por ello si cambiamos de SO, y abrimos un programa diseñado
para trabajar sobre el anterior, en general el programa no funcionará, a
no ser que el nuevo SO tenga la misma interfaz. Para ello:
- Las llamadas correspondientes deben tener el mismo formato.
- Cada llamada al nuevo SO tiene que dar los mismos resultados que la correspondiente del anterior.
Modos de ejecución en un CPU
Las aplicaciones no deben poder usar todas las instrucciones de la
CPU. No obstante el Sistema Operativo, tiene que poder utilizar todo el conjunto de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes:
- Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones.
- Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones.
Llamadas al sistema
Una aplicación, normalmente no sabe dónde está situada la rutina de
servicio de la llamada. Por lo que si ésta se codifica como una llamada
de función, cualquier cambio en el S.O. haría que hubiera que
reconstruir la aplicación.
Pero lo más importante es que una llamada de función no cambia el
modo de ejecución de la CPU. Con lo que hay que conseguir llamar a la
rutina de servicio, sin tener que conocer su ubicación, y hacer que se
fuerce un cambio de modo de operación de la CPU en la llamada (y la
recuperación del modo anterior en el retorno).
Esto se hace utilizando instrucciones máquina diseñadas
específicamente para este cometido, distintas de las que se usan para
las llamadas de función.
Bibliotecas de interfaz de llamadas al sistema
Las llamadas al sistema no siempre tienen una expresión sencilla en los lenguajes de alto nivel, por ello se crean las bibliotecas de interfaz,
que son bibliotecas de funciones que pueden usarse para efectuar
llamadas al sistema. Las hay para distintos lenguajes de programación.
La aplicación llama a una función de la biblioteca de interfaz
(mediante una llamada normal) y esa función es la que realmente hace la
llamada al sistema.
No hay comentarios:
Publicar un comentario