You are on page 1of 18

INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.

1.5 LLAMADAS A SERVICIOS DEL SISTEMA
LENGUAJES DE INTERFAZ

La ejecución de esta instrucción máquina hace que el hardware guarde el contador de programa y la palabra de estado del procesador en un lugar seguro de la memoria. .LLAMADAS A SERVICIOS DEL SISTEMA La forma en que se realiza una llamada al sistema consiste en colocar una serie de parámetros en un lugar específico. cargándose un nuevo contador de programa y una nueva PSW. para después ejecutar una instrucción del lenguaje máquina del procesador denominada trap.

coloca un código de estado en un registro para indicar si hubo éxito o fracaso. . esta instrucción provoca que el hardware restituya el contador de programa y la PSW del programa que realizó la llamada al sistema. y ejecuta una instrucción return from trap. prosiguiéndose así su ejecución. el cual se encarga de llevar a cabo el servicio solicitado.Este nuevo contador de programa contiene una dirección de memoria donde reside una parte del sistema operativo. Cuando el sistema operativo finaliza el servicio.

. y a obtener el código de estado a partir de un registro. Dentro de estos procedimientos se aísla el código (normalmente en ensamblador) correspondiente a la carga de registros con parámetros. a la instrucción trap.Normalmente los lenguajes de alto nivel tienen una (o varias) rutinas de biblioteca por cada llamada al sistema.

El número y tipo de llamadas al sistema varía de un sistema operativo a otro. .La finalidad de estos procedimientos de biblioteca es ocultar los detalles de la llamada al sistema. la utilización de rutinas de biblioteca hace el código portable. Como una llamada al sistema depende del hardware. ofreciendo una interfaz de llamada al procedimiento.

Algunos ejemplos de llamadas al sistema son las siguientes: .0. Toda llamada al sistema se identifica de manera unívoca mediante un valor numérico que debe permanecer el mismo a lo largo de la vida del sistema operativo para evitar que se rompa la compatibilidad hacia atrás. su versión 3.En el caso de Linux. ofrece un total de 345 llamadas al sistema.

• Read. tales como una pantalla o un disco magnético. tales como un teclado o un disco magnético. que se emplea para escribir un dato en un cierto dispositivo de salida. que es usada para leer de un dispositivo de entrada. que permite obtener la fecha y hora del sistema. . • Write.• Time.

por lo general.Existen. pedir más memoria dinámica para un programa. realizar labores de E/S. Ejemplos de rutinas de biblioteca que realizan llamadas al sistema en un entorno del sistema operativo C-UNIX son: read. etc. llamadas al sistema para ejecutar ficheros que contienen programas. malloc. write. . exec. etc. crear un directorio.

que se identifica mediante el descriptor de fichero número 1.El siguiente ejemplo muestra el código en ensamblador de x86 para invocar a la llamada al sistema write que permite escribir un dato en cualquier dispositivo. se va a escribir una cadena por el dispositivo de salida pantalla. . En concreto.

string .section . lenght . 1 mov ebx. 4 .se invoca al de mov eax.cargamos en edx el tamaño de la cadena a imprimir int 80h . 0x0A lenght: equ 13 .cargamos el descriptor de fichero sobre el que queremos escribir mov ecx. 1 .cargamos en ecx la dirección de la cadena a imprimir mov edx.cargamos el número de la llamada al sistema en el registro eax mov ebx. 0 int 80h section .text global _start _start: mov eax.data string: db "Hola Mundo".

En el caso de las llamadas al sistema.La instrucción int forma parte del conjunto de instrucciones de procesadores x86. . Esta instrucción emite una interrupción por software cuyo tratamiento es realizado por una rutina. la rutina que se encarga del tratamiento de la interrupción por software número 80 es el dispatcher.

. que forma parte del SO. se ejecuta cuando se invoca una llamada al sistema. el dispatcher. se encarga de invocar la llamada que el proceso ha solicitado. el dispatcher consulta el registro eax e invoca a la llamada al sistema identificada con dicha numeración. En el caso de x86. Cuando un proceso hace una llamada al sistema.EL DISPATCHER El dispatcher.

Existen dos tipos de estas: las interrupciones del DOS y las interrupciones del BIOS. Estas interrupciones son invocadas con la instrucción INT del ensamblador. La siguiente es una lista de las interrupciones por software disponibles por el sistema operativo.INTERRUPCIONES POR SOFTWARE Son llamadas desde los programas y son proporcionadas por el sistema operativo (MS-DOS). .

• INT 14H Manejo de los puertos de comunicaciones (RS232).INTERRUPCIONES DEL BIOS Manejo de dispositivos periféricos • INT 10H Manejo de la pantalla. • INT 16H Manejo del teclado. • INT 15H Manejo de cinta magnética. • INT 17H Manejo de la impresora. . • INT 13H Manejo de unidades de disco.

Servicios de fecha y hora • INT 1AH Manejo del reloj.Manejo del estado del equipo • INT 11H Servicios de la lista de elementos de la computadora. • INT 12H Servicios para el cálculo del tamaño de la memoria. Impresión de pantalla • INT 5H Impresión de la información contenida en la pantalla. .

Servicios especiales • INT 18H Activación del lenguaje Interprete Basic de la ROM. • INT 23H Dirección de la interrupción que se ejecuta cuando se presiona Ctrl-Break. • INT 19H Activación de la rutina de arranque de la computadora. • INT 22H Dirección de terminación. Interrupciones del DOS • INT 20H Termina la ejecución de un programa. Guarda la dirección donde se transfiere el control cuando termina la ejecución del programa. .

INT 27H Terminar un programa y devolver el control al DOS sin borrar el programa de la memoria. • INT 21H Esta interrupción proporciona una gran cantidad de funciones. INT 26H Escritura directa de sectores del disco. las cuales deben ser invocadas en conjunto con el registro AH.INT 24H Manejo de errores críticos. • • • • . INT 25H Lectura directa de sectores del disco.

13. Terminación de un programa. Inicializar unidad de disco. 4. Borrar registro de entrada. Salida a la impresora. Entrada por el puerto serie. Salida por el puerto serie. Entrada directa de carácter sin eco. . 5. 12. 7. 6. E/S directa por pantalla. Visualizar cadenas de caracteres.1. Entrada desde el teclado. Entrada de carácter con eco. Entrada de carácter sin eco. 10. 14. 11. Comprobación del estado de entrada. 8. 9. 2. 3. Salida a pantalla.