- Controlar
todas las partes del sistema.
- Presentar
al usuario una interfaz o máquina virtual.
- Se
trata de software que generalmente se localiza en la memoria de solo
lectura.
- Busca
las instrucciones de lenguaje de máquina para ejecutarlas como una serie
de pequeños pasos.
- El
conjunto de instrucciones que interpreta define al lenguaje de máquina.
- En
ciertas máquinas se implanta en el hardware y no es en realidad una capa
distinta.
- Generalmente
posee entre 50 y 300 instrucciones, sirviendo la mayoría para desplazar
datos, hacer operaciones aritméticas y comparar valores.
- Los
dispositivos de e / s (entrada / salida) se controlan al cargar valores en
registros del dispositivo especiales.
- Definir
la “Interfaz del Usuario”.
- Compartir
el hardware entre usuarios.
- Permitir
a los usuarios compartir los datos entre ellos.
- Planificar
recursos entre usuarios.
- Facilitar
la entrada / salida.
- Recuperarse
de los errores.
- Procesadores.
- Almacenamiento.
- Dispositivos
de e / s.
- Datos.
- Operadores.
- Programadores
de aplicaciones.
- Programadores
de sistemas (administradores del S. O.).
- Programas.
- Hardware.
- Usuarios.
- Un
programa que se está ejecutando.
- Una
actividad asincrónica.
- El emplazamiento
del control de un procedimiento que está siendo ejecutado.
- Aquello
que se manifiesta por la existencia en el Sistema Operativo de un bloque
de control de proceso.
- Aquella
entidad a la cual son asignados los procesadores.
- La
unidad despachable.
- En
ejecución de instrucciones de programa con más de un procesador de
instrucciones en uso simultáneamente.
- Con
la superposición de ejecución de instrucciones de programa con la
ejecución de una o más operaciones de entrada / salida.
El objetivo es aumentar el paralelismo en la ejecución.
- Todo
el software ejecutable, inclusive el Sistema Operativo, se organiza en
varios procesos secuenciales o procesos.
- Un
proceso incluye al programa en ejecución y a los valores activos del
contador, registros y variables del mismo.
- Conceptualmente
cada proceso tiene su propia CPU virtual.
- Si la
cpu alterna entre los procesos, la velocidad a la que ejecuta un proceso
no será uniforme, por lo que es necesario aclarar lo siguiente:
- Que los procesos no deben programarse con hipótesis
implícitas acerca del tiempo.
- Que normalmente la mayoría de los procesos no son
afectados por la multiprogramación subyacente de la CPU o las velocidades
relativas de procesos distintos.
- Un
proceso es una actividad de un cierto tipo, que tiene un programa,
entrada, salida y estado.
- Un
solo procesador puede ser compartido entre varios procesos con cierto “algoritmo
de planificación” , el cual determina cuándo detener el trabajo en un
proceso y dar servicio a otro distinto (ver Figura 2.1).
En cuanto a las jerarquías de procesos es necesario señalar que los Sistemas Operativos deben disponer de una forma de crear y destruir procesos cuando se requiera durante la operación, teniendo además presente que los procesos pueden generar procesos hijos mediante llamadas al Sistema Operativo, pudiendo darse ejecución en paralelo.
- Cada
proceso es una entidad independiente pero frecuentemente debe interactuar
con otros procesos (ver Figura 2.2).
- Los
procesos pueden bloquearse en su ejecución porque:
- Desde el punto de vista lógico no puede continuar
porque espera datos que aún no están disponibles.
- El Sistema Operativo asignó la cpu a otro proceso.
- Los
estados que puede tener un proceso
son (ver Figura 2.3):
- En ejecución: utiliza la cpu en el instante dado.
- Listo:
ejecutable, se detiene en forma temporal para que se ejecute otro
proceso.
- Bloqueado: no se puede ejecutar debido a la ocurrencia de
algún evento externo.
- Son
posibles cuatro transiciones entre estos estados.
- Estado actual del proceso.
- Identificación única del proceso.
- Prioridad del proceso.
- Apuntadores para localizar la memoria del proceso.
- Apuntadores Para asignar recursos.
- Área para preservar registros.
Cuando el Sistema Operativo cambia la atención de la cpu entre los procesos, utiliza las áreas de preservación del PCB para mantener la información que necesita para reiniciar el proceso cuando consiga de nuevo la CPU.
- Dar nombre al proceso.
- Insertar un proceso en la lista del sistema de procesos
conocidos.
- Determinar la prioridad inicial del proceso.
- Crear el bloque de control del proceso.
- Asignar los recursos iníciales del proceso.
Un proceso puede “crear un nuevo proceso”, en cuyo caso el proceso creador se denomina “proceso padre” y el proceso creado “proceso hijo” y se obtiene una “estructura jerárquica de procesos”.
- Borrarlo del sistema.
- Devolver sus recursos al sistema.
- Purgarlo de todas las listas o tablas del sistema.
- Borrar su bloque de control de procesos.
Un proceso “suspendido” no puede proseguir hasta que otro proceso lo reanude. Reanudar (reactivar) un proceso implica reiniciarlo en el punto donde fue suspendido.
- Obtiene el control.
- Salva el estado del proceso interrumpido, generalmente
en su bloque de control de procesos.
- Analiza la interrupción.
- Transfiere el control a la rutina apropiada para la
manipulación de la interrupción.
Una interrupción puede ser iniciada por un proceso en estado de ejecución o por un evento que puede o no estar relacionado con un proceso en ejecución.
- “SVC (llamada al supervisor)”: es
una petición generada por el usuario para un servicio particular del
sistema, por ejemplo, realización de Entrada / Salida u obtención de más
memoria.
- “Entrada / Salida”: son
iniciadas por el hardware de Entrada / Salida, indicando a la CPU que ha
cambiado el estado de un canal o dispositivo, por ejemplo, finalización de
Entrada / Salida u ocurrencia de un error.
- “Externas”: son causadas por distintos
eventos, por ejemplo, expiración de un cuanto en un reloj de interrupción
o recepción de una señal de otro procesador en un sistema multiprocesador.
- “De reinicio”: ocurren
al presionar la “tecla de reinicio” o cuando llega una instrucción de
reinicio de otro procesador en un sistema multiprocesador.
- “De verificación de programa”: son
causadas por errores producidos durante la ejecución de procesos, por
ejemplo:
- Un intento de dividir por
cero.
- Un intento de un proceso de
usuario de ejecutar una instrucción privilegiada.
- Un intento de ejecutar un
código de operación inválido.
- “De verificación de máquina”: son
ocasionadas por un mal funcionamiento del hardware.
Tipo de Interrupción
|
Descripción
|
SVC
|
Llamada al Sistema Operativo
|
Entrada / Salida
|
Cambio de estado de un canal o dispositivo
|
Externa
|
Evento externo al sistema
|
De Reinicio
|
Reinicio del procesamiento
|
De Verificación de Programa
|
Errores de procesos
|
De Verificación de Máquina
|
Errores de hardware
|
Tabla 2.1: Tipos de
interrupciones.
|
Cuando se produce una interrupción el Sistema Operativo efectúa las siguientes acciones:
- Salva el estado del proceso interrumpido.
- Dirige el control al manipulador de interrupciones
adecuado.
- Se aplica la técnica de “Cambio de Contexto” .
Los Sistemas Operativos instrumentan información de control que puede aparecer como las “Palabras de Estado de Programa (PSW)”, las cuales controlan el orden de ejecución de las instrucciones y contienen información sobre el estado del proceso.
- Solo una PSW actual.
- Seis PSW nuevas (una para cada tipo de interrupción).
- Seis PSW viejas (una para cada tipo de interrupción).
La PSW nueva para un tipo de interrupción dado contiene la dirección en el hardware donde reside el manipulador de interrupciones para este tipo específico.
- El hardware cambia las PSW en los casos siguientes:
- Al almacenar la PSW actual en
la PSW vieja, para este tipo de interrupción.
- Al almacenar la PSW nueva en
la PSW actual, para este tipo de interrupción.
- Luego de este “intercambio de PSW”:
- La PSW actual contiene la
dirección del manipulador de interrupción adecuado.
- El manipulador de
interrupciones procesa la interrupción.
- Luego de procesar la
interrupción, la cpu es enviada al:
- Proceso que estaba en
ejecución en el momento de la interrupción, o al
- Proceso de listo de más alta
prioridad.
- La acción precedente depende
de si el proceso de interrupción es:
- “Apropiativo”:
obtiene la cpu solo si no hay procesos de listos.
- “No apropiativo”:
obtiene de nuevo la cpu.
- Manipulación de interrupciones.
- Creación y destrucción de procesos.
- Cambio de estados de procesos.
- Despacho.
- Suspensión y reanudación de procesos.
- Sincronización de procesos.
- Comunicación entre procesos.
- Manipulación de bloques de control de proceso.
- Soporte de las actividades de Entrada / Salida.
- Soporte de la asignación y desasignación de
almacenamiento.
- Soporte del sistema de archivos.
- Soporte de un mecanismo de llamada / regreso al
procedimiento.
- Soporte de ciertas funciones contables (estadísticas)
del sistema.
Criterio
|
Descripción
|
Equidad
|
Garantizar que cada proceso obtiene su proporción justa de
la cpu
|
Eficacia
|
Mantener ocupada la cpu el ciento por ciento del tiempo
|
Tiempo de respuesta
|
Minimizar el tiempo de respuesta para los usuarios
interactivos
|
Tiempo de regreso
|
Minimizar el tiempo que deben esperar los usuarios por
lotes (batch) para obtener sus resultados
|
Rendimiento
|
Maximizar el número de tareas
procesadas por hora
|
Tabla 2.2: Criterios de un buen
algoritmo de planificación.
|
- Planificación apropiativa: es
la estrategia de permitir que procesos ejecutables (desde el punto de
vista lógico) sean suspendidos temporalmente.
- Planificación no apropiativa: es
la estrategia de permitir la ejecución de un proceso hasta terminar.
- Planificación del procesador:
determinar cuándo deben asignarse los procesadores y a qué procesos, lo
cual es responsabilidad del Sistema Operativo.
- Planificación de alto nivel:
- También se denomina
Planificación de trabajos.
- Determina a qué trabajos se
les va a permitir competir activamente por los recursos del sistema, lo
cual se denomina Planificación de admisión.
- Planificación de nivel intermedio:
- Determina a qué procesos se
les puede permitir competir por la cpu.
- Responde a fluctuaciones a
corto plazo en la carga del sistema y efectúa “suspensiones” y
“activaciones” (“reanudaciones”) de procesos.
- Debe ayudar a alcanzar ciertas
metas en el rendimiento total del sistema.
- Planificación de bajo nivel:
- Determina a qué proceso listo
se le asigna la CPU cuando esta queda disponible y asigna la cpu al
mismo, es decir que “despacha” la CPU al proceso.
- La efectúa el Despachador
del Sistema Operativo, el que opera muchas veces por segundo y reside
siempre en el almacenamiento primario.
Los distintos Sistemas Operativos utilizan varias Políticas de Planificación, que se instrumentan mediante Mecanismos de Planificación.
- El usuario debe suministrar anticipadamente una lista precisa
de recursos necesarios para el proceso, pero generalmente no se dispone de
dicha información.
- La ejecución del trabajo de plazo fijo no debe producir
una grave degradación del servicio a otros usuarios.
- El sistema debe planificar cuidadosamente sus necesidades
de recursos hasta el plazo fijo, lo que se puede complicar con las
demandas de recursos de nuevos procesos que ingresen al sistema.
- La concurrencia de varios procesos de plazo fijo
(activos a la vez) puede requerir métodos sofisticados de optimización.
- La administración intensiva de recursos puede generar
una considerable sobrecarga adicional.
- Los procesos se despachan con algún esquema de
prioridad.
- Los procesos con igual prioridad se despachan “FIFO”.
- La CPU es apropiada.
- La CPU es otorgada al siguiente proceso en espera.
- El proceso apropiado es situado al final de la lista de
listos.
Entrada / Salida.
- Deben tener prioridad para usar la CPU y efectuar la
siguiente petición de Entrada / Salida, ya que se ejecutará (la operación
de Entrada / Salida) en paralelo con otro proceso que utilice la CPU.
- Si deben esperar mucho tiempo a la CPU estarán ocupando
memoria por un tiempo innecesario.
- Favorecer trabajos cortos.
- Favorecer trabajos limitados por la Entrada / Salida
para optimizar el uso de los dispositivos de Entrada / Salida.
- Determinar la naturaleza de un trabajo lo más rápido
posible y planificar el trabajo (proceso) en consecuencia.
- Habrá procesos ejecutables que se mantengan en disco.
- Habrá importantes implicaciones para la planificación,
tales como las siguientes:
- El tiempo de alternancia entre
procesos para traer y procesar un proceso del disco es considerablemente
mayor que el tiempo para un proceso que ya está en la memoria principal.
- Es más eficiente el
intercambio de los procesos con un planificador de dos niveles.
- Se carga en la memoria principal cierto subconjunto de
los procesos ejecutables.
- El planificador se restringe a ellos durante cierto
tiempo.
- Periódicamente se llama a un planificador de nivel
superior para efectuar las siguientes tareas:
- Eliminar de la memoria los
procesos que hayan permanecido en ella el tiempo suficiente.
- Cargar a memoria los procesos
que hayan estado en disco demasiado tiempo.
- El planificador de nivel inferior se restringe de nuevo
a los procesos ejecutables que se encuentren en la memoria.
- El planificador de nivel superior se encarga de
desplazar los procesos de memoria a disco y viceversa.
- ¿Cuánto tiempo ha transcurrido desde el último
intercambio del proceso?.
- ¿Cuánto tiempo de cpu ha utilizado recientemente el
proceso?.
- ¿Qué tan grande es el proceso? (generalmente los
procesos pequeños no causan tantos problemas en este sentido).
- ¿Qué tan alta es la prioridad del proceso?.
- Poderlos
ejecutar.
- Referenciarlos
directamente.
- “Ley
de Parkinson parafraseada”: Los programas se desarrollan para ocupar toda
la memoria disponible para ellos.
- Lleva
un registro de las partes de memoria que se están utilizando y de aquellas
que no.
- Asigna
espacio en memoria a los procesos cuando estos la necesitan.
- Libera
espacio de memoria asignada a procesos que han terminado.
- ¿ se
coloca un solo programa de usuario o varios ?.
- Si se
encuentran varios programas de usuario:
- ¿ se concede a cada uno la misma cantidad de espacio o
se divide el almacenamiento en porciones o “particiones” de
diferente tamaño ?.
- ¿ se utilizará un esquema rígido de número y tamaño de
particiones o un esquema dinámico y adaptable ?.
- ¿ se requerirá que los trabajos de los usuarios sean
diseñados para funcionar en una partición específica o se permitirá que
se ejecuten en cualquiera donde quepan ?.
- ¿ se requerirá o no que cada trabajo sea colocado en
un bloque contiguo de memoria ?.
Independientemente del esquema de organización hay que decidir las estrategias que se utilizarán para optimizar el rendimiento.
- ¿cuándo
se consigue un nuevo programa para colocar en la memoria?:
- ¿cuando el sistema lo pide específicamente o se
intenta anticiparse a las peticiones?
- ¿dónde
se colocará el programa que se ejecutará a continuación?:
- ¿se prioriza el tiempo de carga o la optimización en
el uso del almacenamiento?
- ¿con
qué criterio se desplazarán programas?
- Estrategias
de búsqueda:
- Estrategias de búsqueda por demanda.
- Estrategias de búsqueda anticipada.
- Estrategias
de colocación.
- Estrategias
de reposición.
- Se
usan para producir programas relocalizables que puedan ser ejecutados en
cualquier partición disponible de tamaño suficiente para aceptarlos (ver
Figura 3.6 ).
- Son
más complejos que los absolutos.
- Mejoran
la utilización del almacenamiento.
- Confieren
más flexibilidad en el armado de la carga de procesos.
- Delineados
con dos registros.
- Indicados
el límite inferior o superior y el tamaño de la partición o región.
- Los
trabajos del usuario no llenan completamente sus particiones designadas.
- Una
partición permanece sin usar porque es demasiado pequeña para alojar un
trabajo que está en espera.
- Pueden
ser usados por otros trabajos que cuando finalizan dejan otros “agujeros”
menores.
- En
sucesivos pasos los “agujeros” son cada vez más numerosos pero más
pequeños, por lo que se genera un desperdicio de memoria principal.
- Podría
ser suficiente (el total global disponible) para alojar a procesos
encolados en espera de memoria.
- Podría
no ser suficiente ningún área libre individual (ver Figura 3.10).
- Deja
un solo agujero grande de memoria libre contigua.
- Esta
técnica se denomina “recogida de residuos” (ver Figura 3.11).
- La
información de relocalización debe ser de accesibilidad inmediata.
- “Estrategia
de mejor ajuste”:
- Un trabajo nuevo es colocado en el agujero en el cual
quepa de forma más ajustada:
- Debe dejarse el menor espacio
sin usar.
- “Estrategia
de primer ajuste”:
- Un trabajo nuevo es colocado en el primer agujero
disponible con tamaño suficiente para alojarlo.
- “Estrategia
de peor ajuste”:
- Consiste en colocar un programa en el agujero en el
que quepa de la peor manera, es decir en el más grande posible:
- El agujero restante es
también grande para poder alojar a un nuevo programa relativamente
grande.
- Cede
el almacenamiento y la CPU al siguiente trabajo.
- La
totalidad del almacenamiento se dedica a un trabajo durante un breve
período de tiempo.
- Los
trabajos son “intercambiados”, dándose que un trabajo puede ser
intercambiado varias veces antes de llegar a su terminación.
- Manteniendo
al mismo tiempo varias “imágenes de usuario o imágenes de memoria”
en la memoria principal.
- Retirando
una imagen de usuario de la memoria principal solo cuando es necesario su
almacenamiento para una nueva imagen.
- Incrementando
la cantidad de memoria principal disponible en el sistema.
- Técnicas
de “paginación”.
- Técnicas
de “segmentación”.
- Una
combinación de ambas técnicas.
- Real:
- Sistemas dedicados a un solo usuario.
- Real:
- Sistemas de multiprogramación en memoria real:
- Multiprogramación en
partición fija:
- Absoluta.
- Relocalizable (reubicable).
- Multiprogramación en
partición variable.
- Virtual:
- Multiprogramación en almacenamiento virtual:
- Paginación pura.
- Segmentación pura.
- Combinación paginación /
segmentación.
- De
las direcciones a las que hace referencia un programa.
- De
las direcciones disponibles en la memoria real (almacenamiento primario).
- “Direcciones
virtuales”:
- Son las referidas por un proceso en ejecución.
- “Direcciones
reales”:
- Son las disponibles dentro del almacenamiento
primario.
- “Espacio
de direcciones virtuales (v)”
de un proceso:
- Es el número de direcciones virtuales a que puede
hacer referencia el proceso.
- “Espacio
de direcciones reales (r)”
de un computador:
- Es el número de direcciones reales disponibles en el
ordenador.
- Las
direcciones virtuales deben ser transformadas dentro de las direcciones
reales, mientras el proceso está en ejecución.
- La traducción
de direcciones deberá hacerse rápidamente para no degradar al sistema.
- Permitir
que el espacio de direcciones virtuales de un usuario sea mayor que
el espacio de direcciones reales.
- Soportar
multiprogramación de forma efectiva en un sistema con muchos
usuarios que compartan el almacenamiento real.
- Primer
nivel: “almacenamiento real ”:
- En él se ejecutan los procesos y en él deben estar los
datos para que un proceso pueda referirse a ellos.
- Segundo
nivel: “almacenamiento auxiliar, secundario o adicional ”:
- Generalmente consta de discos de gran capacidad que
pueden mantener los programas y datos que no caben al mismo tiempo en el
más limitado almacenamiento real.
- Cada
proceso puede tener un espacio de direcciones virtuales mucho mayor que el
almacenamiento real.
- Solo
se mantiene al mismo tiempo una pequeña parte de los programas y datos de
cada proceso en el almacenamiento real.
- “s” es el número del segmento.
- “p” es el número de página.
- “d” es el desplazamiento en la
página donde se encuentra asignado el elemento deseado.
- Si se
encuentra (s,p), entonces el marco de página “p ’ ” en el
cual reside dicha página en la memoria real, se concatena al
desplazamiento “d” para formar la dirección de memoria real “r”
correspondiente a la dirección virtual v= (s,p,d).
- Si no
se encuentra (s,p), entonces:
- La dirección base “b” de la tabla de segmentos
se añade al número de segmento “s” formando la dirección “b +
s” de la entrada de la tabla de mapa de segmentos para el segmento “s”
de la memoria real.
- La entrada de la tabla de mapa de segmentos indica la
dirección base “s ’ ” de la tabla de páginas para el segmento “s”.
- El número de página “p” se añade a “s ’ ”
formando la dirección “p + s ’ ” de la entrada en la tabla de
páginas para la página “p” del segmento “s”:
- Indica que “p ’ ” es
el número del marco correspondiente a la página virtual “p”.
- “p ’ ” se concatena con el
desplazamiento “d” formando la dirección real “r ” que
corresponde a la dirección virtual v = (s,p,d).
- Un
ciclo de almacenamiento para acceder a la tabla de mapa de segmentos.
- Un
segundo ciclo de almacenamiento para hacer referencia a la tabla de
mapa de páginas.
- Un
tercer ciclo de almacenamiento para referenciar al elemento deseado del almacenamiento
real.
- El
sistema correría casi a 1 / 3 de su velocidad nominal.
- La
traducción de direcciones insumiría 2 / 3 del tiempo.
- Paginación.
- Segmentación.
- Segmentación
y paginación.
- “Estrategias
de búsqueda”:
- Tratan de los casos en que una página o segmento deben
ser traídos del almacenamiento secundario al primario.
- Las estrategias de “búsqueda por demanda”
esperan a que se haga referencia a una página o segmento por un proceso
antes de traerlos al almacenamiento primario.
- Los esquemas de “búsqueda anticipada” intentan
determinar por adelantado a qué páginas o segmentos hará referencia un
proceso para traerlos al almacenamiento primario antes de ser
explícitamente referenciados.
- “Estrategias
de colocación”:
- Tratan del lugar del almacenamiento primario donde se colocará
una nueva página o segmento.
- Los sistemas toman las decisiones de colocación de una
forma trivial ya que una nueva página puede ser colocada dentro de
cualquier marco de página disponible.
- “Estrategias
de reposición”:
- Tratan de la decisión de cuál página o segmento
desplazar para hacer sitio a una nueva página o segmento cuando el
almacenamiento primario está completamente comprometido.
- El
principio de optimización.
- Reposición
de páginas al azar.
- Primero
en entrar - primero en salir.
- Menos
recientemente usada.
- Menos
frecuentemente usada.
- No
usada recientemente.
- Conjuntos
de trabajo.
- Superando
las limitaciones del almacenamiento real.
- Trascendiendo
a la duración de los procesos que las utilizan o generan.
- Independizando
a la información de los procesos permitiendo el acceso a la misma a través
de varios procesos.
- Debe
ser posible almacenar una cantidad muy grande de información.
- La
información debe sobrevivir a la conclusión del proceso que la utiliza.
- Debe
ser posible que varios procesos tengan acceso concurrente a la
información.
- Los
archivos deben ser persistentes, es decir que no deben verse
afectados por la creación o terminación de un proceso.
- Los
archivos son una colección de datos con nombre.
- Pueden
ser manipulados como una unidad por operaciones como: open, close, create,
destroy, copy, rename, list.
- Los
elementos de datos individuales dentro del archivo pueden ser manipulados
por operaciones como: read, write, update, insert, delete.
- Ej.: “Acceso
de Lectura”, “Acceso de Escritura”, “Acceso de Ejecución”,
varias combinaciones de estos, etc.
- La
pérdida accidental de información.
- La
destrucción maliciosa de información.
- Debe
suministrar una “visión lógica” de los datos y de las funciones que
serán ejecutadas, en vez de una “visión física”.
- El
usuario no debe tener que preocuparse por:
- Los dispositivos particulares.
- Dónde serán almacenados los datos.
- El formato de los datos en los dispositivos.
- Los medios físicos de la transferencia de datos hacia
y desde los dispositivos.
- “Métodos
de acceso”
relacionados con la manera de acceder a los datos almacenados en archivos.
- “Administración
de archivos”
referida a la provisión de mecanismos para que los archivos sean
almacenados, referenciados, compartidos y asegurados.
- “Administración
del almacenamiento auxiliar”
para la asignación de espacio a los archivos en los dispositivos de
almacenamiento secundario.
- “Integridad
del archivo” para
garantizar la integridad de la información del archivo.
- Se
utiliza una “raíz” para indicar en qué parte del disco comienza el “directorio
raíz ”.
- El “directorio
raíz” apunta a los “directorios de usuarios”.
- Un “directorio
de usuario” contiene una entrada para cada uno de los archivos del
usuario.
- Cada
entrada de archivo apunta al lugar del disco donde está almacenado el
archivo referenciado.
- La
parte posterior al punto es la extensión de archivo y generalmente
indica algo relativo al archivo, aunque las extensiones suelen ser meras
convenciones.
- “Secuencia
de bytes”:
- El archivo es una serie no estructurada de bytes.
- Posee máxima flexibilidad.
- El S. O. no ayuda pero tampoco estorba.
- “Secuencia
de registros”:
- El archivo es una secuencia de registros de longitud
fija, cada uno con su propia estructura interna.
- “Árbol
”:
- El archivo consta de un árbol de registros, no
necesariamente de la misma longitud.
- Cada registro tiene un campo key (llave
o clave) en una posición fija del registro.
- El árbol se ordena mediante el campo de clave para
permitir una rápida búsqueda de una clave particular.
- Los Archivos
Regulares son aquellos que contienen información del usuario.
- Los Directorios
son archivos de sistema para el mantenimiento de una estructura del
sistema de archivos.
- Los Archivos
Especiales de Caracteres:
- Tienen relación con la e / s.
- Se utilizan para modelar dispositivos seriales de e /
s (terminales, impresoras, redes, etc.).
- Los Archivos
Especiales de Bloques se utilizan para modelar discos.
- Acceso
Secuencial: el
proceso lee en orden todos los registros del archivo comenzando por el
principio, sin poder:
- Saltar registros.
- Leer en otro orden.
- Acceso
Aleatorio: el
proceso puede leer los registros en cualquier orden utilizando dos métodos
para determinar el punto de inicio de la lectura:
- Cada operación de lectura (read) da la posición en el
archivo con la cual iniciar.
- Una operación especial (seek) establece la posición de
trabajo pudiendo luego leerse el archivo secuencialmente.
- La
pérdida de datos.
- Los
intrusos.
- Actos
y hechos diversos, como incendios, inundaciones, terremotos, guerras,
revoluciones, roedores, etc.
- Errores
de hardware o de software, como fallas en la cpu, discos o cintas
ilegibles, errores de telecomunicación, errores en los programas, etc.
- Errores
humanos, por ej., entrada incorrecta de datos, mal montaje de cintas o
discos, ejecución incorrecta de programas, pérdida de cintas o discos,
etc.
- Pasivos: solo desean leer archivos que
no están autorizados a leer.
- Activos: desean hacer cambios no
autorizados a los datos.
- Hay
que tener en cuenta el tipo de intrusos contra los que se desea tener
protección.
- Hay
que ser consciente de que la cantidad de esfuerzo que se pone en la
seguridad y la protección depende claramente de quién se piensa sea el
enemigo.
- Curiosidad
casual de usuarios no técnicos.
- Conocidos
(técnicamente capacitados) husmeando.
- Intentos
deliberados por hacer dinero.
- Espionaje
comercial o militar.
- Protección
de las personas respecto del mal uso de la información en contra de uno
mismo.
- Implica
aspectos legales y morales.
- Modificar
un programa normal para que haga cosas adversas además de su función
usual.
- Arreglar
las cosas para que la víctima utilice la versión modificada.
- Fue
liberado por Robert Tappan Morris el 02/11/88 e hizo que se bloquearan la
mayoría de los sistemas Sun y Vax de Internet (fue descubierto y
condenado).
- Constaba
de un programa arrancador y del gusano propiamente dicho.
- Utilizaba
fallas se seguridad del Unix y de los programas Finger y Sendmail de
Internet.
- El
sistema no debe:
- Verificar el permiso.
- Determinar que el acceso está permitido.
- Abandonar esta información para su uso posterior.
- El sistema
tampoco debe:
- Verificar el permiso al abrir un archivo y no después
de abrirlo, pues un acceso habilitado permanecería como válido aunque
haya cambiado la protección del archivo.
- Dotar
de seguridad a un sistema inseguro es casi imposible.
- La
seguridad no es una característica que se pueda añadir fácilmente.
- Los
usuarios no deben sentir que la protección de sus archivos les implica
demasiado trabajo:
- Podrían dejar de proteger sus archivos.
- Se quejarían en caso de problemas.
- No aceptarían fácilmente su propia culpa.
- Cada
pareja determina:
- Un objeto.
- Un subconjunto de las operaciones que se pueden llevar
a cabo en él.
- Existe
una colección de objetos a los que puede tener acceso.
- Cada
objeto tiene cierto conjunto de derechos.
- Los
renglones son los dominios.
- Las
columnas son los objetos.
- Cada
elemento de la matriz contiene los derechos correspondientes al objeto en
ese dominio, por ej.: leer, escribir, ejecutar.
- Desperdician
espacio de almacenamiento.
- Existen
métodos prácticos que almacenan solo los elementos no vacíos por filas o
por columnas.
- Asocia
a cada objeto una lista ordenada con:
- Todos los dominios que pueden tener acceso al objeto.
- La forma de dicho acceso (ej.: lectura (r), grabación
(w), ejecución (x)).
- Asignar
tres bits (r, w, x) para cada archivo, para:
- El propietario, el grupo del propietario y los demás
usuarios.
- Permitir
que el propietario de cada objeto pueda modificar su ACL en cualquier momento:
- Permite prohibir accesos antes permitidos.
- Enviar
comandos a los dispositivos.
- Detectar
las interrupciones.
- Controlar
los errores.
- Proporcionar
una interfaz entre los dispositivos y el resto del sistema:
- Debe ser sencilla y fácil de usar.
- Debe ser la misma (preferentemente) para todos los
dispositivos (independencia del dispositivo).
- Comandos
que acepta el hardware.
- Funciones
que realiza.
- Errores
que puede informar.
- Dispositivos
de bloque.
- Dispositivos
de carácter.
- La
información se almacena en bloques de tamaño fijo.
- Cada
bloque tiene su propia dirección.
- Los
tamaños más comunes de los bloques van desde los 128 bytes hasta los 1.024
bytes.
- Se
puede leer o escribir en un bloque de forma independiente de los demás, en
cualquier momento.
- Un
ejemplo típico de dispositivos de bloque son los discos.
- La
información se transfiere como un flujo de caracteres, sin sujetarse a una
estructura de bloques.
- No se
pueden utilizar direcciones.
- No
tienen una operación de búsqueda.
- Unos
ejemplos típicos de dispositivos de carácter son las impresoras de línea,
terminales, interfaces de una red, ratones, etc.
- Un componente
mecánico.
- Un
componente electrónico, el controlador del dispositivo o
adaptador.
- Para
la mayoría de las micro y mini computadoras:
- Modelo de bus del sistema.
- Para
la mayoría de los mainframes:
- Modelo de varios buses y computadoras especializadas
en e / s llamadas canales de e / s.
- La
comunicación es mediante un flujo de bits en serie que:
- Comienza con un preámbulo.
- Sigue con una serie de bits (de un sector de disco,
por ej.).
- Concluye con una suma para verificación o un código
corrector de errores.
- El preámbulo:
- Se escribe al dar formato al disco.
- Contiene el número de cilindro y sector, el tamaño de
sector y otros datos similares.
- Convertir
el flujo de bits en serie en un bloque de bytes.
- Efectuar
cualquier corrección de errores necesaria.
- Copiar
el bloque en la memoria principal.
- Pueden
ser parte del espacio normal de direcciones de la memoria: e / s
mapeada a memoria.
- Pueden
utilizar un espacio de direcciones especial para la e / s, asignando a
cada controlador una parte de él.
- Obtenga
el control de la cpu.
- Verifique
los resultados de la operación.
Controlador
de e / s
|
Dirección
de e / s
|
Vector
de interrupciones
|
Reloj
|
040 -
043
|
8
|
Teclado
|
060 -
063
|
9
|
Disco
duro
|
320 -
32f
|
13
|
Impresora
|
378 -
37f
|
15
|
Disco
flexible
|
3f0 -
3f7
|
14
|
Rs232
primario
|
3f8 -
3ff
|
12
|
Rs232
secundario
|
2f8 -
2ff
|
11
|
Tabla 5.1: Controladores de e / s, direcciones de e / s y
vector de interrupciones.
|
- El
controlador lee en serie el bloque (uno o más sectores) de la unidad:
- La lectura es bit por bit.
- Los bits del bloque se graban en el buffer interno del
controlador.
- Se
calcula la suma de verificación para corroborar que no existen errores de
lectura.
- El
controlador provoca una interrupción.
- El S.
O. lee el bloque del disco por medio del buffer del controlador:
- La lectura es por byte o palabra a la vez.
- En cada iteración de este ciclo se lee un byte o una
palabra del registro del controlador y se almacena en memoria.
- Se desperdicia
tiempo de la cpu.
- La
dirección del bloque en el disco.
- La
dirección en memoria adonde debe ir el bloque.
- El
número de bytes por transferir.
- Copia
el primer byte o palabra a la memoria principal.
- Lo
hace en la dirección especificada por medio de la dirección de memoria de
DMA.
- Incrementa
la dirección DMA y decrementa el contador DMA en el número
de bytes que acaba de transferir.
- Se
repite este proceso hasta que el contador se anula y por lo tanto el
controlador provoca una interrupción.
- Al
iniciar su ejecución el S. O. luego de la interrupción provocada, no debe
copiar el bloque en la memoria, porque ya se encuentra ahí (ver Figura
5.1).
- Los
bits siguen llegando del disco constantemente.
- No
interesa si el controlador está listo o no para recibirlos.
- Si el
controlador intentara escribir los datos en la memoria directamente:
- Tendría que recurrir al bus del sistema para c / u de
las palabras (o bytes) transferidas.
- El bus podría estar ocupado por otro dispositivo y el
controlador debería esperar.
- Si la siguiente palabra llegara antes de que la
anterior hubiera sido almacenada, el controlador la tendría que almacenar
en alguna parte.
- El
bus no se necesita sino hasta que el DMA comienza.
- La
transferencia DMA a la memoria ya no es un aspecto crítico del tiempo.
- Mientras
transfieren a la memoria, el sector que pasa debajo de la cabeza del disco
se pierde; es decir que el bloque siguiente al recién leído se pierde.
- La
lectura de una pista completa se hará en dos rotaciones completas, una
para los bloques pares y otra para los impares.
- Si el
tiempo necesario para una transferencia de un bloque del controlador a la
memoria por medio del bus es mayor que el tiempo necesario para leer un
bloque del disco:
- Sería necesario leer un bloque y luego saltar dos o
más bloques.
- El salto de bloques:
- Se ejecuta para darle tiempo
al controlador para la transferencia de los datos a la memoria.
- Se llama separación.
- Al formatear el disco, los
bloques se numeran tomando en cuenta el factor de separación (ver
Figura 5.2).
- Esto permite al S. O.:
- Leer los bloques con
numeración consecutiva.
- Conservar la máxima
velocidad posible del hardware.
- Las capas
inferiores se encarguen de ocultar las peculiaridades del hardware a
las capas superiores.
- Las capas
superiores deben presentar una interfaz agradable, limpia y regular a
los usuarios.
- Debe
ser posible escribir programas que se puedan utilizar con archivos en
distintos dispositivos, sin tener que modificar los programas para
cada tipo de dispositivo.
- El
problema debe ser resuelto por el S. O.
- Generalmente
los errores deben manejarse lo más cerca posible del hardware.
- Solo
si los niveles inferiores no pueden resolver el problema, se informa a los
niveles superiores.
- Generalmente
la recuperación se puede hacer en un nivel inferior y de forma
transparente.
- La
mayoría de la e / s es asíncrona: la cpu inicia la transferencia y
realiza otras tareas hasta una interrupción.
- La
programación es más fácil si la e / s es síncrona (por bloques): el
programa se suspende automáticamente hasta que los datos estén disponibles
en el buffer.
- Manejadores
de interrupciones.
- Directivas
de dispositivos.
- Software
de S. O. independiente de los dispositivos.
- Software
a nivel usuario.
- Cada
proceso que inicie una operación de e / s se bloquea hasta que termina la
e / s y ocurra la interrupción.
- El
procedimiento de interrupción realiza lo necesario para desbloquear el
proceso que lo inicio.
- Se
utilizan para darle los comandos.
- Los
manejadores de dispositivos proveen estos comandos y verifican su
ejecución adecuada.
- Aceptar
las solicitudes abstractas que le hace el software independiente del
dispositivo.
- Verificar
la ejecución de dichas solicitudes.
- El manejador
de disco debe:
- Estimar el lugar donde se encuentra en realidad el
bloque solicitado.
- Verificar si el motor de la unidad funciona.
- Verificar si el brazo está colocado en el cilindro
adecuado, etc.
- Resumiendo: debe decidir cuáles son las
operaciones necesarias del controlador y su orden.
- Envía los comandos al controlador al escribir en los
registros de dispositivo del mismo.
- Frecuentemente el manejador del dispositivo se bloquea
hasta que el controlador realiza cierto trabajo; una interrupción lo
libera de este bloqueo.
- Al finalizar la operación debe verificar los errores.
- Si todo esta o.k. transferirá los datos al software
independiente del dispositivo.
- Regresa información de estado sobre los errores a
quien lo llamó.
- Inicia otra solicitud pendiente o queda en espera.
- Interfaz
uniforme para los manejadores de dispositivos.
- Nombres
de los dispositivos.
- Protección
del dispositivo.
- Proporcionar
un tamaño de bloque independiente del dispositivo.
- Uso
de buffers.
- Asignación
de espacio en los dispositivos por bloques.
- Asignación
y liberación de los dispositivos de uso exclusivo.
- Informe
de errores.
- Efectuar
las funciones de e / s comunes a todos los dispositivos.
- Proporcionar
una interfaz uniforme del software a nivel usuario.
- Este
nodo-i contiene el número principal del dispositivo, que se utiliza
para localizar el manejador apropiado.
- El
nodo-i contiene también el número secundario de dispositivo, que se
transfiere como parámetro al manejador para determinar la unidad por leer
o escribir.
- Ocultar
a los niveles superiores los diferentes tamaños de sector de los distintos
discos.
- Proporcionar
un tamaño uniforme de los bloques, por ej.: considerar varios sectores
físicos como un solo bloque lógico.
- El
ejemplo típico lo constituye la impresora de líneas.
- Los
procesos de usuario no abren el archivo correspondiente a la impresora.
- Se
crea un proceso especial, llamado demonio en algunos
sistemas.
- Se
crea un directorio de spooling.
- Un
proceso genera todo el archivo por imprimir y lo coloca en el directorio
de spooling.
- El
proceso especial, único con permiso para utilizar el archivo especial de
la impresora, debe imprimir los archivos en el directorio.
- Se
evita el posible problema de tener un proceso de usuario que mantenga un
recurso tomado largo tiempo.
- Un
usuario coloca un archivo en un directorio de spooling de la red.
- Posteriormente,
el proceso especial lo toma y transmite. Un ej. son los sistemas de correo
electrónico.
- Mucha
mayor capacidad de espacio de almacenamiento.
- Menor
precio por bit.
- La
información no se pierde al apagar la computadora.
- Son
las búsquedas traslapadas.
- Mientras
el controlador y el software esperan el fin de una búsqueda en una unidad,
el controlador puede iniciar una búsqueda en otra.
- Leer o
escribir en una unidad.
- Buscar
en otra.
- Se
dispone de una por cada superficie de disco.
- Solo
puede acceder a datos inmediatamente adyacentes a ella:
- La parte de la superficie del disco de donde se leerá
(o sobre la que se grabará) debe rotar hasta situarse inmediatamente
debajo (o arriba) de la cabeza de lectura - escritura.
- El tiempo de rotación desde la posición actual hasta
la adyacente al cabezal se llama tiempo de latencia.
- Puede
moverse hacia adentro o hacia afuera, en lo que se denomina operación
de búsqueda.
- Para
una posición dada, la serie de pistas accesibles forman un cilindro
vertical.
- Involucra
movimientos mecánicos.
- Generalmente
es del orden de centésimas de segundo, aunque el tiempo de latencia sea de
algunas milésimas de segundo (7 a 12 aproximadamente).
- El
índice es el número de cilindro.
- Incluye
las solicitudes pendientes para cada cilindro enlazadas entre sí en
una lista ligada.
- Cuando
concluye una búsqueda, el manejador del disco tiene la opción de elegir
la siguiente solicitud a dar paso:
- Se atiende primero la solicitud más cercana, para minimizar
el tiempo de búsqueda.
- Este algoritmo se denomina primero la búsqueda más
corta (SSF: shor-test seek first).
- Reduce a la mitad el número de movimientos del brazo
en comparación con FCFS.
- Consideramos
un disco de 40 cilindros.
- Se
presenta una solicitud de lectura de un bloque en el cilindro 11.
- Durante
la búsqueda, llegan solicitudes para los cilindros 1, 36, 16, 34, 9 y 12,
en ese orden.
- La
secuencia de búsqueda SSF será: 12, 9, 16, 1, 34, 36.
- Habrá
un número de movimientos del brazo para un total de:
- 111 cilindros según FCFS.
- 61 cilindros según SSF.
- El
ingreso de nuevas solicitudes puede demorar la atención de las más
antiguas.
- Con
un disco muy cargado, el brazo tenderá a permanecer a la mitad del disco
la mayoría del tiempo, como consecuencia de ello las solicitudes lejanas a
la mitad del disco tendrán un mal servicio.
- Entran
en conflicto los objetivos de:
- Tiempo mínimo de respuesta.
- Justicia en la atención.
- Se
mantiene el movimiento del brazo en la misma dirección, hasta que no tiene
más solicitudes pendientes en esa dirección; entonces cambia de dirección.
- El
software debe conservar el bit de dirección actual.
- El
orden de servicio a los cilindros es: 12, 16, 34, 36, 9 y 1.
- El
número de movimientos del brazo corresponde a 60 cilindros.
- Ocasionalmente
es mejor que el algoritmo SSF.
- Generalmente
es peor que SSF.
- Dada
cualquier colección de solicitudes, la cuota máxima del total de
movimientos está fija, siendo el doble del número de cilindros.
- Luego
de servir al cilindro con el número mayor:
- El brazo pasa al cilindro de número menor con una
solicitud pendiente.
- Continúa su movimiento hacia arriba.
- Si
dos o más solicitudes para el mismo cilindro están pendientes:
- El manejador puede enviar una solicitud para el sector
que pasará debajo del cabezal.
- Se pueden hacer solicitudes consecutivas de distintas
pistas de un mismo cilindro, sin generar un movimiento del brazo.
- Si
una o más unidades lo están, se puede iniciar la siguiente transferencia
en una unidad ya posicionada.
- Si
ninguno de los brazos está posicionado, el manejador:
- Debe realizar una nueva búsqueda en la unidad que
terminó la transferencia.
- Debe esperar hasta la siguiente interrupción para ver
cuál brazo se posiciona primero.
- Acortan
los tiempos de búsqueda (seek).
- No
acortan los tiempos de demora rotacional (search).
- En
algunos discos, el tiempo promedio de búsqueda ya es menor que el retraso
rotacional.
- El
factor dominante será el retraso rotacional, por lo tanto, los algoritmos que optimizan los
tiempos de búsqueda (como el algoritmo del elevador) perderán importancia
frente a los algoritmos que optimicen el retraso rotacional.
- Ingresan
a la cpu 38 bit a la vez, uno por cada unidad.
- Los
38 bits conforman una palabra de 32 bits junto con 6 bits para
verificación.
- Los
bits 1, 2, 4, 8, 16 y 32 se utilizan como bits de paridad.
- La
palabra de 38 bits se puede codificar mediante el código Hamming,
que es un código corrector de errores.
- Si
una unidad sale de servicio:
- Se pierde un bit de cada palabra.
- El sistema puede continuar trabajando; se debe a que
los códigos Hamming se pueden recuperar de un bit perdido.
- La
generación de peticiones puede ser mucho más rápida que la atención
de las mismas:
- Se construyen líneas de espera o colas para
cada dispositivo.
- Para reducir el tiempo de búsqueda de registros
se ordena la cola de peticiones: esto se denomina planificación
de disco.
- Un
examen cuidadoso de las peticiones pendientes para determinar la forma
más eficiente de servirlas.
- Un
análisis de las relaciones posicionales entre las peticiones en
espera.
- Un reordenamiento
de la cola de peticiones para servirlas minimizando los movimientos
mecánicos.
- Optimización
de la búsqueda.
- Optimización
rotacional (latencia).
- Muchos
algoritmos de planificación se concentran en la reducción de los
tiempos de búsqueda para un conjunto de peticiones.
- Generalmente
la reducción de la latencia recién tiene efectos bajo cargas de
trabajo muy pesadas.
- Capacidad
de ejecución.
- Media
del tiempo de respuesta.
- Varianza
de los tiempos de respuesta (predecibilidad).
- Maximizar
el número de peticiones servidas por unidad de tiempo.
- Minimizar
la media del tiempo de respuesta.
- Mejorar
el rendimiento global, quizás a costa de las peticiones individuales.
- Se
mide utilizando la varianza de los tiempos de respuesta.
- La
varianza es un término estadístico que indica hasta qué punto tienden a
desviarse del promedio de todos los elementos los elementos individuales.
- A
menor varianza mayor predecibilidad.
- Se
desea una política de planificación que minimice la varianza, es decir que
maximice la predecibilidad.
- No
debe haber peticiones que puedan experimentar niveles de servicio
erráticos.
- FCFS.
- SSTF.
- SCAN.
- SCAN
de N - Pasos.
- C
- SCAN.
- Esquema
Eschenbach.
- Las peticiones
se reordenan para ser servidas dentro de un cilindro para tomar
ventaja de la posición rotacional.
- Si
dos peticiones trasladan posiciones de sectores dentro de un cilindro,
solo se sirve una en el movimiento actual del brazo del disco.
- Pueden
producirse interbloqueos en los cuales los procesos de algunos
usuarios nunca podrán llegar a su término.
- Se
debe considerar la prevención, evitación, detección y
recuperación del interbloqueo y la postergación indefinida,
que se da cuando un proceso, aunque no esté interbloqueado, puede estar
esperando por un evento que probablemente nunca ocurrirá.
- En
algunos casos:
- El precio de liberar interbloqueos en un sistema es
demasiado alto.
- Permitir el interbloqueo podría resultar catastrófico.
- Ej.:
impresoras, unidades de cinta, espacio de la tabla de nodos-i.
- Los
S. O. tienen la capacidad de otorgar temporalmente a un proceso el acceso
exclusivo a ciertos recursos.
- Frecuentemente
un proceso necesita el acceso exclusivo no solo a un recurso, sino
a varios.
- Dos
procesos desean imprimir grandes archivos en cinta.
- El
proceso “a” solicita la impresora, que se le concede.
- El
proceso “b” solicita la unidad de cinta, que se le concede.
- El
proceso “a” solicita la unidad de cinta, pero se deniega la
solicitud hasta que “b” la libera.
- El
proceso “b” solicita la impresora y se produce el bloqueo
(deadlock).
- Pueden
ser utilizados por un solo usuario a la vez.
- Cada
proceso está esperando por el otro para liberar uno de los recursos.
- El
recurso retenido no será liberado hasta que el otro proceso usuario libere
su recurso.
- Este
último proceso usuario no liberará su recurso retenido hasta que el primer
proceso usuario libere su recurso retenido.
- Se
produce una espera circular (ver Figura 6.1).
- Si un
programa envía líneas a una impresora, en realidad son enviadas a un
dispositivo más rápido (disco).
- Se
almacenan temporalmente hasta ser impresas.
- Se reduce
la probabilidad de interbloqueos del spool:
- Proporcionando un espacio en disco considerablemente
mayor que el necesario, preferentemente con asignación dinámica.
- Limitando los spoolers de entrada para que no lean más
trabajos cuando los archivos de spool llegan a cierto nivel de
saturación.
- Se
trata de la postergación indefinida.
- Cuando
los recursos son planificados en función de prioridades, un proceso
dado puede esperar indefinidamente, mientras sigan llegando procesos de
prioridades mayores.
- Pueden
ser compartidos entre varios procesos.
- Pueden
estar dedicados a procesos individuales.
- Se
carga una copia del código a memoria.
- Se
habilitan varias copias de las estructuras de datos, una para cada
usuario.
- Como
el código puede ser utilizado por varios usuarios a la vez, no puede
cambiar durante la ejecución:
- El código que no cambia durante la ejecución se
denomina reentrante.
- El código que puede ser cambiado, pero se
inicializa cada vez que se usa, se denomina reutilizable en serie.
- Solicitar el recurso.
- Utilizar
el recurso.
- Liberar
el recurso.
- El
proceso solicitante debe esperar.
- En
algunos S. O. el proceso se bloquea automáticamente y se despierta cuando
dicho recurso está disponible.
- En
otros S. O. la solicitud falla y el proceso debe esperar para luego
intentar nuevamente.
- Un
conjunto de procesos se bloquea si cada proceso del conjunto espera un
evento que solo puede ser provocado por otro proceso del conjunto:
- Ya que todos los procesos están esperando:
- Ninguno realizará un evento
que pueda despertar a los demás miembros del conjunto.
- Todos los procesos esperarán
por siempre.
- Generalmente el evento que espera cada proceso es la
liberación de cierto recurso que posee por el momento otro miembro del
conjunto:
- Cada miembro del conjunto de
procesos bloqueados espera un recurso poseído por un proceso bloqueado.
- Ninguno de los procesos
bloqueados puede continuar su ejecución, ni liberar recursos, ni puede
ser despertado.
- Los
procesos reclaman control exclusivo de los recursos que piden (condición
de exclusión mutua).
- Los
procesos mantienen los recursos que ya les han sido asignados mientras
esperan por recursos adicionales (condición de espera por).
- Los
recursos no pueden ser extraídos de los procesos que los tienen hasta su
completa utilización (condición de no apropiatividad).
- Existe
una cadena circular de procesos en la que cada uno mantiene a uno o más
recursos que son requeridos por el siguiente proceso de la cadena (condición
de espera circular).
- Procesos
(aparecen como círculos).
- Recursos
(aparecen como cuadrados).
- Un
arco de un nodo de recurso a uno de proceso indica que el recurso fue
solicitado con anterioridad, fue otorgado y es poseído en ese momento por
dicho proceso.
- Un
arco de un proceso a un recurso indica que el proceso está bloqueado, en
espera de ese recurso.
- Un
ciclo en la gráfica indica la existencia de un bloqueo relacionado
con los procesos y recursos en el ciclo (ver Figura 6.3 y Figura 6.4 ).
- Ignorar
todo el problema.
- Detección
y recuperación.
- Evitarlos
dinámicamente mediante una cuidadosa asignación de recursos.
- Prevención
mediante la negación estructural de una de las cuatro condiciones
necesarias.
- Prevención
del bloqueo.
- Evitación
del bloqueo.
- Detección
del bloqueo.
- Recuperación
del bloqueo.
- El
interés se centra en condicionar un sistema para que elimine toda
posibilidad de que éstos se produzcan.
- Los
métodos pueden dar como resultado una pobre utilización de los recursos,
aún así son ampliamente utilizados.
- La
meta es imponer condiciones menos estrictas que en la prevención,
para intentar lograr una mejor utilización de los recursos.
- No
precondiciona al sistema para que evite todas las posibilidades de
que se produzca un bloqueo.
- Permiten
la aparición del bloqueo, pero siempre que se produce una posibilidad de
bloqueo, éste se esquiva.
- Se
utiliza en sistemas que permiten que éstos ocurran, ya sea
voluntaria o involuntariamente.
- La
meta es determinar si ha ocurrido un bloqueo:
- Se debe detectar con precisión los procesos y
recursos implicados en el bloqueo.
- Se puede eliminar el bloqueo detectado.
- Se
utiliza para despejar bloqueos de un sistema para que:
- Continúe operando sin ellos.
- Terminen los procesos estancados.
- Se liberen los recursos correspondientes a ellos.
- Generalmente
se logra “extrayendo” (cancelando) a uno o varios de los procesos
bloqueados, que se reinician luego de forma normal.
- Matemáticamente
es inaceptable, considerándose que los bloqueos deben evitarse a toda
costa.
- Desde
la ingeniería de software podría considerarse cuál es la frecuencia
esperada del problema, cuáles son sus consecuencias esperadas, cuáles son
las frecuencias esperadas de fallas de otro tipo, etc.
- La
mayoría de los usuarios preferiría un bloqueo ocasional, en vez de una
regla que restringiera a todos los usuarios en el uso de los distintos
tipos de recursos.
- En
restricciones para los procesos.
- En el
uso de recursos.
- Intentar
acceder al recurso compartido.
- De no
ser factible el acceso:
- Esperar un tiempo aleatorio.
- Reintentar nuevamente.
- Intenta
detectar cuando han ocurrido.
- Acciona
para recuperarse después del hecho.
- Determinar
si de hecho existe o no un bloqueo.
- Identificar
cuáles son los procesos y recursos implicados en el bloqueo.
- Las
flechas que van de los recursos al proceso (los recursos asignados al
proceso).
- Las
flechas que van del proceso al recurso (las peticiones actuales del
proceso).
- La posesión
de los recursos es la siguiente:
- El proceso A posee a R y desea a S.
- El proceso B no posee recurso alguno y desea a T.
- El proceso C no posee recurso alguno y desea a S.
- El proceso D posee a U y desea a S
y a T.
- El proceso E posee a T y desea a V.
- El proceso F posee a W y desea a S.
- El proceso G posee a V y desea a U.
- La pregunta
es: ¿está bloqueado este sistema y, en tal caso, cuáles son los procesos
bloqueados?.
- La respuesta
se obtiene mediante la gráfica de recursos: si la gráfica presenta
un ciclo significa procesos bloqueados (ver Figura 6.7).
- Se
considera a “N” como nodo inicial.
- Se
inicializan:
- La estructura de datos “L”como una lista vacía.
- Todos los arcos como no marcados.
- Se
añade el nodo activo al final de “L” y se verifica si el nodo
aparece en “L” dos veces:
- Si aparece dos veces existe un ciclo y el algoritmo
termina.
- Desde
el nodo dado se verifica si existen arcos que salgan de dicho nodo y no
estén marcados:
- En caso afirmativo se va al paso 5.
- En caso negativo se va al paso 6.
- Se
elige al azar un arco de salida no marcado y se le marca:
- Luego se sigue este arco hasta el nuevo nodo activo y
se regresa al paso 3.
- Se ha
llegado a un punto donde no se puede continuar:
- Se regresa al nodo anterior, es decir al que estaba
activo antes del actual.
- Se señala de nuevo como nodo activo.
- Se pasa al paso 3.
- Si este nodo era el nodo inicial, la gráfica no
contiene ciclos y el algoritmo termina.
- Se
parte de “R” y se inicializa “L” como la lista vacía.
- Se
añade “R” a la lista y se mueve a la única posibilidad, “A”.
- Se
añade “A” a la lista: L=[R,A].
- Se
pasa de “A” a “S”, quedando L=[R,A,S].
- “S” no tiene arcos que salgan de
él, por lo que no se puede continuar y se regresa a “A”.
- Ya
que “A” no tiene arcos de salida no marcados se regresa a “R”,
finalizando la inspección de “R”.
- Se
inicia nuevamente el algoritmo partiendo de “A”, siendo “L”
otra vez la lista vacía.
- La
búsqueda termina rápidamente y se parte de “B”.
- De “B”
se siguen los arcos de salida hasta llegar a “D”, siendo
L=[B,T,E,V,G,U,D].
- Se
efectúa una elección al azar.
- Si se
elige “S” llegamos a un punto sin salida y debemos regresar a “D”.
- La
segunda vez se elige “T” quedando L=[B,T,E,V,G,U,D,T] :
- Se ha descubierto un ciclo y el algoritmo se detiene.
- E1
recursos de la clase 1.
- E2
recursos de la clase 2.
- Ei
recursos de la clase “i” (1 menor o igual que “i ” menor o
igual que “m”).
- “E”
es el vector de recursos existentes.
- “Ai” indica el número de instancias
disponibles del recurso “i ” ; se refiere a recursos no
asignados.
- La matriz
“C” de la asignación actual.
- La matriz
“R” de solicitudes.
- Definimos
que “A” es menor o igual que “B” si y solo si “Ai”es
menor o igual que “Bi” para “i” entre “0”
y “m”, ambos inclusive.
- Esto
indica que pueden terminar su labor, ya que no están bloqueados.
- Al
concluir el algoritmo se sabe que los procesos no marcados estarán
bloqueados.
- Se
busca un proceso no marcado “Pi” , para el cual el i -ésimo
renglón de “R” sea menor que “A”.
- Si se
encuentra tal proceso, se suma el i -ésimo renglón de “C” a “A”,
se marca el proceso y se regresa al paso 1.
- Si no
existe tal proceso, el algoritmo termina.
- El
proceso 1 no se puede satisfacer por no disponer de una unidad de cd rom.
- El
proceso 2 no se puede satisfacer por no disponer de una impresora.
- El
proceso 3 sí se puede satisfacer, por lo que se ejecuta, regresando en
cierto momento sus recursos, lo que resulta en: A = (2 2 2 0).
- El
proceso 2 necesita 1 unidad de cd rom, las 2 unidades de cinta y el
plotter.
- No se
pueden satisfacer las 3 solicitudes y todo el sistema se bloquea.
- Si se
bloquean suficientes procesos:
- Existirán pocos procesos en ejecución.
- La cpu estará inactiva con más frecuencia.
- Puede
no estar claro si el sistema se ha bloqueado o no.
- Muchos
sistemas tienen limitaciones para suspender un proceso por tiempo
indefinido y reanudarlo más tarde:
- Ej.: Los procesos de tiempo real, que deben funcionar
continuamente, no son fáciles de suspender y reanudar.
- Los
procedimientos de suspensión / reanudación implican una sobrecarga
considerable.
- La sobrecarga
de recuperación está en función de la magnitud del bloqueo (algunos,
decenas o centenas de procesos involucrados).
- Retirando
forzosamente (cancelando) a un proceso.
- Reclamando
sus recursos.
- Permitiendo
que los procesos restantes puedan finalizar.
- Pueden
no existir las prioridades de los procesos bloqueados.
- Las
prioridades instantáneas (en un momento dado), pueden ser incorrectas o
confusas debido a consideraciones especiales, por ej.: procesos de baja
prioridad que tienen prioridad alta momentáneamente debido a un tiempo
tope inminente.
- La
decisión óptima puede requerir un gran esfuerzo.
- Recuperación
mediante la apropiación.
- Recuperación
mediante rollback.
- Recuperación
mediante la eliminación de procesos.
- Retirar
una impresora de un proceso para dedicarla a otro proceso.
- Retomar
luego el primer proceso reasignándola al mismo.
- De
cuáles procesos poseen recursos que pueden ser tomados con facilidad.
- De
las posibilidades de recuperación luego de la apropiación.
- Su
estado se graba en un archivo de modo que pueda volver a iniciar más
tarde.
- El punto
de verificación o de control contiene:
- La imagen de la memoria.
- El estado de los recursos, es decir, el detalle de los
recursos asignados al proceso en ese instante.
- Los
puntos de verificación grabados durante un proceso se mantienen sin ser
regrabados.
- Inicializa
alguno de sus anteriores puntos de verificación.
- El
proceso regresa a un momento anterior en el que no poseía el recurso.
- El
recurso se asigna ahora a uno de los procesos bloqueados.
- Si el
proceso que volvió a iniciar intenta adquirir de nuevo el recurso, tendrá
que esperar hasta que esté disponible.
- Es la
forma más sencilla de romper un bloqueo.
- Una
posibilidad es eliminar un proceso del ciclo: si el bloqueo no se
rompe, se puede intentar con otro proceso del ciclo, hasta romper dicho
ciclo.
- Otra
posibilidad es eliminar un proceso que no esté en el ciclo, para
poder liberar sus recursos: debe elegirse un proceso que posea recursos
necesarios por algún proceso del ciclo.
- Siempre
que sea posible, es mejor eliminar un proceso que pueda volver a iniciar
su ejecución sin efectos dañinos:
- Es preferible eliminar un proceso de compilación que
un proceso de actualización de una base de datos:
- La compilación se puede
repetir sin problemas.
- La actualización de una base
de datos no siempre se puede repetir directamente.
- En la
mayoría de los sistemas los recursos se solicitan uno a la vez.
- El S.
O. debe poder:
- Decidir si el otorgamiento de un recurso es seguro o
no.
- Asignarlo solo en caso de que sea seguro.
- Es
válido para dos procesos y dos recursos.
- El
eje horizontal representa el número de instrucciones ejecutadas por el
proceso “A”.
- El
eje vertical representa el número de instrucciones ejecutadas por el
proceso “B”.
- En “I1”;
“A” solicita una impresora y en “I 2” necesita un plotter.
- En “I
3” e “I 4” se liberan la impresora y el plotter.
- El
proceso “B” necesita el plotter desde “I5” hasta “I7”
y la impresora desde “I6” hasta “I8”.
- Cada
punto del diagrama representa un estado conjunto de los dos
procesos.
- El
estado inicial es “p”, sin que los procesos hayan ejecutado
instrucción alguna.
- Si el
planificador del S. O. elige “A” se pasa a “q”, en donde “A”
ha ejecutado instrucciones pero no “B”.
- En
“q” la trayectoria se vuelve vertical, ya que el planificador ha
elegido ejecutar “B”.
- Con
un monoprocesador todas las trayectorias serán horizontales o verticales
(no diagonales).
- Cuando
“A” cruza la línea “I1” en la trayectoria de “r” a “s”,
solicita y se le otorga la impresora.
- Cuando
“B” alcanza el punto “t”, solicita el plotter.
- La
región delimitada por “I 1”, “I 3”, “I6” e “I 8”
representa que ambos procesos poseen la impresora, pero esto es imposible
y la regla de exclusión mutua impide la entrada a esta región.
- La
región delimitada por “I 2”, “I 4”, “I 5” e “I 7” representa
que ambos procesos poseen el plotter, lo que es imposible.
- Si el
sistema ingresara a la región delimitada por “I 1”, “I 2”, “I 5” e “I
6” se bloqueará en la intersección de “I 2” e “I 6”:
- Acá, “A” solicita el plotter y “B” la
impresora, que ya están asignados.
- Toda la región no es segura y no hay que entrar a
ella:
- En “t”, lo único
seguro es ejecutar “A” hasta llegar a “I 4”.
- Luego se puede utilizar
cualquier trayectoria hasta “u”.
- En “t”,
“B” solicita un recurso:
- El S. O. debe decidir si lo otorga o no.
- Si lo otorga, el sistema entrará a una región
insegura y se bloqueará en algún momento.
- Para evitar el bloqueo, hay que suspender a “B”
hasta que “A” haya solicitado y liberado el plotter.
- “E”:
vector de recursos en existencia.
- “A”:
vector de recursos disponibles.
- “C”:
matriz de asignación actual.
- “R”:
matriz de solicitudes.
- No
está bloqueado.
- Existe
una forma de satisfacer todas las solicitudes pendientes, mediante la
ejecución de los procesos en cierto orden.
- No se
puede garantizar que terminen los tres procesos.
- Si el
proceso “A” pide y se le otorga una unidad, puede producirse un
bloqueo de tres vías si cada uno de los procesos necesita al menos otra
unidad del recurso antes de liberar ninguna.
- No
implica la existencia, ni siquiera eventual, de bloqueo.
- Sí
implica que alguna secuencia infortunada de eventos dé como resultado un
bloqueo.
- A
partir de un estado seguro, el sistema puede garantizar la
conclusión de todos los procesos.
- A
partir de un estado inseguro, no existe tal garantía.
- Dado
un estado actual seguro, ello no implica que vayan a ser seguros
todos los estados futuros.
- Los
clientes son los procesos, las unidades de crédito son los recursos
del sistema y el banquero es el S. O.
- El
banquero sabe que no todos los clientes necesitaran su crédito máximo
otorgado en forma inmediata, por ello reserva menos unidades (recursos) de
las totales necesarias para dar servicio a los clientes.
- Estudiar
cada solicitud al ocurrir ésta.
- Ver
si su otorgamiento conduce a un estado seguro:
- En caso positivo, se otorga la solicitud.
- En caso negativo, se la pospone.
- Para
ver si un estado es seguro:
- Verifica si tiene los recursos suficientes para
satisfacer a otro cliente:
- En caso afirmativo, se supone
que los préstamos se pagarán.
- Se verifica al siguiente
cliente cercano al límite y así sucesivamente.
- Si en cierto momento se vuelven a pagar todos los
créditos, el estado es seguro y la solicitud original debe ser aprobada.
- “E”:
vector de recursos existentes.
- “P”:
vector de recursos poseídos.
- “A”:
vector de recursos disponibles.
- Se
busca un renglón “R” cuyas necesidades de recursos no satisfechas
sean menores o iguales que “A”:
- Si no existe tal renglón, el sistema se bloqueará en
algún momento y ningún proceso podrá concluirse.
- Supongamos
que el proceso del renglón elegido solicita todos los recursos que
necesita y concluye:
- Se señala el proceso como concluido y se añaden sus
recursos al vector “A”.
- Se
repiten los pasos 1 y 2:
- Hasta que todos los procesos queden señalados como
concluidos, en cuyo caso, el estado inicial era seguro, o
- Hasta que ocurra un bloqueo, en cuyo caso, no lo era.
- El
proceso retiene los recursos que ya tiene asignados.
- Espera
un tiempo finito hasta que le sea atendida la petición.
- Cada
proceso:
- Deberá pedir todos sus recursos requeridos de una sola
vez.
- No podrá proceder hasta que le hayan sido asignados.
- Si a
un proceso que mantiene ciertos recursos se le niega una nueva petición,
este proceso deberá:
- Liberar sus recursos originales.
- En caso necesario, pedirlos de nuevo junto con los
recursos adicionales.
- Se
impondrá la ordenación lineal de los tipos de recursos en todos los
procesos:
- Si a un proceso le han sido asignados recursos de un
tipo dado, en lo sucesivo solo podrá pedir aquellos recursos de los tipos
que siguen en el ordenamiento.
- Evitar
la asignación de un recurso cuando no sea absolutamente necesario.
- Intentar
asegurarse de que los menos procesos posibles puedan pedir el recurso.
- Exigir
a un proceso que solicita un recurso que libere en forma temporal los
demás recursos que mantiene en ese momento.
- Hacer
que el proceso intente luego recuperar todo al mismo tiempo.
- La
pérdida del trabajo efectuado hasta ese punto.
- La
necesidad de repetirlo luego.
- Si
necesita otros recursos, debe liberar el primero.
- Esto
resulta inaceptable para muchos procesos.
- Todos
los recursos se numeran globalmente.
- Los
procesos pueden solicitar los recursos en cualquier momento:
- Las solicitudes se deben hacer según un cierto orden
numérico (creciente) de recurso; debido a lo cual la gráfica de
asignación de recursos no tendrá ciclos.
- En
cada instante uno de los recursos asignados tendrá el número más grande:
- El proceso que lo posea no pedirá un recurso ya
asignado.
- El proceso terminará o solicitará recursos con números
mayores , que estarán disponibles:
- Al concluir liberará sus
recursos.
- Otro proceso tendrá el
recurso con el número mayor y también podrá terminar.
- Todos los procesos podrán
terminar y no habrá bloqueo.
- Ningún
proceso debe solicitar un recurso con número menor al que posee en el
momento.