Interrupciones y Llamadas Al Sistema
Interrupciones y Llamadas Al Sistema
Hay muchos tipos de interrupciones y pare cada uno de estas existe una rutina en
el sistema de operación que le da servicio. Los sistemas de operación actuales
permiten a los dispositivos tales como E/S o reloj del sistema interrumpir el CPU
asíncronamente
Dentro de un computador
Cuando una computadora se encuentra realizando un proceso este puede
interrumpirse por cualquiera de las dos causas siguientes:
1.- Que se haya presentado una causa que impida que siga adelante un trabajo o
un programa que no haya terminado:
2.- Es que haya llegado el fin lógico de un programa o de un trabajo: en este caso
el sistema operativo debe retirar el control al programa que ha terminado de
introducir una nueva tarea si se tiene alguna espera esta interrupción no representa
un mayor problema ya que solo puede darse cuando el programa que se encuentra
en proceso demanda a través de una instrucción su propio fin.
Llamada al sistema.
Llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.
Llamadas al sistema no bloqueantes: son aquellas llamadas en las que, si lo que
se solicita no está disponible, el proceso no se queda bloqueado, sino que
devuelven un valor especial indicando la condición de información no disponible
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.
move: mover archivos
copy: copiar archivos
Adminsitració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
establer los atributos de procesos, archivos o dispositivos
Comunicaciones
crear, eliminar conexiones de comunicación
enviar, recibir mensajes
transferir información de estado
conectar y desconectar dispositivos remotos. (i43)
Llamadas al sistema
Abrir archivo
Crear archivo
Proteger archivo
Escribir mensaje en consola
Terminar en forma anormal
Borrar archivo
Leer archivo
Modificar archivo (i39)
CreateProcess de win32
get hostid: Cada computadora de red tiene un nombre de host. Un host tiene
un identificador de red. Ésta llamada al sistema hace esa traducción (i49)
get processid: Cada proceso tiene un nombre de proceso y este nombre se
traduce en un identificador mediante el cual el so hace referencia al proceso.
Ésta llamada al sistema realiza la traducción
Modos de direccionamientos
Direccionamiento implícito
Depende solamente de la instrucción, es decir, la instrucción no lleva parámetros.
Particularmente en instrucciones que no accesan memoria, o bien que tienen una
forma específica de accesarla.
Ejemplos: PUSHF, POPF, NOP
Modo registro
Usa solamente registros como operandos
Es el más rápido, pues minimiza los recursos necesarios (toda la información fluye
dentro del EU del CPU)
Ejemplo:
MOV AX, BX
Modo inmediato
Tiene dos operandos: un registro y una constante que se usa por su valor.
El valor constante no se tiene que buscar en memoria, pues ya se obtuvo al hacer
el “fetch” de la instrucción.
Ejemplo:
MOV AH, 9
Modo directo
Uno de los operandos involucra una localidad específica de memoria
El valor constante se tiene que buscar en memoria, en la localidad especificada.
Es más lento que los anteriores, pero es el más rápido para ir a memoria, pues ya
“sabe” la localidad, la toma de la instrucción y no la tiene que calcular.
Ejemplo:
MOV AH, [0000]
MOV AH, Variable
Estas dos instrucciones serían equivalentes, si Variable está, por ejemplo, en la
localidad 0 de memoria. En la forma primitiva del lenguaje de máquina, como el
primer ejemplo, se tiene que indicar “mover a AH el contenido (indicado por los
corchetes), de la localidad 0 de los datos (lo de los datos es implícito). El lenguaje
Ensamblador, sin embargo, nos permite la abstracción del uso de variables, pero
como una variable tiene una localidad determinada en memoria, para el procesador
funciona igual. La única diferencia consiste en que el programador no tiene que
preocuparse por la dirección, ese manejo lo hace automáticamente el Ensamblador.
Modo indirecto
Se usan los registros SI, DI como apuntadores
El operando indica una localidad de memoria, cuya dirección (sólo la parte
desplazamiento) está en SI o DI.
Es más lento que los anteriores, pues tiene que “calcular” la localidad
Ejemplos:
MOV AL, [SI]
MOV BL, ES:[SI] ; Aquí se dice que se usa un “segment override”, donde se indica
que en vez de usar el segmento de datos por defecto, se use en su lugar como
referencia el segmento extra.