Tratamiento de las interrupciones
Una interrupción se trata en todo caso, después de terminar la ejecución de la instrucción en
curso.
El tratamiento depende de cuál sea el dispositivo de E/S que ha causado la interrupción, ante la
cual debe poder identificar el dispositivo que la ha causado.
La ventaja de este procedimiento es que no se tiene que perder tiempo ejecutando
continuamente rutinas para consultar el estado del periférico. El inconveniente es que el
dispositivo debe tener los circuitos electrónicos necesarios para acceder al sistema de
interrupciones del computador.
Importancia de las interrupciones
El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de
una aplicación, mientras otra permanece a la espera de que concluya una operación en un
dispositivo de E/S.
El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede
intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el
dispositivo, se continúe ejecutando.
En ciertos intervalos de tiempo puede convenir no aceptar señales de interrupción. Por ello las
interrupciones pueden inhibirse por programa (aunque esto no deben poder hacerlo las mismas).
Un ejemplo de sincronismo por interrupción es el almacenamiento de caracteres introducidos
mediante el teclado. Cuando se introduce un carácter, se codifica en el registro de datos del
dispositivo y además se activa un bit del registro de estado quien crea una interrupción en el
hardware. El procesador deja temporalmente la tarea que estaba completando y ejecuta la rutina
de atención a la interrupción correspondiente. El teclado almacena el carácter en el vector de
memoria intermedia ( también llamado buffer) asociada al teclado y despierta el proceso que
había en el estado de espera de la operación de entrada/salida.
EXCEPCIONES DE UN SISTEMA OPERATIVO
Cuando la CPU intenta ejecutar una instrucción incorrectamente construida, la unidad de control
lanza una excepción para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en
una interrupción, la instrucción en curso es abortada. Las excepciones al igual que las
interrupciones deben estar identificadas.
Clases de excepciones
Las instrucciones de un programa pueden estar mal construidas por diversas razones:
El código de operación puede ser incorrecto.
Se intenta realizar alguna operación no definida, como dividir por cero.
La instrucción puede no estar permitida en el modo de ejecución actual.
La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus
permisos de uso.
Importancia de las excepciones
El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de
ejecución de la CPU y los mecanismos de protección de la memoria, que las aplicaciones realicen
operaciones que no les están permitidas. En cualquier caso, el tratamiento específico de una
excepción lo realiza el SO.
Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y éste es el
que trata la situación como convenga.
Es bastante frecuente que el tratamiento de una excepción no retorne al programa que se estaba
ejecutando cuando se produjo la excepción, sino que el SO aborte la ejecución de ese programa.
Este factor depende de la pericia del programador para controlar la excepción adecuadamente
GESTION DE PROCESO EN UN SISTEMA OPERATIVO
Un proceso es un programa en ejecución, incluyendo el valor actual del program counter
(PC), registros y variables.
Un programa es pasivo (es sólo código o texto) y un proceso es activo y dinámico (varía en
el tiempo).
Analogía: Preparar una receta de una torta. El programa es la receta, el proceso es la
actividad que consiste en leer la receta, mezclar los ingredientes y hornear la torta.
Varios procesos pueden estar ejecutando el mismo programa, por ejemplo, si dos o más
usuarios están usando simultáneamente el mismo editor editor de texto. El programa es el
mismo, pero cada usuario tiene un proceso distinto (y con distintos datos).
Conceptualmente cada proceso tiene su propia CPU virtual. En la práctica, hay una sola CPU
real, que cambia periódicamente la ejecución de un proceso a otro.
El sistema operativo es responsable de las siguientes actividades con relación a la
administración de procesos:
La creación y eliminación de procesos tanto del usuario como del Sistema
Operativo
La planificación de los procesos.
La provisión de mecanismos para sincronización, comunicación y manejo de
bloqueos mutuos.
Aunque tradicionalmente un proceso contenía un solo hilo de control mientras se
ejecutaba, la mayoría de los sistemas operativos modernos ahora dan soporte a procesos
que tienen varios Hilos.Así un sistema de cómputo consiste en una colección de procesos
que se ejecutan en la misma máquina de manera concurrente multiplexando
(dividiéndose) el tiempo del procesador ya sean procesos del sistema operativo o
procesos de usuario.
Estados de un proceso
A medida que se ejecuta un proceso, cambia su estado. El estado de un proceso se define
en parte por la actividad actual de dicho proceso. Cada proceso puede estar en alguno de
los siguientes estados:
Nuevo: El proceso se está creando.
Ejecución: Se están ejecutando instrucciones.
En espera: El proceso está esperando a que ocurra algún evento (Como la terminación de
una operación de entrada o salida, o la recepción de una señal.
Listo: El proceso está en espera de ser asignado a un procesador.
Terminado: El proceso ha terminado su ejecución.
Bloque de Control del Proceso
Cada proceso se representa en el sistema operativo mediante un bloque de control del
proceso (Process Control Block PCB) también denominado bloque de control de tarea.
Un proceso es un objeto con operaciones y atributos: (datos). Este bloque representa la
parte de los datos del proceso. Estos datos se almacenan dentro de la siguiente estructura:
Estado (ejecutando, listo, bloqueado)
Program counter
Registros de CPU
Información para planificación (p.ej., prioridad)
Información para administración de memoria (p.ej., registros base y límite)
Información de I/O: dispositivos y recursos asignados al proceso, archivos
abiertos, etc.
Estadísticas y otros: tiempo real y tiempo de CPU usado, identificador del proceso,
identificador del dueño, etc.
Creación de Procesos
Un proceso puede crear varios procesos nuevos, a través de una llamada al sistema para la
creación de procesos, durante el curso de la ejecución. El proceso creador se denomina
proceso padre, en tanto que los nuevos son sus hijos. Cada uno de estos nuevos procesos a
su vez pueden crear otros, formando así un arbol de procesos.Cuando un proceso se crea
como nuevo existen dos posibilidades en términos de ejecución:
1. El padre continúa ejecutándose de manera concurrente con sus hijos.
2. El padre espera hasta que alguno de sus hijos haya terminado.
Terminación de un Proceso
Un proceso concluye cuando termina de ejecutar su sentencia final, y le pide al sistema
operativo que lo borre usando la llamada exit. En dicho punto el proceso puede regresar
datos de salida a su padre. Todos los recursos del proceso incluyendo memoria y buffers,
son liberados por el sistema operativo.Existen circunstancias adicionales en las que ocurre
terminación. Un proceso puede ocasionar la terminación de otro, mediante la llamada
apropiada al sistema del evento abort. Esta llamada solo se permite de procesos padre a
hijos.Un padre puede terminar la ejecución de uno de sus hijos por varias razones:
El hijo ha excedido el uso de alguno de los recursos que tiene asignados.
Ya no se requiere la tarea asignada al hijo.
El padre está saliendo y el sistema no permite que un hijo continúe si su padre
termina.
Gestión de la memoria
En un sistema operativo moderno, la gestión de la memoria corre a cargo de un subsitema básico
que se encarga de:
Presentar a los procesos un espacio de memoria contiguo, aunque se estén utilizando
diferentes espacios (memoria principal y memoria secundaria)
Optimizar la manera en la que se utiliza la memoria:
Los datos e instrucciones con los que se trabaja deben estar en memoria principal
Los datos e instrucciones con los que no se trabaja pueden estar descargados a
memoria secundaria
Se debe evitar los fallos de página (necesitar algo que está en memoria secundaria, lo
que nos obliga a esperar a que se traiga hasta memoria principal)
Se debe utilizar la memoria principal disponible para acelerar la entrada/salida (buffers y
caché)
Entre los problemas que debe solucionar la gestión de memoria se encuentran:
Reubicación:
Como la memoria disponible estará compartida por varios procesos, el programador no
puede conocer mientras programa qué área de memoria se asignará al proceso que está
programando. Cuando se ejecute el programa, el SO asignará un bloque de memoria libre,
que podrá ser diferente en cada ejecución.
Protección:
No resulta conveniente que un proceso pueda acceder (para leer y/o modificar) al espacio
de memoria asignado a otro proceso. El SO debe garantizar la protección de memoria, de
manera que se eviten accesos indebidos accidentales o intencionados.
Compartición:
En ocasiones algunos procesos necesitan intercambiar datos. Estos procesos pueden
querer compartir un área de memoria a la que ambos tengan acceso. El sistema de gestión
de memoria debe permitir en estos casos que los procesos autorizados accedan al bloque
de memoria que comparten, de manera similar a como el sistema de ficheros permite a
través de los permisos que varios usuarios compartan un fichero.
Organización lógica:
Normalmente en un sistema informático la memoria principal está organizada de forma
lineal como una secuencia de posiciones de memoria. Del mismo modo la memoria
secundaria se puede ver como una secuencia de bloques. Esta organización física no se
corresponde con la visión del programador que estructura su programa en diferentes
módulos. El sistema gestor de memoria debe permitir organizar lógicamente partes de la
memoria para acercarse a la visión del programador. La técnica que más fácilmente
sastisface esta necesidad es la segmentación.
Organización física:
Físicamente la memoria está organizada en dos espacios claramente diferenciados:
Memoria principal rápida, volátil y escasa
Memoria secundaria lenta, persistente y abundante
De manera que el SO debe gestionar el trasvase de información entre los dos espacios
descargando al programador de esta tarea.
GESTION DE ALMACENAMIENTO SECUNDARIO
El procesador es el dispositivo encargado de ejecutar
instrucciones dadas a una computadora las cuales toma de
la memoria de acceso aleatorio (RAM). Este tipo de
memoria constituye la memoria principal, la cual tiene una
velocidad de lectura y escritura elevadas; mas no es
posible almacenar de forma indefinida información, es
decir, en el momento en que se detenga el flujo de
corriente, la información contenida en el se perderá.
Existen otros medios de almacenamiento, capaces de retener la información de forma indeterminada
en el tiempo sin necesidad de un flujo constante de corriente. Estos medios se denominan dispositivos
de almacenamiento secundario. Estos dispositivos, en contraste con la memoria de acceso aleatorio,
tienen una velocidad de lectura y escritura mucho menor.
El sistema operativo tiene la responsabilidad de gestionar el almacenamiento secundario. Los
dispositivos de almacenamiento secundario difieren en sus procedimientos para leer y escribir. Todo
sistema operativo debe encargarse de gestionar el almacenamiento secundario porque es básico para
muchas funciones, sobre todo el disco magnético, que al ser de acceso aleatorio permite ser visto
como una extensión de la memoria principal. Esto es especialmente útil porque la memoria principal
es pequeña y volátil.
El disco es importante porque en él están almacenados los
programas y los datos necesarios para éstos. Toda ejecución
de programas supone interactuar con los discos. Las
funciones del sistema operativo se encargan de la gestión del
espacio libre, permitiendoque los procesos guarden sus
información en archivos.
Un dispositivo de almacenamiento puede usarse para guardar la información de forma continua, la
cual se va a necesitar en un futuro. Entonces el sistema operativo debe controlar la información que
se ha escrito en el dispositivo de tal manera que pueda recuperarla, además debe cuidar la
sobreescritura en el disco.
En la actualidad los sistemas operativos tienen que lidiar con los procesos concurrentes. Pueden
existir varios procesos que deseen accesar a las unidades de almacenamiento y estas solicitudes son
atendidas según un plan de discos