miércoles, 4 de marzo de 2020
LLAMADAS DEL SISTEMA
Los servicios del sistema son funciones predefinidas, que pueden ser utilizadas en los programas. Por medio de las llamadas a estos servicios es posible que exista la comunicación entre un programa en ejecución y el sistema operativo, las llamadas a servicios se encuentran en manuales de ensamblador y dependen de la arquitectura en la que se esté programando.
Cuando
una llamada al sistema es invocada, la ejecución del programa que invoca es
interrumpida y sus datos son guardados, en el bloque de control de proceso o
PCB (Process Control Block) para poder continuar ejecutándose posteriormente.
Las
categorías de las llamadas a servicios son las siguientes:
Comunicaciones:
Esta
categoría consta de las acciones relacionadas con mensajes, como es crear la
conexión, enviar y recibir mensajes, transferir información de estado y
eliminar la conexión.
Control de proceso:
Consta
de crear, cargar, ejecutar, abortar y terminar un proceso, así como obtener y
establecer atributos, liberar memoria o esperar un suceso.
Manipulación de archivos:
Esta
categoría consiste de crear, abrir, leer, obtener atributos, establecer atributos,
cerrar y eliminar archivos.
Manipulación de información:
Acciones
que requieren obtener datos del sistema, como por ejemplo la fecha y hora
pertenecen a esta categoría.
Manipulación de periféricos:
Cualquier
acción que requiera utilizar un periférico, como solicitar, escribir, leer,
obtener y establecer atributos y liberar periférico pertenece a esta categoría.
EJEMPLO
Para utilizarlas en
ensamblador es necesario cargar datos a los registros adecuados según el
servicio a utilizar y después llamar a la interrupción correspondiente, como se
puede ver en el siguiente ejemplo:
mov dx,82
-> Asigna
el valor 82 ASCII (Correspondiente a “R”) al registro dx
mov ah,02h
-> Carga el valor 02h
(servicio a utilizar) en el registro ah
int 21h
->
Inicia la interrupción 21h, revisa el valor en ah y utiliza el servicio
correspondiente, en este caso desplegar el carácter
R.
R.
Tipos de llamadas al sistema
Control de procesos
· Terminar
(end), abortar (abort)
· cargar
(load), ejecutar (execute)
· crear
procesos (create process o submit job), terminar procesos (terminate process)
· fork:
inicia un nuevo proceso
· exec:el
programa se ejecuta
· obtener
atributos del proceso (get process attributes), definir atributos del proceso
(set process attributes)
Administración de archivos
· crear
archivos (create), borrar archivos (delete)
· abrir
(open), cerrar (close)
· leer
(read), escribir (write), reposicionar (reposition)
· obtener
atributos del archivo, definir atributos del archivo.
Administración de dispositivos
· solicitar
dispositivo (request), liberar dispositivo (release)
· leer
(read), escribir (write), reposicionar (reposition)
· obtener
atributos de dispositivo, definir atributos de dispositivo
· conectar
y desconectar dispositivos lógicamente.
Mantenimiento de la información
· obtener
la hora (time) o la fecha (date), definir la hora o la fecha
· obtener
datos del sistema, establecer datos del sistema
· obtener
los atributos de procesos, archivos o dispositivos
· establecer
los atributos de procesos, archivos o dispositivos
Comunicaciones
· crear,
eliminar conexiones de comunicación
· enviar,
recibir mensajes
· transferir
información de estado
INTERRUPCIONES
Interrupción
Una
interrupción es un mecanismo que permite ejecutar un bloque de instrucciones
interrumpiendo la ejecución de un programa, y luego restablecer la ejecución
del mismo sin afectarlo directamente. De este modo un programa puede ser
interrumpido temporalmente para atender alguna necesidad urgente de la
computadora y luego continuar su ejecución de manera normal y como si nada
hubiera pasado.
Interrupción
Una
interrupción es un mecanismo que permite ejecutar un bloque de instrucciones
interrumpiendo la ejecución de un programa, y luego restablecer la ejecución
del mismo sin afectarlo directamente. De este modo un programa puede ser
interrumpido temporalmente para atender alguna necesidad urgente de la
computadora y luego continuar su ejecución de manera normal y como si nada
hubiera pasado.
Pasos
durante una interrupción
El CPU
suspende lo que estaba realizando. El hw transfiere el control al sistema de
operación.
Deshabilita
las interrupciones. Mientras se atiende una interrupción no se puede atender
otra que llegue. Algunas arquitecturas con manejo de interrupciones
sofisticadas permiten, mediante un esquema de prioridades, interrumpir un
servicio de interrupción para atender otra de mayor prioridad. Aquellas
interrupciones de menor o igual prioridad son deshabilitadas.
El kernel
del sistema de operación salva el estado actual del proceso interrumpido
Transfiere
su ejecución a una dirección fija. Esta dirección por lo general contiene la
dirección de comienzo donde la rutina de servicio de la interrupción se
encuentra. Una forma de manejar las interrupciones es invocando una rutina
general que examine la información de la interrupción y determine el tipo de
interrupción ocurrida, y de alli llama a la rutina que se encarga de atender
dicha interrupción. Por lo general se maneja mediante un vector de
interrupciones, indexado por el tipo de interrupción. En este vector se
encuentra la dirección de comienzo de la rutina que da servicio a dicho tipo.
Se le conoce como vector de interrupción. Otra forma de localizar la rutina
apropiada es mediante el pooling, es decir, preguntando a cada
dispositivo pare ver quien requirió el servicio.
Se ejecuta
la rutina de interrupción
Se
restaura el estado anterior
Se
habilitan las interrupciones.
La
arquitectura de interrupciones debe también almacenar la dirección de la
instrucción interrumpida.
Pasos
durante una interrupción
El CPU
suspende lo que estaba realizando. El hw transfiere el control al sistema de
operación.
Deshabilita
las interrupciones. Mientras se atiende una interrupción no se puede atender
otra que llegue. Algunas arquitecturas con manejo de interrupciones
sofisticadas permiten, mediante un esquema de prioridades, interrumpir un
servicio de interrupción para atender otra de mayor prioridad. Aquellas
interrupciones de menor o igual prioridad son deshabilitadas.
El kernel
del sistema de operación salva el estado actual del proceso interrumpido
Transfiere
su ejecución a una dirección fija. Esta dirección por lo general contiene la
dirección de comienzo donde la rutina de servicio de la interrupción se
encuentra. Una forma de manejar las interrupciones es invocando una rutina
general que examine la información de la interrupción y determine el tipo de
interrupción ocurrida, y de alli llama a la rutina que se encarga de atender
dicha interrupción. Por lo general se maneja mediante un vector de
interrupciones, indexado por el tipo de interrupción. En este vector se
encuentra la dirección de comienzo de la rutina que da servicio a dicho tipo.
Se le conoce como vector de interrupción. Otra forma de localizar la rutina
apropiada es mediante el pooling, es decir, preguntando a cada
dispositivo pare ver quien requirió el servicio.
Se ejecuta
la rutina de interrupción
Se
restaura el estado anterior
Se
habilitan las interrupciones.
La
arquitectura de interrupciones debe también almacenar la dirección de la
instrucción interrumpida.
Suscribirse a:
Entradas (Atom)