Sistemas Operativos
Sistemas Operativos
SISTEMAS
OPERATIVOS
“SISTEMAS OPERATIVOS”
Departamento de Informática
A mis profesores.
A mis alumnos.
Prólogo
Es para mi una gran satisfacción prologar este libro del Profesor La Red Martínez
sobre el aprendizaje de los Sistemas Operativos. El libro no es más que una muestra y
un testimonio escrito de un largo proceso de formación del profesorado y de renovación
en las formas docentes, que ha tenido lugar en la Universidad Nacional del Nordeste en
Corrientes en el Departamento de Informática, con motivo de la Maestría en Informática
y Computación, y en el que el Profesor La Red ha colaborado de una forma destacada,
pudiendo decirse que no hubiera sido posible sin su participación.
El tema de los sistemas operativos es complejo e implica muchos conceptos nuevos
para el alumno, algunos de ellos difíciles de comprender. Con este libro el aprendizaje
se hace mucho más llevadero, e incluso divertido. El libro es fruto, por un lado, de la
experiencia diaria del aula, acumulada tras muchos años de trabajo y esfuerzo, y, por
otro, de la incorporación de las nuevas tecnologías a la enseñanza. Ello se nota en el estilo
del libro, en la selección de los ejemplos y problemas que se incluyen, en los contenidos, y
en la forma de comunicarlo al lector.
La incorporación de los recursos y herramientas informáticas de trabajo es uno de sus
muchos aciertos. Sorprende la lista de ellas que han sido utilizadas. El poder acceder
a multitud de programas de cálculo y diseño, dibujo, tratamiento de textos, correo elec-
trónico, Internet, etc., desde el propio libro, en su versión electrónica, brindan al alumno
la posibilidad de un aprendizaje mucho más profundo y práctico. Permiten también la
auto-formación.
El Profesor La Red al poner a disposición de cualquiera el libro en Internet, compar-
te con todos su trabajo y conocimiento. Nada hay más grato que compartir, sabiendo
que muchos, en cualquier parte del mundo, se bene…ciarán de este trabajo. Esto podrá
comprobarlo cuando empiece a recibir agradecimientos y consultas de los lugares más insos-
pechados. Aunque, en la inmensa mayoría de los casos, no recibirá ni siquiera las gracias,
conviene que sepa que muchos le agradecerán, en silencio, su esfuerzo y generosidad.
Por ello, mediante este libro, el Profesor La Red pasa de ser un profesor universitario
a un profesor universal.
² Casos de Estudio.
Para aquellos lectores que solo deseen adquirir o refrescar conocimientos relacionados
con los Sistemas Operativos en general, será su…ciente con la lectura de la Primer Parte,
en tanto que para aquellos que deseen un conocimiento más profundo, teniendo presente la
problemática de los Sistemas Distribuidos, será necesario avanzar en la lectura del primer
grupo de temas de la Segunda Parte; asimismo, si además se desea incursionar en aspectos
complementarios pero importantes, se sugiere también la lectura del segundo grupo de
temas de la mencionada Segunda Parte, la que se recomienda leer aunque no se tenga
interés en los Sistemas Distribuidos, ya que es un buen complemento de la Primer Parte
de esta obra.
En cuanto a la Tercer Parte, corresponde aclarar que resultaría de interés para quie-
nes deseen profundizar en el estudio teórico - práctico de un conjunto de problemáticas
relacionadas con los Sistemas Operativos, con el auxilio de herramientas de avanzada ta-
les como Mathematica, Matlab, Java, Redes Neuronales, Sistemas Expertos, Orientación
a Objetos, etc., siendo un buen complemento de las dos partes anteriores, que permite
incrementar el conocimiento de los temas considerados.
Es preciso señalar además que este libro está destinado a los alumnos de una Carrera
de Grado en Informática que deban hacer un Curso de Sistemas Operativos, pudiendo ser
de utilidad, según la profundidad del curso, la Primer Parte, la Segunda Parte o las tres
que componen este trabajo.
1 Introducción 3
1.1 Qué es un Sistema Operativo . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Historia de los Sistemas Operativos - Generaciones . . . . . . . . . . . . . . 5
1.3 Conceptos de los Sistemas Operativos . . . . . . . . . . . . . . . . . . . . . 8
1.4 Estructura de los Sistemas Operativos . . . . . . . . . . . . . . . . . . . . . 10
1.5 Tendencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.7 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.8 Memoria Fija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
xi
xii ÍNDICE GENERAL
3 Administración de la Memoria 65
3.1 Introducción al Almacenamiento Real . . . . . . . . . . . . . . . . . . . . . 65
3.2 Organización y Administración del Almacenamiento . . . . . . . . . . . . . 65
3.2.1 Organización del Almacenamiento . . . . . . . . . . . . . . . . . . . 65
3.2.2 Administración del Almacenamiento . . . . . . . . . . . . . . . . . . 66
3.3 Jerarquía de Almacenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.4 Estrategias de Administración del Almacenamiento . . . . . . . . . . . . . . 67
3.4.1 Asignación Contigua de Almacenamiento Versus No Contigua . . . . 68
3.4.2 Asignación Contigua de Almacenamiento de Un Solo Usuario . . . . 68
3.5 Multiprogramación de Partición Fija . . . . . . . . . . . . . . . . . . . . . . 70
3.5.1 Multiprogramación de Partición Fija: Traducción y Carga Absolutas 71
3.5.2 Multiprogramación de Partición Fija: Traducción y Carga Relocali-
zables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.5.3 Protección en los Sistemas de Multiprogramación . . . . . . . . . . . 73
3.5.4 Fragmentación en la Multiprogramación de Partición Fija . . . . . . 73
3.6 Multiprogramación de Partición Variable . . . . . . . . . . . . . . . . . . . . 74
3.6.1 Compresión o Compactación de Almacenamiento . . . . . . . . . . . 74
3.6.2 Estrategias de Colocación del Almacenamiento . . . . . . . . . . . . 77
3.7 Multiprogramación con Intercambio de Almacenamiento . . . . . . . . . . . 77
3.8 Introducción a la Organización del Almacenamiento Virtual . . . . . . . . . 78
3.9 Conceptos Básicos de Almacenamiento Virtual . . . . . . . . . . . . . . . . 79
ÍNDICE GENERAL xiii
6 Bloqueos 181
6.1 Introducción y Ejemplos de Bloqueo (o Interbloqueo) . . . . . . . . . . . . . 181
6.2 Conceptos de Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
6.3 Bloqueos y Condiciones Necesarias Para el Bloqueo . . . . . . . . . . . . . . 184
6.4 Modelación de Bloqueos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
6.5 Areas Principales en la Investigación de Bloqueos . . . . . . . . . . . . . . . 188
6.6 El Algoritmo del Avestrúz o de Ostrich . . . . . . . . . . . . . . . . . . . . 189
6.7 Detección de Bloqueos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
6.7.1 Grá…cas de Asignación de Recursos . . . . . . . . . . . . . . . . . . . 190
6.7.2 Reducción de Grá…cas de Asignación de Recursos . . . . . . . . . . . 190
6.7.3 Detección de Bloqueos de Forma “Un Recurso de Cada Tipo” . . . . 190
6.7.4 Detección de Bloqueos de Forma “Varios Recursos de Cada Tipo” . 194
6.7.5 Cuándo Buscar los Bloqueos . . . . . . . . . . . . . . . . . . . . . . 197
6.8 Recuperación de Bloqueos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
6.8.1 Recuperación Mediante la Apropiación . . . . . . . . . . . . . . . . . 198
6.8.2 Recuperación Mediante Rollback . . . . . . . . . . . . . . . . . . . . 198
6.8.3 Recuperación Mediante la Eliminación de Procesos . . . . . . . . . . 199
6.9 Evasión de Bloqueos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
6.9.1 Trayectorias de Recursos . . . . . . . . . . . . . . . . . . . . . . . . . 199
6.9.2 Estados Seguros e Inseguros . . . . . . . . . . . . . . . . . . . . . . . 201
6.9.3 El Algoritmo del Banquero (de Dijkstra) Para Solo Un Recurso . . . 202
6.9.4 El Algoritmo del Banquero (de Dijkstra) Para Varios Recursos . . . 203
6.9.5 Asignación de Recursos por el Algoritmo del Banquero . . . . . . . . 204
6.9.6 Debilidades del Algoritmo del Banquero . . . . . . . . . . . . . . . . 205
6.10 Prevención de Bloqueos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
6.10.1 Prevención de la Condición de Exclusión Mutua . . . . . . . . . . . 205
xvi ÍNDICE GENERAL
12 Rendimiento 351
12.1 Introducción a la Medición, Control y Evaluación del Rendimiento . . . . . 351
12.2 Tendencias Importantes que Afectan a los Aspectos del Rendimiento . . . . 352
12.3 Necesidad del Control y de la Evaluación del Rendimiento . . . . . . . . . . 352
12.4 Mediciones del Rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
12.5 Técnicas de Evaluación del Rendimiento . . . . . . . . . . . . . . . . . . . . 355
12.6 Embotellamientos y Saturación . . . . . . . . . . . . . . . . . . . . . . . . . 357
12.7 Ciclos de Retroalimentación . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
IV Anexos 571
Bibliografía 875
xxiii
xxiv ÍNDICE DE FIGURAS
xxvii
xxviii ÍNDICE DE TABLAS
Sistemas Operativos
Convencionales
1
Capítulo 1
Introducción
² Optimizar todos los recursos del sistema para soportar los requerimientos.
² Programas de sistema:
² Programas de aplicación:
² Programas de aplicación:
3
4 CAPÍTULO 1. INTRODUCCIÓN
² Programas de sistema:
² Hardware:
– Lenguaje de máquina.
– Microprogramación.
– Dispositivos físicos
² Busca las instrucciones de lenguaje de máquina para ejecutarlas como una serie de
pequeños pasos.
² Procesadores.
² Almacenamiento.
² Dispositivos de e / s.
² Datos.
² Operadores.
² Programadores de aplicaciones.
² Programas.
² Hardware.
² Usuarios.
– Carencia total de S. O.
– Completo acceso al lenguaje de máquina.
– Carencia de S. O.
6 CAPÍTULO 1. INTRODUCCIÓN
– Difusión de la multiprogramación:
¤ Partición de la memoria en porciones, con trabajos distintos en cada una
de ellas.
¤ Aprovechamiento del tiempo de espera consecuencia de operaciones de e /
s, para utilizar la CPU para otros procesos.
– Protección por hardware del contenido de cada partición de memoria.
– Aparición de técnicas de spooling:
¤ Simultaneous Peripheral Operation On Line: operación simultánea y en
línea de periféricos.
¤ Almacenamiento de trabajos de entrada y de salida en dispositivos tran-
sitorios rápidos (discos), para disminuir el impacto de los periféricos mas
lentos.
– Son sistemas de modos múltiples, es decir que deben soportar sistemas
de propósitos generales; son grandes y complejos pero muy poderosos.
– Interponen una capa de software entre el usuario y el hardware.
– Aparecen los lenguajes de control de trabajos, necesarios para especi…car
el trabajo y los recursos requeridos.
– Soportan timesharing (tiempo compartido), variante de la multiprogra-
mación con usuarios conectados mediante terminales en línea, permitiendo la
operación en modo interactivo o conversacional.
– Aparecen los sistemas de tiempo real, que requieren tiempos de respuesta
muy exigentes, especialmente para usos industriales o militares.
8 CAPÍTULO 1. INTRODUCCIÓN
² Procesos:
1.3. CONCEPTOS DE LOS SISTEMAS OPERATIVOS 9
² Archivos:
² Llamadas al sistema:
² Sistemas monolíticos:
– El primer sistema con este esquema fue el “THE” (Holanda - Dijkstra -1968):4
¤ “THE”: Technische Hogeschool Eindhoven.
¤ Capa 0:
¢ Trabaja con la asignación del procesador.
¢ Alterna entre los procesos cuando ocurren las interrupciones o expiran
los cronómetros.
2
Ver Figura 1.2 de la página 11 [23, Tanenbaum].
3
Ver Figura 1.3 de la página 11 [23, Tanenbaum].
4
Ver Tabla 1.1 de la página 12 [23, Tanenbaum].
1.4. ESTRUCTURA DE LOS SISTEMAS OPERATIVOS 11
SIST. OPER.
4
EN MODO
PROC. DE SERVICIO NUCLEO
3
1
PROCED. PRINCIPAL
PROC. DE
SERVICIO
PROCED.
UTILITARIOS
5 - Operador
4 - Programas del Usuario
3 - Control de Entrada / Salida
2 - Comunicaciones Operador - Proceso
1 - Administración de la Memoria y del Disco
0 - Asignación del Procesador y Multiprogramación
² Máquinas virtuales:
INSTRUC. LLAMADA AL
DE E / S SISTEMA AQUI
AQUI
CMS CMS CMS
TRAMPA AQUI
VM / 370
TRAMPAS
AQUI 370 HARDWARE SIMPLE
1.5 Tendencias
Las principales tendencias en S. O. son las siguientes [7, Deitel]:
NUCLEO MODO
NUCLEO
RED
1.6 Hardware
Los principales aspectos del hardware, de importancia para los S. O., son los siguientes
[7, Deitel]:
² Registro de relocalización:
² Interrupciones y escrutinio:
² Dispositivos periféricos:
² Temporizadores y relojes:
² Robo de ciclo:
² Almacenamiento virtual:
² Multiprocesamiento:
² Canalización:
² Jerarquía de almacenamiento:
1.7 Software
Consiste en los programas de instrucciones y datos que de…nen para el hardware los algo-
ritmos necesarios para la resolución de problemas.
Los aspectos más destacados en relación con los S. O. son los siguientes [7, Deitel]:
– “Lenguaje de máquina”:
¤ Lenguaje de programación que un computador puede comprender directa-
mente.
¤ Es “dependiente de la máquina”: un programa en lenguaje de máquina
escrito en el computador de un fabricante, generalmente no puede ser eje-
cutado en el de otro, salvo que su lenguaje de máquina sea compatible.
¤ Muy poco usado actualmente.
² Ensambladores y macroprocesadores:
² Compiladores:
² Interpretadores:
² Es posible efectuar detección y corrección de errores más amplia a un nivel más …no.
En algunos sistemas los usuarios pueden efectuar esta adaptación por medio del mi-
crocódigo.
Asistencias de microcódigo:
Implementan varias rutinas de manejo de interrupciones de uso más frecuente en mi-
crocódigo a …n de lograr mejoras signi…cativas en la ejecución.
Microprogramación y sistemas operativos:
Las funciones implementadas frecuentemente en microcódigo son las siguientes:
² Manejo de interrupciones.
² “Intercambio de contexto”, por ej., intercambio rápido del procesador entre los usua-
rios de un sistema de usuarios múltiples.
² La unidad despachable.
27
28 CAPÍTULO 2. PROCESOS Y ADMINISTRACIÓN DEL PROCESADOR
– Que los procesos no deben programarse con hipótesis implícitas acerca del tiem-
po.
– Que normalmente la mayoría de los procesos no son afectados por la multipro-
gramació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 plani…cación” , el cual determina cuándo detener el trabajo en un proceso y dar
servicio a otro distinto1 .
En cuanto a las jerarquías de procesos es necesario señalar que los Sistemas Opera-
tivos 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.
Respecto de los estados del proceso deben efectuarse las siguientes consideraciones:
² Cada proceso es una entidad independiente pero frecuentemente debe interactuar
con otros procesos2 .
² 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.
1
Ver Figura 2.1 de la página 29 [23, Tanenbaum].
2
Ver Figura 2.2 de la página 29 [23, Tanenbaum].
3
Ver Figura 2.3 de la página 29 [23, Tanenbaum].
2.1. INTRODUCCIÓN Y DEFINICIONES SOBRE PROCESOS 29
UN CONTADOR DE PROGRAMA
ALTERNADOR DE PROCESOS
A
D
A C D B
P
R
D
O
C C
E
S B
O
A
TIEMPO
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.
Los sistemas que administran los procesos deben poder crear, destruir, suspender,
reanudar, cambiar la prioridad, bloquear, despertar y despachar un proceso.
La “creación” de un proceso signi…ca:
Un proceso puede “crear un nuevo proceso”, en cuyo caso el proceso creador se de-
nomina “proceso padre” y el proceso creado “proceso hijo” y se obtiene una “estructura
jerárquica de procesos”.
La “destrucción” de un proceso implica:
² Obtiene el control.
² Analiza 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.
Generalmente las interrupciones se pueden clasi…car por tipos según el siguiente
detalle4 :
² “SVC (llamada al supervisor)”: es una petición generada por el usuario para un ser-
vicio particular del sistema, por ejemplo, realización de Entrada / Salida u obtención
de más memoria.
² “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 instruc-
ción de reinicio de otro procesador en un sistema multiprocesador.
² “De veri…cación de programa”: son causadas por errores producidos durante la eje-
cución de procesos, por ejemplo:
² “De veri…cación de máquina”: son ocasionadas por un mal funcionamiento del hard-
ware.
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.
Existen tres tipos de PSW, que son la “actual”, la “nueva” y la “vieja”.
La “PSW Actual” almacena la dirección de la próxima instrucción que será ejecutada
e indica los tipos de instrucciones actualmente “habilitadas” e “inhabilitadas”.
En un sistema uniprocesador existe:
2.4. EL NÚCLEO DEL SISTEMA OPERATIVO 33
² Manipulación de interrupciones.
Criterio Descripción
Equidad Garantizar que cada proceso obtiene su proporción
justa de la cpu
E…cacia 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
² Despacho.
² Sincronización de procesos.
Cada proceso es único e impredecible, es decir que pueden requerir intensivamente ope-
raciones de Entrada / Salida o intensivamente cpu; el plani…cador del Sistema Operativo
no tiene la certeza de cuánto tiempo transcurrirá hasta que un proceso se bloquee, ya sea
por una operación de Entrada / Salida o por otra razón .
Para evitar que un proceso se apropie de la cpu un tiempo excesivo, los equipos poseen
un dispositivo que provoca una interrupción en forma periódica, por ejemplo 60 hz, o sea
sesenta veces por segundo.
En cada interrupción del reloj el Sistema Operativo decide si el proceso que se está
ejecutando continúa o si el proceso agotó su tiempo de cpu y debe suspenderse y ceder la
cpu a otro proceso.
Los principales conceptos relacionados con Plani…cación del Procesador son los
siguiente:
² Plani…cación apropiativa : es la estrategia de permitir que procesos ejecutables (des-
de el punto de vista lógico) sean suspendidos temporalmente.
² Plani…cación no apropiativa : es la estrategia de permitir la ejecución de un proceso
hasta terminar.
² Plani…cación del procesador : determinar cuándo deben asignarse los procesadores
y a qué procesos, lo cual es responsabilidad del Sistema Operativo.
– 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 Plani…cación, que se ins-
trumentan mediante Mecanismos de Plani…cación .
6
Ver Figura 2.4 de la página 36 [7, Deitel].
36 CAPÍTULO 2. PROCESOS Y ADMINISTRACIÓN DEL PROCESADOR
TRABAJOS ESPERANDO
ENTRADA
ENTRADA DE TRABAJOS
TRABAJOS ESPERANDO
INICIACION
PLANIFICACION DE
INICIACION DE TRABAJOS ALTO NIVEL
TRABAJOS SUSPENDIDOS
ESPERANDO ACTIVACION
ACTIVAR SUSPENDER
PLANIFICACION DE
NIVEL INTERMEDIO
PROCESOS ACTIVOS
DESPACHO PLANIFICACION DE
BAJO NIVEL
PROCESOS EN
EJECUCION
TERMINAR
TERMINADO
² Ser justa:
² Ser predecible:
² Minimizar la sobrecarga:
² Asegurar la prioridad:
– Un proceso de baja prioridad podría mantener un recurso clave, que puede ser
requerido por un proceso de más alta prioridad.
– Si el recurso es no apropiativo, el mecanismo de plani…cación debe otorgar al
proceso un tratamiento mejor del que le correspondería normalmente, puesto
que es necesario liberar rápidamente el recurso clave.
Muchas de estas metas se encuentran en con‡icto entre sí, por lo que la plani…cación
se convierte en un problema complejo.
Disciplina Descripción
“Apropiativa” Una vez que se le ha otorgado la cpu a un proceso,
le puede ser retirada
“No Apropiativa” Una vez que se le ha otorgado la cpu a un proceso,
no le puede ser retirada
– Probablemente los procesos que generan pocos fallos de página hayan acumu-
lado sus “conjuntos de trabajo” en el almacenamiento principal.
– Los procesos que experimentan gran cantidad de fallos de página aún no han
establecido sus conjuntos de trabajo.
– Un criterio indica favorecer a los procesos que han establecido sus conjuntos de
trabajo.
– Otro criterio indica favorecer a los procesos con una tasa alta de fallos de página
ya que rápidamente generarán una petición de Entrada / Salida.
² Frecuentemente un proceso ha sido apropiado por otro de más alta prioridad, lo cual
signi…ca lo siguiente:
² Signi…ca que los trabajos “largos” hacen esperar a los trabajos “cortos”.
² Logra hacer más predecibles los tiempos de respuesta puesto que los trabajos nuevos
de prioridad alta no pueden desplazar a los trabajos en espera.
² La libera voluntariamente.
² El reloj la interrumpe.
Tipos de prioridades
Asignadas automáticamente por el sistema
Asignadas desde el exterior
Dinámicas
Estáticas
Asignadas racionalmente
Asignadas arbitrariamente
2.11 Prioridades
Las prioridades pueden ser de distinto tipo8 .
En el caso de prioridades asignadas arbitrariamente, un mecanismo del sistema necesita
distinguir entre procesos sin importarle cuál es el más importante.
Las principales características de las prioridades estáticas son las siguientes:
² No cambian.
² Responden al cambio.
² Los mecanismos de implementación son más complicados que para prioridades es-
táticas.
² La ejecución del trabajo de plazo …jo no debe producir una grave degradación del
servicio a otros usuarios.
1. La cpu es apropiada.
(te + ts )
pr = (2.1)
ts
2.12. TIPOS DE PLANIFICACIÓN 45
² 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 limitados por la Entrada / Salida para optimizar el uso de los
dispositivos de Entrada / Salida.
LISTA DE LISTOS
TERMINACION
C B A CPU
LISTA DE LISTOS
TERMINACION
A C B A CPU
APROPIACION
APROPIACION
NIVEL 2 (FIFO)
TERMINACION
USA LA CPU
APROPIACION
APROPIACION
(a) Eliminar de la memoria los procesos que hayan permanecido en ella el tiempo
su…ciente.
(b) Cargar a memoria los procesos que hayan estado en disco demasiado tiempo.
Los criterios que podría utilizar el plani…cador de nivel superior para tomar sus deci-
siones son los que se indican a continuación:
2.13 Multiprocesamiento
2.13.1 Introducción
Es una tendencia signi…cativa en el campo de la computación.
Consiste en con…gurar un sistema de computación con varios procesadores .
No es un enfoque nuevo pero sí posee grandes perspectivas en función del desarrollo
de los microprocesadores.
Se podrían concebir sistemas construidos por cientos o miles de microprocesadores.
2.13. MULTIPROCESAMIENTO 49
2.13.2 Con…abilidad
Si un procesador falla, los restantes continúan operando, lo cual no es automático y requiere
de un diseño cuidadoso.
Un procesador que falla habrá de informarlo a los demás de alguna manera, para que
se hagan cargo de su trabajo .
Los procesadores en funcionamiento deben poder detectar el fallo de un procesador
determinado.
El Sistema Operativo debe percibir que ha fallado un procesador determinado y ya
no podrá asignarlo y también debe ajustar sus estrategias de asignación de recursos para
evitar la sobrecarga del sistema que está degradado.
cobegin;
proposición 1;
................
proposición n;
coend;
² Se pueden utilizar procesadores separados para ejecutar cada una de las proposicio-
nes.
Las principales características del paralelismo implícito son las que se detallan a con-
tinuación:
For i = 1 to 3
Do
cobegin;
coend;
PROCESADORES
MECANISMO DE
INTERCONEXION UNIDADES
DE MEMORIA
PROCESADORES
DE E / S
((P+Q)+R)+S (P+Q)+(R+S)
1 2 3 1 2 1
+ 3
+ 2
+ 2
+ 1 + 1 + 1
P Q R S P Q R S
2. Producir un código objeto para multiprocesadores que indique las operaciones que
se pueden realizar simultáneamente.
3. Reordenar expresiones para que sean más apropiadas para la computación en para-
lelo.
9
Ver Figura 2.6 de la página 52, Figura 2.7 de la página 52, Figura 2.8 de la página 53 y Figura 2.9 de
la página 53 [7, Deitel].
2.13. MULTIPROCESAMIENTO 53
P+(Q*R)+S (P+S)+(Q*R)
2 1 3 1 2 1
+ 2
+ 3
+ 2
+ 1 * 1
* 1
P Q R S P S Q R
P*(Q*R*S+T) (P*Q)*(R*S)+(P*T)
4 1 2 3 1 2 1 3 1
* 4
+ 3
+ 3
* 2
* 2
* 1 * 1 * 1
* 1
P Q R S T P Q R S P T
² Todo está controlado por un Sistema Operativo que proporciona interacción entre
procesadores y sus programas en los niveles de trabajo, tarea, paso, archivo y ele-
mentos de datos.
Las unidades receptoras deben poder reconocer qué mensajes del bus son enviados
hacia ellas y seguir y con…rmar las señales de control recibidas de la unidad emisora.
Es una organización económica, simple y ‡exible pero con una sola vía de comunicación,
por lo cual:
BUS
² La tasa neta de transmisiones está limitada por la tasa neta de transmisión del
conductor.
² La contención por el uso del bus en un sistema sobrecargado puede ocasionar una
seria degradación.
PROCES.
0
PROC.
E/S 0
PROCES.
1
PROC.
E/S 1
PROCES.
I
PROC.
E/S K
PROCES. PROCES.
0 1
PROCES. PROCES.
E/S 0 E/S 1
ALMACENA- ALMACENA-
MIENTO MIENTO
ENLACE DE CO-
MUNICACIONES
PROCESADOR PROCESADOR
E/S E/S
ALMACE-
PROCESADOR PROCESADOR
NAMIENTO
E/S E/S
² Terminación anormal.
² Recon…guración.
² Maestro / satélite.
Existen tablas de control con información global de todo el sistema (por ejemplo, lista
de procesadores conocidos por el Sistema Operativo) a las que se debe acceder utilizando
exclusión mutua.
Es más con…able que la organización maestro / satélite.
Cada procesador controla sus propios recursos dedicados.
La recon…guración de los dispositivos de Entrada / Salida puede implicar el cambio de
dispositivos a diferentes procesadores con distintos Sistemas Operativos.
La contención sobre las tablas del Sistema Operativo es mínima.
Los procesadores no cooperan en la ejecución de un proceso individual, que habrá sido
asignado a uno de ellos.
² Los datos críticos (del sistema y de usuario) deben mantenerse en copias múltiples
y en bancos de almacenamiento separados.
² El Sistema Operativo debe ejecutar efectivamente con la con…guración máxima y
con subconjuntos ante fallas.
² Debe haber capacidad de detección y corrección de errores de hardware sin interferir
con la e…ciencia operacional del sistema.
² Se debe utilizar la capacidad ociosa del procesador para tratar de detectar posibles
fallos antes de que se produzcan.
² El Sistema Operativo debe dirigir un procesador operativo para que tome el control
de un proceso que se estaba ejecutando en un procesador que falla.
E/S
PROCESADOR
PROCESADOR
E/S
² El hecho de que se estaría llegando a los límites del uniprocesador debido a la com-
pactación de componentes, es decir que se estaría próximo a los límites de longitud
y de proximidad de los “caminos electromagnéticos” (longitud del recorrido de la
señal electromagnética); alcanzados los límites mencionados, la única posibilidad de
incrementar capacidad de cómputo es mediante multiprocesamiento.
Administración de la Memoria
² Poderlos ejecutar.
² Referenciarlos directamente.
² Lleva un registro de las partes de memoria que se están utilizando y de aquellas que
no.
65
66 CAPÍTULO 3. ADMINISTRACIÓN DE LA MEMORIA
ALMACENAMIENTO
LA CPU PUEDE CACHE EL TIEMPO DE ACCESO
HACER REFEREN-
AL ALMACENAMIENTO
CIA DIRECTA A
DECRECE
LOS PROGRAMAS
Y DATOS
LA VELOCIDAD DE
ACCESO AL ALMACENA-
MIENTO AUMENTA
LA CAPACIDAD DE AL-
MACENAMIENTO
LA CPU SOLO DECRECE
PODRA HACER
REFEREN-
CIA A LOS
ALMACENAMIENTO
PROGRA-
SECUNDARIO
MAS Y DA-
TOS LUEGO
DE HABER
SIDO TRASLA-
DADOS AL ALMA-
CENAMIENTO
PRIMARIO
² Los programas en la memoria caché ejecutan mucho más rápido que en la memoria
principal.
² Estrategias de búsqueda:
² Estrategias de colocación.
² Estrategias de reposición.
0
SISTEMA
OPERATIVO
A
USUARIO
B
SIN USAR
C
– Detener el sistema.
– Producir salidas erróneas.
AREA DE 2
RECUBRIMIENTO
3
² Un trabajo en espera de e / s cederá la cpu a otro trabajo que esté listo para efectuar
cómputos.
² Existe paralelismo entre el procesamiento y la e / s.
² Se incrementa la utilización de la cpu y la capacidad global de ejecución del sistema.
² Es necesario que varios trabajos residan a la vez en la memoria principal.
Los trabajos se traducían con ensambladores y compiladores absolutos para ser ejecu-
tados solo dentro de una partición especí…ca.5
El S. O. resulta de implementación relativamente sencilla pero no se optimiza la utili-
zación de la memoria.
5
Ver Figura 3.5 de la página 72 [7, Deitel].
72 CAPÍTULO 3. ADMINISTRACIÓN DE LA MEMORIA
0
SISTEMA
SOLO EJECUTAN OPERATIVO
COLA DE TRAB. P / LA PARTICION 1 A
EN PARTICION 1
PARTICION 1
SOLO EJECUTAN B
EN PARTICION 2 COLA DE TRAB. P / LA PARTICION 2
PARTICION 2
C
SOLO EJECUTAN
COLA DE TRAB. P / LA PARTICION 3 PARTICION 3
EN PARTICION 3
D
0
SISTEMA
OPERATIVO
COLA DE TRABAJOS
A
PARTICION 1
B
PARTICION 2
LOS TRABAJOS PUEDEN SER
C
COLOCADOS DENTRO DE CUALQUIER
PARTICION DISPONIBLE EN LA QUE QUEPAN PARTICION 3
D
² Se usan para producir programas relocalizables que puedan ser ejecutados en cual-
quier partición disponible de tamaño su…ciente para aceptarlos.6
6
Ver Figura 3.6 de la página 72 [7, Deitel].
3.5. MULTIPROGRAMACIÓN DE PARTICIÓN FIJA 73
0 CPU
SISTEMA
OPERATIVO REGISTRO DE
A
LIMITES
A
USUARIO
0
SISTEMA
A OPERATIVO CPU
PARTICION 1 USUARIO
2
B ACTIVO
ACTUAL
PARTICION 2
B LIMITE INFERIOR
C
PARTICION 3 C LIMITE SUPERIOR
² Pueden ser usados por otros trabajos que cuando …nalizan 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 su…ciente (el total global disponible) para alojar a procesos encolados en
espera de memoria.
² Podría no ser su…ciente ningún área libre individual.9
La técnica de compresión de memoria implica pasar todas las áreas ocupadas del
almacenamiento a uno de los extremos de la memoria principal:
EN USO EN USO
EN USO
LIBRE
EN USO
EN USO
LIBRE
LIBRE
EN USO
LIBRE
El sistema debe detener todo mientras efectúa la compresión, lo que puede afectar los
tiempos de respuesta.
Implica la relocalización (reubicación) de los procesos que se encuentran en la memoria:
Una alta carga de trabajo signi…ca mayor frecuencia de compresión que incrementa el
uso de recursos.
² Los trabajos son “intercambiados”, dándose que un trabajo puede ser intercambiado
varias veces antes de llegar a su terminación.
78 CAPÍTULO 3. ADMINISTRACIÓN DE LA MEMORIA
² Técnicas de “paginación”.
² Técnicas de “segmentación”.
² Real:
² Real:
¢ Absoluta.
¢ Relocalizable (reubicable).
¤ Multiprogramación en partición variable.
² Virtual:
² “Direcciones virtuales”:
² “Direcciones reales”:
Los procesos hacen referencia a direcciones virtuales pero éstas deben ejecutarse en el
almacenamiento real:
² Las direcciones virtuales deben ser transformadas dentro de las direcciones reales,
mientras el proceso está en ejecución.
Existen varios medios para asociar las direcciones virtuales con las reales.12
Los mecanismos de “traducción dinámica de direcciones” (dat) convierten las direccio-
nes virtuales en reales al ejecutarse el proceso.
Las direcciones contiguas dentro del espacio de direcciones virtuales de un proceso no
tienen por qué ser contiguas dentro del almacenamiento real, a esto se denomina “con-
tigüidad arti…cial ”.13
² 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.
– En él se ejecutan los procesos y en él deben estar los datos para que un proceso
pueda referirse a ellos.
12
Ver Figura 3.13 de la página 80 [7, Deitel].
13
Ver Figura 3.14 de la página 81 [7, Deitel].
14
Ver Figura 3.15 de la página 82 [7, Deitel].
3.11. TRANSFORMACIÓN DE BLOQUES 81
LOCALIZA-
CIONES
CONTI-
GUAS DE
ALMA-
CENA-
MIENTO
VIRTUAL
MECANISMO DE
TRANSFORMACION
DE DIRECCIONES
² 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.
ALMACENAM. SECUNDARIO,
ALMACENAM. PRINCIPAL, AUXILIAR O ADICIONAL
PRIMARIO O REAL
DISCOS
PROCESA- ALMACENAM.
OTROS
DORES REAL
DISPOSIT.
ALMACENAMIENTO AUXILIAR
ALMACENAMIENTO
VIRTUAL DEL PROC. B
ALMACENAMIENTO
VIRTUAL DEL PROC. Z
² El sistema está informado del lugar del almacenamiento real donde han sido coloca-
dos los bloques de almacenamiento virtual.
² Cuanto mayor sea el bloque menor será la fracción del almacenamiento real que debe
dedicarse a contener la información del mapa.
Las direcciones son “bidimensionales”, es decir que una dirección virtual “v” se indica
por un par ordenado “(b,d)”, donde:
DIRECCION
BLOQUE N° “B” DESPLAZAM. “D”
VIRTUAL
V = ( B,D)
² Comienzan en direcciones del almacenamiento real que son múltiplos enteros del
tamaño …jo de la página.
² Podrá colocarse una nueva página dentro de cualquier “marco de página” o “celda
de página” disponible.
A N° DE BLOQUE DESPLAZAMIENTO
B
DIRECCION
+ B D VIRTUAL
V = (B,D)
A+B
TABLA DE MAPA
DE BLOQUES
A
DIRECCION
DE ESTE
BLOQUE
DENTRO DEL
B
ALMACENA-
MIENTO
D DIRECCION REAL
REAL
R=B‘ + D
LONGITUD
B‘
L B‘ + R
DIRECCION
PAGINA N° “P” DESPLAZAMIENTO “D” VIRTUAL
V = (P,D)
0
MARCO DE PAG. 0
R S P‘
N° DE PAGINA DESPLAZAMIENTO
DIRECCIONES VIRTUALES
A LAS QUE HACE
REFERENCIA UN PROCESO P D
EN EJECUCION
MECANISMO
DE TRANS-
FORMACION
DE PAGINAS
MARCO DE PAGINA 1
P‘
D MARCO DE PAGINA P ‘
POSICION DEL ALMACENAMIENTO REAL
CORRESPONDIENTE A LA DIRECCION
VIRTUAL (P,D)
DIRECCION BASE DE LA
TABLA DE MAPA DE PAGINAS
REGISTRO
ORIGEN DE
B DIRECCION VIRTUAL
LA TABLA
V = (P,D)
DE MAPA DE
PAGINAS
B
N° DE PAGINA DESPLAZAMIENTO
P
B+P + P D
TABLA DE
MAPA DE
PAGINAS
B
P‘
P‘ D
DIRECCION REAL R
N° DE PAGINA DESPLAZAMIENTO
DIRECCION VIRTUAL
P D V = (P,D)
MAPA
ASOCIATIVO
N° DE MARCO DESPLAZAMIENTO
P‘ D DIRECCION
P P‘
REAL R
Cada una de las células del almacenamiento asociativo se registra de manera simul-
tánea:
² Los rendimientos obtenidos con este esquema de mapa asociativo parcial superan
aproximadamente en un 100 % a los rendimientos obtenidos con esquemas de mapa
asociativo de página completo.
21
Ver Figura 3.25 de la página 93 [7, Deitel].
92 CAPÍTULO 3. ADMINISTRACIÓN DE LA MEMORIA
B
DIRECCION VIRTUAL V = (P,D)
P
+ N° DE PAGINA P DESPLAZAM. D
EJECUTADO
SOLO SI NO HAY INTENTA
CORRESPON- ESTO MAPA ASOCIATIVO PARCIAL
DENCIA EN EL PRIMERO (SOLO LAS PAGINAS MAS ACTIVAS)
MAPA ASOCIA-
TIVO B + P
MAPA DIRECTO
(TODAS LAS PAGINAS)
P P‘
B
SOLO SI HAY
CORRESPONDENCIA
EN EL MAPA
P ASOCIATIVO
SOLO SI NO HAY
CORRESPONDENCIA EN
EL MAPA ASOCIATIVO
P P‘ N° DE MARCO P ‘ DESPLAZAM. D
DIRECCION REAL R
ALMACENAMIENTO REAL
TABLA DE
USADO SOLO POR
MAPA DEL PAGINA 0
EL PROCESO A
PROCESO A
COMPARTIDO POR
PAGINA 1
LOS PROCESOS A Y B
TABLA DE
PAGINA 2
MAPA DEL
PROCESO B
COMPARTIDO POR
PAGINA 3
LOS PROC. A, B Y M
PAGINA 4
PAGINA 5
PAGINA 6
TABLA DE
MAPA DEL
PROCESO M
3.13 Segmentación
En los sistemas de “segmentación” un programa y sus datos pueden ocupar varios bloques
separados de almacenamiento real.22
Los bloques:
² Un programa de usuario, a quien corresponde una cierta clave en la cpu, solo puede
hacer referencia a los otros bloques del almacenamiento con igual clave de protección.
² “s” es el número del segmento del almacenamiento virtual en el cual residen los
elementos referidos.
ALMACENAMIENTO
PRIMARIO
SISTEMA
OPERATIVO
70 K
90 K 300 K
100 K LIBRE
140 K
100 K LIBRE
REQUERIMIENTOS DE
ESPACIO DEL NUEVO
TRABAJO
160 K LIBRE
SISTEMA
OPERATIVO
1 USUARIO A
CLAVE DE
1 USUARIO A 2
PROTECCION
2 USUARIO B
DEL ALMACENAMIENTO
2 USUARIO B
DE LA CPU
3 USUARIO C
1 USUARIO A
3 USUARIO C
3 USUARIO C
2 USUARIO B
2 USUARIO B
0
1 USUARIO A
1 USUARIO A
4 USUARIO D
4 USUARIO D
4 USUARIO D
TABLA DE MAPA
B+S
DE SEGMENTOS
D
S‘
S‘ +
S‘ + D
DIRECCION
R
REAL
R=S‘ + D
² Con caché su…ciente para alojar la tabla completa de mapa de segmentos o caché
parciales que contengan solo las entradas de los segmentos de referencia más recien-
3.13. SEGMENTACIÓN 97
Modo Aplicación
0 Seguridad
1 Un programa disponible a los usuarios,
que no pueden copiarlo ni modi…carlo,
pero sí ejecutarlo
2 Recuperación de información
3 Un programa puede ser copiado o
ejecutado, pero no puede ser modi…cado
4 Protege los datos contra un intento
erróneo de ejecutarlos
5 Este acceso se concede a los usuarios de con…anza
te.25
Dos procesos pueden compartir un segmento con solo tener entradas en sus tablas
generales que apunten al mismo segmento del almacenamiento primario.26
² Paginación.
² Segmentación.
² Segmentación y paginación.
REGISTRO ORIGEN DE LA
TABLA DE SEGMENTOS
DIRECCION B
DE LA TABLA DE
SEGMENTOS
DIRECCION VIRTUAL V = (S,P,D)
B
B+S
S N° DE SEGM. N° DE PAGINA DESPLAZAM.
+ S P D
INTENTA ESTO
SOLO EJECUTADO PRIMERO S,P
SI NO HAY MAPA DE ALMACENAM.
CORRESPONDENCIA ASOCIATIVO (SOLO LAS
DENTRO DEL MAPA PAGINAS MAS ACTIVAS)
ASOCIATIVO
S P P‘
TABLA DE MAPA DE
P‘
SEGMENTOS PARA
ESTE PROCESO
B
TABLA DE MAPA DE
S S‘ PAGINAS PARA EL
SEGMENTO S
S‘
P
P‘
P+S ‘
N° DE MARCO DESPLAZAM.
P‘ D
DIRECCION REAL R
TABLAS DE MAPA
TABLAS DE MAPA DE DIRECCION DEL
DE PAGINAS
SEGMENTOS (UNO POR MARCO DE PAGINA
(UNO POR
PROCESO)
SEGMENTO)
ALMACENAM.
SEGMENTO REAL
TABLA DE PROCESOS
(LA TOTALIDAD DEL
SISTEMA) DIREC. DE LA TABLA
DE MAPA DE PAGINAS
PROCESO
DIRECCION DE LA
A
TABLA DE SEGMENTOS
B
ALMACENAMIENTO
TABLA DE MAPA DE PAGINAS
REAL
PARA UNO DE LOS SEGMENTOS
DEL PROCESO A
TABLA DE MAPA DE
SEGMENTOS PARA
EL PROCESO A
PAGINA DEL
PROCESO A
TABLA DE MAPA DE
PAGINA COMPAR.
PAGINAS COMPARTIDA POR PROC. A Y B
TABLA DE MAPA
DE PAGINA DEL
SEGMENTOS PARA PROCESO B
EL PROCESO B
² “Estrategias de búsqueda”:
– Tratan de los casos en que una página o segmento deben ser traídos del alma-
cenamiento 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 almacena-
miento 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”:
² El principio de optimización.
² No usada recientemente.
² Conjuntos de trabajo.
A FALLO A - - A FALLO A - - -
B FALLO B A - B FALLO B A - -
C FALLO C B A C FALLO C B A -
D FALLO D C B D FALLO D C B A
A FALLO A D C A NO FALLO D C B A
B FALLO B A D B NO FALLO D C B A
E FALLO E B A E FALLO E D C B
A NO FALLO E B A A FALLO A E D C
B NO FALLO E B A B FALLO B A E D
C FALLO C E B C FALLO C B A E
D FALLO D C E D FALLO D C B A
E NO FALLO D C E E FALLO E D C B
² Ej.: La página de uso menos frecuente puede ser la página de entrada más reciente
al almacenamiento principal, y por lo tanto existe una alta probabilidad de que sea
usada de inmediato.
² “Bit referenciado”:
La selección de la página que será reemplazada comienza buscando una página que no
ha sido referenciada, pero si no la encuentra habrá que reemplazar una página que ha sido
referenciada.
Si una página ha sido referenciada se comprueba si ha sido modi…cada o no:
108 CAPÍTULO 3. ADMINISTRACIÓN DE LA MEMORIA
Con el transcurso del tiempo la mayoría de los “bits referenciados” serán activados:
² Se pierde la capacidad para distinguir las páginas más deseables para ser reempla-
zadas.
3.16 Localidad
El concepto de “localidad” expresa [7, Deitel]:
² Ej.: Los procesos tienden a favorecer ciertos subconjuntos de páginas, las que tienden
a ser adyacentes entre sí en el espacio de direcciones virtuales del proceso.
² Está relacionada con la forma en que se escriben los programas y se organizan los
datos.
– Recorrido de arreglos.
– Ejecución secuencial de código.
– Tendencia de los programadores a colocar de…niciones de variables relacionadas,
próximas entre sí.
1.00
UN PROCESO REALIZANDO REFERENCIAS ALEATORIAS
0.75 A SUS DIFERENTES PAGINAS
0.50 UN PROCESO REALIZANDO REFERENCIAS LOCALIZADAS
0.25
0.00
0.25 0.75
FRACCION DEL N° DE PAGINAS DE UN PROCESO
0.50 1.00 EN EL ALMACENAMIENTO PRIMARIO
TIEMPO DE EJECUCION DE UN
PROCESO
w
t-w t
TAMAÑO DE LA VENTANA w
Figura~3.37: Tamaño del conjunto de trabajo como una función del tamaño de la ventana.
² Garantiza que solo las páginas que necesita el proceso sean traídas al almacenamiento
principal.
TIEMPO SEGUN EL
“RELOJ DE LA PARED”
F F F F F
“F” ES EL TIEMPO PROMEDIO DE UNA BUSQUEDA DE PAGINA
El principal inconveniente está en los procesos que requieren acumular sus páginas una
por una:
² Cuanto más pequeño sea el tamaño de una página, más páginas y marcos de páginas
habrá y mayores serán las tablas de páginas:
² Con páginas grandes, grandes cantidades de información que nunca llegaría a ser
referenciada, se paginarán hacia el almacenamiento primario:
² Los procedimientos y datos rara vez comprenden un número entero de páginas, por
lo que los sistemas de paginación experimentan una “fragmentación interna”:
Los tamaños de pagina mas utilizados son: 512 b, 1 kb, 2 kb, 4 kb.
114 CAPÍTULO 3. ADMINISTRACIÓN DE LA MEMORIA
² Un proceso tiende a hacer referencia a una parte signi…cativa de sus páginas inme-
diatamente después de iniciar su ejecución.
² El proceso puede concluir sin haber referenciado a algunas de sus páginas, corres-
pondientes a rutinas que atienden errores que no se produjeron.
² Cuanto más marcos de página tenga un proceso, mayor será el tiempo entre los fallos
de páginas.
² Asignar marcos de página adicionales más allá del punto de in‡exión no produce
efectos signi…cativos sobre el tiempo interfallos.
Respecto del porcentaje de instrucciones de una página que son ejecutadas antes de
transferirse el control a otra página, los valores experimentales obtenidos indican un máxi-
mo de 200 instrucciones por página de 1 kb.35
35
Ver Figura 3.39 de la página 115 [7, Deitel].
3.20. COMPORTAMIENTO DE UN PROGRAMA EN LA PAGINACIÓN 115
0
TIEMPO
N° DE FALLOS DE PAGINAS EXPERIMENTADOS POR UN PROCESO EN SU
EJECUCION DE PRINCIPIO A FIN
0
TAMAÑO DE PAGINA
TIEMPO TOTAL DE EJECUCION
TIEMPO DEL PROCESO
INTER-
FALLOS
(TIEMPO
ENTRE
FALLOS
DE
PAGINAS)
0
N° DE MARCOS DE PAGINA N° DE PAGINAS DEL PROCESO
ASIGNADOS A ESTE PROCESO
FRECUENCIA
0 i
INSTRUCCIONES EJECUTADAS POR PAGINA ANTES DE SER
TRANSFERIDO EL CONTROL A OTRA PAGINA
Sistemas de Archivos
4.1 Introducción
Todas las aplicaciones computarizadas necesitan almacenar y recuperar la información
[7, Deitel]:
² 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.
Las condiciones esenciales para el almacenamiento de la información a largo plazo son:
² 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.
La solución es el almacenamiento de la información en discos y otros medios externos
en unidades llamadas archivos:
² Los archivos deben ser persistentes, 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.
El “Sistema de Archivos” es la parte del sistema de administración del almacenamien-
to responsable, principalmente, de la administración de los archivos del almacenamiento
secundario.
Es la parte del S. O. responsable de permitir “compartir controladamente” la informa-
ción de los archivos.
117
118 CAPÍTULO 4. SISTEMAS DE ARCHIVOS
Se debe poder estructurar los archivos de la manera más apropiada a cada aplicación.
Los usuarios deben poder ordenar la transferencia de información entre archivos.
Se deben proporcionar posibilidades de “respaldo” y “recuperación” para prevenirse
contra:
² Debe suministrar una “visión lógica” de los datos y de las funciones que serán eje-
cutadas, en vez de una “visión física”.
² Se utiliza una “raíz ” para indicar en qué parte del disco comienza el “directorio
raíz ”.
² 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.
Los nombres de archivos solo necesitan ser únicos dentro de un directorio de usuario
dado.
El nombre del sistema para un archivo dado debe ser único para el sistema de archivos.
En sistemas de archivo “jerárquicos” el nombre del sistema para un archivo suele estar
formado como el “nombre de la trayectoria” del directorio raíz al archivo.
4.4 Archivos
Se considerará el punto de vista del usuario.
Muchos S. O. utilizan nombres de archivo con dos partes, separadas por un punto:
² “Secuencia de bytes”:
120 CAPÍTULO 4. SISTEMAS DE ARCHIVOS
² “Secuencia de registros”:
– El archivo es una secuencia de registros de longitud …ja, cada uno con su propia
estructura interna.
² “Arbol”:
² Los Archivos Regulares son aquellos que contienen información del usuario.
² Acceso Secuencial: el proceso lee en orden todos los registros del archivo comen-
zando por el principio, sin poder:
– Saltar registros.
– Leer en otro orden.
4.4. ARCHIVOS 121
² Acceso Aleatorio: el proceso puede leer los registros en cualquier orden utilizando
dos métodos para determinar el punto de inicio de la lectura:
² Close (cerrar): cuando concluyen los accesos, los atributos y direcciones del disco ya
no son necesarios, por lo que el archivo debe cerrarse y liberar la tabla de espacio
interno.
² Read (leer): los datos se leen del archivo; quien hace la llamada debe especi…car la
cantidad de datos necesarios y proporcionar un bu¤er para colocarlos.
² Append (añadir): es una forma restringida de “write”. Solo puede añadir datos al
…nal del archivo.
² Seek (buscar): especi…ca el punto donde posicionarse. Cambia la posición del apun-
tador a la posición activa en cierto lugar del archivo.
² Get attributes (obtener atributos): permite a los procesos obtener los atributos del
archivo.
² Set attributes (establecer atributos): algunos atributos pueden ser determinados por
el usuario y modi…cados luego de la creación del archivo. La información relativa al
modo de protección y la mayoría de las banderas son un ejemplo obvio.
4.5 Directorios
Generalmente son utilizados por los S. O. para llevar un registro de los archivos [23, Ta-
nenbaum].
² El nombre.
² Sus atributos.
DIRECTORIO ARCHIVO
DIRECTORIO RAIZ
DIRECTORIO RAIZ
² Directorio único: el sistema tiene un solo directorio con todos los archivos de todos
los usuarios.1
² Un directorio por usuario: el sistema habilita un solo directorio por cada usuario.2
² Un árbol de directorios por usuario: el sistema permite que cada usuario tenga tantos
directorios como necesite, respetando una jerarquía general.3
Los principales métodos para nombres de los archivos son [23, Tanenbaum]:
1
Ver Figura 4.1 de la página 124 [23, Tanenbaum].
2
Ver Figura 4.2 de la página 124 [23, Tanenbaum].
3
Ver Figura 4.3 de la página 125 [23, Tanenbaum].
4.5. DIRECTORIOS 125
DIRECTORIO RAIZ
SUBDIRECTORIOS
DEL USUARIO
² Closedir (cerrar directorio): cuando se ha leído un directorio, éste debe ser cerrado
para liberar el espacio correspondiente de la tabla interna.
² Link (ligar): es una técnica que permite que un archivo aparezca en más de un
directorio:
– Si el archivo que se desea desligar aparece solo en un directorio (el caso normal):
¤ Se elimina del sistema de archivos.
– Si el archivo que se desea desligar, está presente en varios directorios:
¤ Solo se elimina la ruta de acceso especi…cada.
¤ Las demás rutas permanecen.
Se deben tener presentes problemas tales como la “fragmentación” creciente del es-
pacio en disco:
² Asignación no contigua:
DIRECTORIO DE USUARIOS
ARCHIVO LOCALIZACION
SE REPRESENTA EL ARCHIVO A
BLOQUE DE ARCHIVO 0
DATOS
BLOQUE FISICO 4
BLOQUE DE ARCHIVO 1
DATOS
BLOQUE FISICO 7
0
B. DE A. 6
BLOQUE DE ARCHIVO 2
DATOS B. F. 15
DATOS
BLOQUE FISICO 2
B. DE A. 3 B. DE A. 4 B. DE A. 5
DATOS B. F. 10 DATOS B. F. 12 DATOS B. F. 8
ARCHIVO LOCALIZACION
BLOQUE DE
BLOQUE DE CONTINUACION
INDICES DE INDICE
² Una posibilidad es almacenarlos en forma directa dentro del dato del directorio.
² Se debe tener una copia de las direcciones en disco en el directorio que accede al
archivo compartido al enlazar el archivo.
² Se debe evitar que los cambios hechos por un usuario a través de un directorio no sean
visibles por los demás usuarios, para lo que se consideraran dos soluciones posibles.
Primer solución:
7
Ver Figura 4.7 de la página 134 [23, Tanenbaum].
134 CAPÍTULO 4. SISTEMAS DE ARCHIVOS
NODO-I
ATRIBUTOS
BLOQUE
SIMPLEMENTE
INDIRECTO
BLOQUE
DOBLEMENTE
INDIRECTO
DIRECCIONES
DIRECCIONES EN DISCO DE LOS
BLOQUES DE
DATOS
BLOQUE
TRIPLEMENTE
INDIRECTO
² Los bloques del disco no se enlistan en los directorios, sino en una pequeña estructura
de datos asociada al propio archivo.
² Los directorios apuntarían solo a esa pequeña estructura de datos, que podría ser el
nodo-i.
Segunda solución:
² El enlace se produce haciendo que el sistema cree un nuevo archivo de tipo “link ”.
² El archivo “link”:
² La creación de un enlace:
¤ Esto no ocurre con los enlaces simbólicos ya que solo el propietario verda-
dero tiene un apuntador al nodo-i:
¢ Los usuarios enlazados al archivo solo tienen nombres de rutas de acceso
y no apuntadores a nodo-i.
¢ Cuando el propietario elimina un archivo, este se destruye.
² Búsqueda.
² Demora rotacional.
² Transferencia.
Mapa de bits:
² Un disco con “n” bloques necesita un mapa de bits con “n” bits.
² Los bloques libres se representa con “1” y los asignados con “0” (o viceversa).
² Generalmente este método es preferible cuando existe espacio su…ciente en la memo-
ria principal para contener completo el mapa de bits.
Disk quotas:
Para evitar que los usuarios se apropien de un espacio excesivo en disco, los S. O.
multiusuario proporcionan generalmente un mecanismo para establecer las cuotas en el
disco.
La idea es que:
138 CAPÍTULO 4. SISTEMAS DE ARCHIVOS
La solución en software:
² Requiere que el usuario o el sistema de archivos construyan un archivo con todos los
bloques defectuosos.
² Se obtiene una copia de respaldo periódicamente (por ej.: una vez por mes o por
semana), llamada copia total.
² Se obtiene una copia diaria solo de aquellos archivos modi…cados desde la última
copia total; en estrategias mejoradas, se copian solo aquellos archivos modi…cados
desde la última vez que dichos archivos fueron copiados.
² Se debe mantener en el disco información de control como una “lista de los tiempos
de copiado” de cada archivo, la que debe ser actualizada cada vez que se obtienen
copias de los archivos y cada vez que los archivos son modi…cados.
² Puede requerir una gran cantidad de cintas de respaldo dedicadas a los respaldos
diarios entre respaldos completos.
² Bloques de nodos-i.
² Bloques de directorios.
Si un bloque no aparece en ninguna de las tablas se trata de una falla llamada bloque
faltante:
Una falla muy grave es que el mismo bloque de datos aparezca referenciado dos o más
veces en la tabla de bloques en uso:
Otro error posible es que un bloque esté en la tabla de bloques en uso y en la tabla de
bloques libres:
² Se soluciona eliminándolo de la tabla de bloques libres.
Las veri…caciones de directorios incluyen controles como:
² Número de directorios que apuntan a un nodo-i con los contadores de enlaces alma-
cenados en los propios nodos-i; en un sistema consistente de archivos deben coincidir.
Una posible falla es que el contador de enlaces sea mayor que el número de entradas
del directorio:
² Aunque se eliminaran todos los archivos de los directorios el contador sería distinto
de cero y no se podría eliminar el nodo-i.
² No se trata de un error serio pero produce desperdicio de espacio en disco con archivos
que no se encuentran en ningún directorio.
² Se soluciona haciendo que el contador de enlaces en el nodo-i tome el valor correcto;
si el valor correcto es 0, el archivo debe eliminarse.
Otro tipo de error es potencialmente catastró…co:
² Si dos entradas de un directorio se enlazan a un archivo, pero el nodo-i indica que
solo existe un enlace, entonces, al eliminar cualquiera de estas entradas de directorio,
el contador del nodo-i tomará el valor 0.
² Debido al valor 0 el sistema de archivos lo señala como no utilizado y libera todos
sus bloques.
² Uno de los directorios apunta hacia un nodo-i no utilizado, cuyos bloques se podrían
asignar entonces a otros archivos.
² La solución es forzar que el contador de enlaces del nodo-i sea igual al número de
entradas del directorio.
También se pueden hacer veri…caciones heurísticas, por ej.:
² Cada nodo-i tiene un modo, pero algunos modos son válidos aunque extraños:
La técnica más común para reducir los accesos a disco es el bloque caché o bu¤er
caché [23, Tanenbaum]:
² Se utiliza el término ocultamiento para esta técnica (del francés “cacher”: ocultar).
² Un caché es una colección de bloques que pertenecen desde el punto de vista lógico
al disco, pero que se mantienen en memoria por razones de rendimiento.
Uno de los algoritmos más comunes para la administración del caché es el siguiente:
² Veri…car todas las solicitudes de lectura para saber si el bloque solicitado se encuentra
en el caché.
² En caso negativo, se lee para que ingrese al caché y luego se copia al lugar donde se
necesite.
– Hay que eliminar algún bloque y volverlo a escribir en el disco en caso de que
haya sido modi…cado luego de haberlo traído del disco.
– Se plantea una situación muy parecida a la paginación y se resuelve con algo-
ritmos similares.
– Los bloques que se vayan a utilizar muy pronto, como un bloque parcialmente
ocupado que se está escribiendo, deberían permanecer un “largo tiempo”.
La solución de algunos S. O. consiste en tener una llamada al sistema que fuerza una
actualización general a intervalos regulares de algunos segundos (por ej. 30).
Otra solución consiste en escribir los bloques modi…cados (del caché) al disco, tan
pronto como haya sido escrito (el caché):
² Se deben colocar los bloques que probablemente tengan un acceso secuencial, próxi-
mos entre sí, preferentemente en el mismo cilindro.
² Los nodos-i deben estar a mitad del disco y no al principio, reduciendo a la mitad
el tiempo promedio de búsqueda entre el nodo-i y el primer bloque del archivo.
² Tipo de dispositivo.
² Fecha de destrucción.
4.8 Seguridad
Los sistemas de archivos generalmente contienen información muy valiosa para sus usua-
rios, razón por la que los sistemas de archivos deben protegerla [23, Tanenbaum].
² La pérdida de datos.
² Los intrusos.
² 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.
² Protección de las personas respecto del mal uso de la información en contra de uno
mismo.
² Modi…car un programa normal para que haga cosas adversas además de su función
usual.
² 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).
4.8.2 Virus
Los virus computacionales:
² Los virus y los gusanos intentan diseminarse y pueden crear un daño severo.
² Comúnmente los virus se ejecutan e intentan reproducirse cada vez que se ejecuta el
programa que los aloja.
² Frecuentemente los problemas con los virus son más fáciles de evitar que de curar:
² El sistema no debe:
– Veri…car el permiso.
– Determinar que el acceso está permitido.
– Abandonar esta información para su uso posterior.
Dar a cada proceso el mínimo privilegio posible, lo que implica un esquema de “pro-
tección de grano …no”.
El mecanismo de protección debe ser simple, uniforme e integrado hasta las capas más
bajas del sistema:
² Los usuarios no deben sentir que la protección de sus archivos les implica demasiado
trabajo:
4.8.5 Contraseñas
Son la forma de autenti…cación más utilizada.
Son de fácil comprensión e implementación.
Deben almacenarse cifradas (encriptadas).
Se deben prever intentos de penetración consistentes en pruebas de combinaciones de
nombres y contraseñas.
Si las contraseñas fueran de 7 caracteres elegidos al azar de los 95 caracteres ASCII
que se pueden imprimir:
² A 1.000 ciframientos por segundo tomaría 2.000 años construir la lista a veri…car
contra el archivo de contraseñas.
148 CAPÍTULO 4. SISTEMAS DE ARCHIVOS
² Firmas.
– Un objeto.
– Un subconjunto de las operaciones que se pueden llevar a cabo en él.
² Existen métodos prácticos que almacenan solo los elementos no vacíos por …las o por
columnas.
4.9.3 Posibilidades
La matriz de protección también puede dividirse por renglones [23, Tanenbaum]:
² Se le asocia a cada proceso una lista de objetos a los cuales puede tener acceso.
² Un campo tipo:
² Un campo derechos:
– Mapa de bits que indica las operaciones básicas permitidas en este tipo de
objeto.
4.9. MECANISMOS DE PROTECCIÓN 151
² Un campo objeto:
Las listas de posibilidades son a su vez objetos y se les puede apuntar desde otras
listas de posibilidades; esto facilita la existencia de subdominios compartidos.
Las listas de posibilidades o listas-c deben ser protegidas del manejo indebido por parte
del usuario.
Los principales métodos de protección son:
² Arquitectura marcada:
– Cada posibilidad está cifrada con una clave secreta desconocida por el usuario.
– Muy adecuado para sistemas distribuidos.
Generalmente las posibilidades tienen derechos genéricos aplicables a todos los obje-
tos, por ej.:
² Copiar posibilidad:
² Copiar objeto:
² Eliminar posibilidad:
² Destruir objeto:
Muchos sistemas con posibilidades se organizan como una colección de módulos con
módulos administradores de tipos para cada tipo de objeto y entonces es esencial que el
módulo administrador de tipos pueda hacer más cosas con la posibilidad que un proceso
ordinario.
Se utiliza la técnica de ampli…cación de derechos:
² Los administradores de tipo obtienen una plantilla de derechos que les da más dere-
chos sobre un objeto de los que permitía la propia lista de posibilidades.
² Crear objeto.
² Eliminar objeto.
² Crear dominio.
² Eliminar dominio.
² Insertar derecho.
² Eliminar derecho.
Las primitivas se pueden combinar en comandos de protección, que pueden ser ejecu-
tados por los programas del usuario para modi…car la matriz de protección.
En cada momento, la matriz de protección determina lo que puede hacer un proceso
en cualquier momento; no determina lo que no está autorizado a realizar.
La matriz es impuesta por el sistema.
La autorización tiene que ver con la política de administración.
² Propietario:
² Usuario especi…cado:
² Grupo o proyecto:
4.10. RESPALDO Y RECUPERACIÓN 153
² Público:
Entrada / Salida
5.1 Introducción
Una de las funciones principales de un S. O. es el control de todos los dispositivos de e /
s de la computadora [23, Tanenbaum].
Las principales funciones relacionadas son:
155
156 CAPÍTULO 5. ENTRADA / SALIDA
5.2.1 Dispositivos de E / S
Se pueden clasi…car en dos grandes categorías:
² Dispositivos de bloque.
² Dispositivos de caracter.
² 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.
² Un componente mecánico.
² Un componente electrónico, el controlador del dispositivo o adaptador.
² El preámbulo:
El controlador debe:
² Convertir el ‡ujo de bits en serie en un bloque de bytes.
² Efectuar cualquier corrección de errores necesaria.
² Copiar el bloque en la memoria principal.
Cada controlador posee registros que utiliza para comunicarse con la cpu:
² 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.
El S. O. realiza la e / s al escribir comandos en los registros de los controladores; los
parámetros de los comandos también se cargan en los registros de los controladores.
Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo.
Al terminar el comando, el controlador provoca una interrupción para permitir que el
S. O.:
² Obtenga el control de la cpu.
² Veri…que los resultados de la operación.
La cpu obtiene los resultados y el estado del dispositivo al leer uno o más bytes de
información de los registros del controlador.
Ejemplos de controladores, sus direcciones de e / s y sus vectores de interrupción en
la PC IBM pueden verse en la Tabla 5.1 de la página 158 [23, Tanenbaum].
158 CAPÍTULO 5. ENTRADA / SALIDA
² El S. O. lee el bloque del disco por medio del bu¤er del controlador:
Luego de que el controlador leyó todo el bloque del dispositivo a su bu¤er y de que
corroboró la suma de veri…cación:
UNIDAD
MEMORIA CONTROLADOR
DEL
BUFFER
CPU DISCO
CONTADO REGISTROS DEL DMA
R DIREC. EN MEMORIA
CONTADO
BUS DEL SISTEMA
R
² Se repite este proceso hasta que el contador se anula y por lo tanto el controlador
provoca una interrupción.
El controlador necesita un bu¤er interno porque una vez iniciada una transferencia del
disco:
– 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 espe-
rar.
– Si la siguiente palabra llegara antes de que la anterior hubiera sido almacenada,
el controlador la tendría que almacenar en alguna parte.
7 0 7 0 5 0
6 1 3 4 2 3
6 1 7 6
5 2
4 3 2 5 4 1
² Mientras trans…eren 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.
² 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.
2
Ver Figura 5.2 de la página 160 [23, Tanenbaum].
5.3. PRINCIPIOS DEL SOFTWARE DE E / S 161
CAPAS FUNCIONES DE E / S
SOLICITUD REPLICA DE E / S
PROCESO DEL
DE E / S
USUARIO HACE LLAMADAS A E / S; DA FORMATO
A LA E / S; SPOOLING
SOFTWARE INDEP. NOMBRE, PROTECCION, BLOQUEO, USO
DEL DISPOSITIVO DE BUFFER, ASIGNACION
MANEJADORES DE
DESPIERTA AL MANEJADOR AL
LAS
TERMINAR LA E / S
INTERRUPCIONES
Figura~5.3: Capas del sistema de entrada / salida y las principales funciones de cada capa.
² Debe ser posible escribir programas que se puedan utilizar con archivos en distintos
dispositivos, sin tener que modi…car los programas para cada tipo de dispositivo.
² 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.
Otro aspecto clave son las transferencias síncronas (por bloques) o asíncronas (con-
trolada por interruptores):
² Manejadores de interrupciones.
² Directivas de dispositivos.
² Cada proceso que inicie una operación de e / s se bloquea hasta que termina la e /
s y ocurra la interrupción.
² Aceptar las solicitudes abstractas que le hace el software independiente del disposi-
tivo.
Si al recibir una solicitud el manejador está ocupado con otra solicitud, agregara la
nueva solicitud a una cola de solicitudes pendientes.
La solicitud de e / s, por ej. para un disco, se debe traducir de términos abstractos a
términos concretos:
3
Ver Figura 5.3 de la página 161 [23, Tanenbaum].
5.3. PRINCIPIOS DEL SOFTWARE DE E / S 163
² Uso de bu¤ers.
² Informe de errores.
El software independiente del dispositivo asocia los nombres simbólicos de los disposi-
tivos con el nombre adecuado.
Un nombre de dispositivo determina de manera única el nodo-i de un archivo especial:
² Este nodo-i contiene el número principal del dispositivo, que se utiliza para localizar
el manejador apropiado.
164 CAPÍTULO 5. ENTRADA / SALIDA
² 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 proceso especial, único con permiso para utilizar el archivo especial de la impre-
sora, debe imprimir los archivos en el directorio.
² Buscar en otra.
CABEZAS DE
LECTURA -
PLATOS EJE BARRA
ESCRITURA
Todas las cabezas de lectura - escritura están montadas sobre una barra o conjunto de
brazo móvil:
² Para una posición dada, la serie de pistas accesibles forman un cilindro vertical.
5
Ver Figura 5.5 de la página 167 [7, Deitel].
5.6. ALGORITMOS DE PROGRAMACIÓN DEL BRAZO DEL DISCO 167
TIEMPO DE
TRANSMISION
TIEMPO DE BUSQUEDA
BARRA
TIEMPO DE
LATENCIA
Ej. de SSF :
² Durante la búsqueda, llegan solicitudes para los cilindros 1, 36, 16, 34, 9 y 12, en
ese orden.
² 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.
² 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.
Ej. del algoritmo del elevador para el caso anterior, con el valor inicial arriba del bit
de dirección:
– 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 cilin-
dro, sin generar un movimiento del brazo.
Cuando existen varias unidades, se debe tener una tabla de solicitudes pendientes para
cada unidad.
Si una unidad está inactiva, deberá buscarse el cilindro siguiente necesario, si el con-
trolador permite búsquedas traslapadas.
Cuando termina la transferencia actual se veri…ca si las unidades están en la posición
del cilindro correcto:
² El factor dominante será el retraso rotacional, por lo tanto, los algoritmos que op-
timizan los tiempos de búsqueda (como el algoritmo del elevador) perderán impor-
tancia frente a los algoritmos que optimicen el retraso rotacional.
² Los 38 bits conforman una palabra de 32 bits junto con 6 bits para veri…cación.
Este diseño se conoce como RAID; siglas en inglés de “arreglo redundante de discos
no costosos”.
² La generación de peticiones puede ser mucho más rápida que la atención de las
mismas:
² Optimización de la búsqueda.
² Capacidad de ejecución.
La plani…cación suele mejorar la imagen total al tiempo que reduce los niveles de
servicio de ciertas peticiones:
² 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.
² Se desea una política de plani…cación que minimice la varianza, es decir que maximice
la predecibilidad.
² FCFS.
² SSTF.
172 CAPÍTULO 5. ENTRADA / SALIDA
² SCAN.
² SCAN de N - Pasos.
² C - SCAN.
² Esquema Eschenbach.
² Las peticiones se reordenan para ser servidas dentro de un cilindro para tomar ven-
taja de la posición rotacional.
5.9.7 Conclusiones
Mediante trabajos de simulación y de laboratorio se demostró lo siguiente:
² Medir la actividad.
Para eliminar ciertos embotellamientos puede ser necesaria una recon…guración del
hardware:
Para ayudar a reducir la congestión del canal, muchos sistemas han incorporado la
técnica de examen (sensado) de posición rotacional (RPS):
² RPS permite al canal quedar libre justo hasta antes de que el registro se encuentre
debajo de la cabeza de lectura - grabación apropiada.
² RPS permite varias peticiones activas al mismo tiempo en un solo canal, incremen-
tando la performance.
5.12. MANEJO DE ERRORES EN DISCOS 175
² Son muy convenientes desde el punto de vista de las aplicaciones y del usuario.
² Error de programación:
² Error de búsqueda:
El manejador del disco debe controlar los errores de la mejor manera posible.
La mayoría de los controladores:
² Son adecuados para el almacenamiento de programas o datos con accesos muy fre-
cuentes.
Los bloques de almacenamiento tienen el mismo tamaño que en los discos reales.
Cuando el manejador debe leer de o escribir en un bloque de un disco en RAM, calcula
el lugar de la memoria donde se encuentra el bloque solicitado y lee o escribe en el mismo.
5.15 Relojes
Los relojes o cronómetros son esenciales para la operación de sistemas de tiempo compar-
tido [23, Tanenbaum].
Registran la hora del día.
Evitan que un proceso monopolice la cpu.
El software para reloj toma generalmente la forma de un manejador de dispositivo,
aunque no es un dispositivo de bloque ni de caracter.
Los relojes más sencillo trabajan con la línea de corriente eléctrica de 110 o 220 voltios
y provocan una interrupción por cada ciclo de voltaje, a 50 o 60 hz.
Otro tipo de relojes consta de tres componentes:
– Genera una señal periódica de muy alta precisión, generalmente entre 5 y 100
mhz.
– La señal se alimenta en el contador para que cuente en forma descendente hasta
cero.
– Cuando el contador llega a cero, provoca una interrupción de la cpu.
La ventaja del reloj programable es que su frecuencia de interrupción puede ser con-
trolada por el software.
Las principales funciones del software manejador del reloj son:
² Evitar que los procesos se ejecuten durante más tiempo del permitido.
² Controlar llamadas al sistema tipo “alarm” por parte de los procesos del usuario.
El software manejador del reloj puede tener que simular varios relojes virtuales con
un único reloj físico.
5.16 Terminales
Las terminales tienen gran número de formas distintas [23, Tanenbaum]:
² Interfaz RS-232:
– Orientada a caracteres.
– Orientada a bits.
5.16. TERMINALES 179
² Poseen una interfaz mediante una memoria especial llamada video RAM :
² Cada bit en el video RAM controla en forma directa un solo pixel de la pantalla.
² Permite una completa ‡exibilidad en los tipos y tamaños de caracteres, varias ven-
tanas y grá…cos arbitrarios.
Las terminales pueden operar con una estructura central de bu¤ers o con bu¤ers ex-
clusivos para cada terminal.
Frecuentemente los manejadores de terminales soportan operaciones tales como:
Bloqueos
Los sistemas de cómputos tienen muchos recursos que solo pueden ser utilizados por
un proceso a la vez:
181
182 CAPÍTULO 6. BLOQUEOS
PROCESO PROCESO
A B
² 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).
² Se habilitan varias copias de las estructuras de datos, una para cada usuario.
184 CAPÍTULO 6. BLOQUEOS
² Como el código puede ser utilizado por varios usuarios a la vez, no puede cambiar
durante la ejecución:
1. Solicitar el recurso.
2. Utilizar el recurso.
3. Liberar el recurso.
² En otros S. O. la solicitud falla y el proceso debe esperar para luego intentar nueva-
mente.
² 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).
² 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.
² Detección y recuperación.
2
Ver Figura 6.2 de la página 186 [23, Tanenbaum].
3
Ver Figura 6.3 de la página 186 y Figura 6.4 de la página 187 [23, Tanenbaum].
186 CAPÍTULO 6. BLOQUEOS
D
A S
T U
R B C
PROCESOS: A, B, C RECURSOS: R, S, T
A B C A B C A B C
R S T R S T R S T
A B C A B C A B C
R S T R S T R S T
A B C A B C A B C
R S T R S T R S T
A B C A B C A B C
R S T R S T R S T
² Se utiliza en sistemas que permiten que éstos ocurran, ya sea voluntaria o involun-
tariamente.
² La meta es determinar si ha ocurrido un bloqueo:
² 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.
El problema es que se debe pagar un cierto precio para encarar el problema del bloqueo:
² En el uso de recursos.
² Las ‡echas que van de los recursos al proceso (los recursos asignados al proceso).
² Las ‡echas que van del proceso al recurso (las peticiones actuales del proceso).
Si una grá…ca puede ser reducida por todos sus procesos, entonces no hay interbloqueo.
Si una grá…ca no puede ser reducida por todos sus procesos, entonces los procesos
“irreducibles” constituyen la serie de procesos interbloqueados de la grá…ca.5
P1
P1 ESTA PIDIENDO UN RECURSO DEL TIPO R1.
R2
P2
UN RECURSO DEL TIPO R2 HA SIDO
ASIGNADO AL PROCESO P2.
R3
P3 P4
EL PROCESO P3 ESTA PIDIENDO EL RECURSO R3,
EL CUAL HA SIDO ASIGNADO AL PROCESO P4.
R4
² La pregunta es: ¿está bloqueado este sistema y, en tal caso, cuáles son los procesos
bloqueados?.
² La respuesta se obtiene mediante la grá…ca de recursos: si la grá…ca presenta un
ciclo signi…ca procesos bloqueados.6
2. Se inicializan:
3. Se añade el nodo activo al …nal de “L” y se veri…ca si el nodo aparece en “L” dos
veces:
REDUCIDA POR P9
R6
R6
P8
P8
P7 P7
R7
R7
P9
P9
REDUCIDA POR P7
P8
R6
R6 P8
P7 REDUCIDA POR P8
R7 R7
P7
P9
P9
R A B
LOS PROCESOS D, E Y G
ESTAN BLOQUEADOS.
C S D T E
LOS PROCESOS A, C Y F
F U V NO ESTAN BLOQUEADOS.
W G
4. Desde el nodo dado se veri…ca si existen arcos que salgan de dicho nodo y no estén
marcados:
² Luego se sigue este arco hasta el nuevo nodo activo y se regresa al paso 3.
² 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á…ca no contiene ciclos y el algoritmo
termina.
² “S ” no tiene arcos que salgan de él, por lo que no se puede continuar y se regresa a
“A”.
² Se inicia nuevamente el algoritmo partiendo de “A”, siendo “L” otra vez la lista
vacía.
² De “B” se siguen los arcos de salida hasta llegar a “D”, siendo L=[B,T,E,V,G,U,D].
² 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”).
En todo momento algunos de los recursos están asignados y por lo tanto no están
disponibles.
Se considera un vector “A” de recursos disponibles:
² “Ai " indica el número de instancias disponibles del recurso “i ” ; se re…ere a recursos
no asignados.
Se utilizan:
² De…nimos que “A” es menor o igual que “B” si y solo si “Ai ”es menor o igual que
“B i ” para “i” entre “0” y “m”, ambos inclusive.
Los pasos básicos del algoritmo de detección de bloqueos son los siguientes:
196 CAPÍTULO 6. BLOQUEOS
0 0 1 0 2 0 0 1
C= 2 0 0 1 R= 1 0 1 0
0 1 2 0 2 1 0 0
1. Se busca un proceso no marcado “P i " , para el cual el i-ésimo renglón de “R” sea
menor que “A”.
2. 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.
3. Si no existe tal proceso, el algoritmo termina.
² Muchos sistemas tienen limitaciones para suspender un proceso por tiempo inde…nido
y reanudarlo más tarde:
– Ej.: Los procesos de tiempo real, que deben funcionar continuamente, no son
fáciles de suspender y reanudar.
² Las prioridades instantáneas (en un momento dado), pueden ser incorrectas o con-
fusas debido a consideraciones especiales, por ej.: procesos de baja prioridad que
tienen prioridad alta momentáneamente debido a un tiempo tope inminente.
198 CAPÍTULO 6. BLOQUEOS
– 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 veri…cación grabados durante un proceso se mantienen sin ser regra-
bados.
Al detectarse un bloqueo es fácil ver cuáles son los recursos necesarios.
Para la recuperación, un proceso que posee un recurso necesario regresa hasta cierto
instante en el tiempo anterior a la adquisición:
² Inicializa alguno de sus anteriores puntos de veri…cació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.
6.9. EVASIÓN DE BLOQUEOS 199
² 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:
² El S. O. debe poder:
El objetivo es evitar el bloqueo haciendo la elección correcta todo el tiempo, pero para
evitar los bloqueos se requiere de cierta información de antemano.
B
u (AMBOS PROCESOS CONCLUYEN)
I8
SEGURA REGION INALCANZABLE
IMPRES. I7
SEGURA
PLOT. I6
SEGURA t
I5
r s
SEGURA SEGURA
A
p q I1 I2 I3 I4
REGION SEGURA
IMPRESORA
PLOTTER
² El proceso “B” necesita el plotter desde “I 5 " hasta “I 7 " y la impresora desde “I 6 "
hasta “I 8 ".
² 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.
² Cuando “A” cruza la línea “I 1 " en la trayectoria de “r” a “s”, solicita y se le otorga
la impresora.
² La región delimitada por “I 1 ", “I 3 ", “I 6 " 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.
6.9. EVASIÓN DE BLOQUEOS 201
² 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 ":
² No está bloqueado.
² Existe una forma de satisfacer todas las solicitudes pendientes, mediante la ejecución
de los procesos en cierto orden.
( a ) ( b ) ( c ) ( d ) ( e )
T M T M T M T M T M
A 3 9 A 3 9 A 3 9 A 3 9 A 3 9 T: Tiene
B 2 4 B 4 4 B 0 - B 0 - B 0 - M: Máximo
C 2 7 C 2 7 C 2 7 C 7 7 C 0 - L: Libre
L: 3 L: 1 L: 5 L: 0 L: 7
T M
A 8 10 T: Tiene
B 2 5 M: Máximo
C 1 3 L: Libre
L: 1
² 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.
9
Ver Tabla 6.1 de la página 202 [23, Tanenbaum].
10
Ver Tabla 6.2 de la página 202 [7, Deitel].
11
Ver Tabla 6.3 de la página 203 [7, Deitel].
6.9. EVASIÓN DE BLOQUEOS 203
T M T M
A 1 4 A 1 4 T: Tiene
B 4 6 B 4 6 M: Máximo
C 5 8 C 6 8 L: Libre
L: 2 L: 1
² 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.
2. Supongamos que el proceso del renglón elegido solicita todos los recursos que necesita
y concluye:
² 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.
R e c u r s o s R e c u r s o s
A s i g n a d o s N e c e s a r i o s
A 3 0 1 1 A 1 1 0 0
B 0 1 0 0 B 0 1 1 2 E=(6 3 4 2)
C 1 1 1 0 C 3 1 0 0 P=(5 3 2 2)
D 1 1 0 1 D 0 0 1 0 A=(1 0 2 0)
E 0 0 0 0 E 2 1 1 0
"
P r o c e s o s
² Si a un proceso que mantiene ciertos recursos se le niega una nueva petición, este
proceso deberá:
Havender no presenta una estrategia contra el uso exclusivo de recursos por parte de
los procesos, pues se desea permitir el uso de recursos dedicados.
² Exigir a un proceso que solicita un recurso que libere en forma temporal los demás
recursos que mantiene en ese momento.
² En cada instante uno de los recursos asignados tendrá el número más grande:
² Ningún proceso debe solicitar un recurso con número menor al que posee en el
momento.
El problema es que en casos reales podría resultar imposible encontrar un orden que
satisfaga a todos los procesos.
Condición Método
Exclusión mutua Realizar un spooling general
Detenerse y esperar Solicitar todos los recursos al principio
No apropiación Retirar los recursos
Espera circular Ordenar los recursos en forma numérica
² La inanición.
208 CAPÍTULO 6. BLOQUEOS
6.11.3 Inanición
En un sistema dinámico permanentemente hay solicitudes de recursos.
Se necesita un criterio (política) para decidir:
² Quién obtiene cual recurso.
² En qué momento.
Podría suceder que ciertos procesos nunca lograran el servicio, aún sin estar bloqueados,
porque se privilegia en el uso del recurso a otros procesos.
La inanición se puede evitar mediante el criterio de asignación de recursos FIFO “el
primero en llegar es el primero en despachar (ser atendido)”.
El proceso que ha esperado el máximo tiempo se despachará a continuación:
² En el transcurso del tiempo, cualquiera de los procesos dados:
211
Capítulo 7
² De hardware y de software.
² Distribuidos entre un gran número de sistemas computacionales conectados.
213
214 CAPÍTULO 7. INTRODUCCIÓN A LOS SISTEMAS DISTRIBUIDOS
También con los sistemas distribuidos se pueden compartir otros recursos como pro-
gramas y periféricos costosos:
Otra importante razón es lograr una mejor comunicación entre las personas:
² ¿Qué tanto debe hacer el sistema y qué tanto deben hacer los usuarios?.
Existen diversos esquemas de clasi…cación para los sistemas de cómputos con varias
cpu:
² Son útiles para los cómputos que repiten los mismos cálculos en varios conjuntos de
datos.
² No se presenta en la práctica.
MIMD (Multiple Instruction Multiple Data: un grupo de computadoras independientes,
cada una con su propio contador del programa, programa y datos):
² Todos los sistemas distribuidos son de este tipo.
Un avance sobre la clasi…cación de Flynn incluye la división de las computadoras MIMD
en dos grupos:
² Multiprocesadores: poseen memoria compartida:
Cada una de las categorías indicadas se puede clasi…car según la arquitectura de la red
de interconexión en:
² Esquema de bus:
– Existe una sola red, bus, cable u otro medio que conecta todas las máquinas:
¤ Ej.: la televisión por cable.
Generalmente los multiprocesadores están más fuertemente acoplados que las multi-
computadoras.
218 CAPÍTULO 7. INTRODUCCIÓN A LOS SISTEMAS DISTRIBUIDOS
² 32 líneas de direcciones.
² 32 líneas de datos.
² 30 líneas de control.
² Coloca una señal en las líneas de control adecuadas para indicar que desea leer.
² Las modi…caciones hechas por una cpu se re‡ejan de inmediato en las subsiguientes
lecturas de la misma o de otra cpu.
² Supongamos que las cpu “A” y “B” leen la misma palabra de memoria en sus
respectivos cachés.
² Cuando “B” lee esa palabra, obtiene un valor anterior y no el valor recién actualizado
por “A”.
² Diseñar las caché de tal forma que cuando una palabra sea escrita al caché, también
sea escrita a la memoria.
² Cada vez que un caché observa una escritura a una dirección de memoria presente
en él, puede eliminar ese dato o actualizarlo en el caché con el nuevo valor.
MEMORIAS
CONMUTADOR
DEL PUNTO DE
CRUCE
CPU
² Cada cpu y cada memoria tiene una conexión que sale de él.
– Cuando una cpu desea tener acceso a una memoria particular, el conmutador
del punto de cruce que los conecta se cierra momentáneamente.
² La virtud del conmutador de cruceta es que muchas cpu pueden tener acceso a la
memoria al mismo tiempo:
¤ Posee conmutadores 2 x 2:
¢ Cada uno tiene 2 entradas y 2 salidas.
¢ Cada conmutador puede dirigir cualquiera de las entradas en cualquiera
de las salidas.
¢ Eligiendo los estados adecuados de los conmutadores, cada cpu podrá
tener acceso a cada memoria.
¤ Para “n” cpu y “n” memorias se precisan:
¢ “n” etapas de conmutación.
2
Ver Figura 7.2 de la página 220 [25, Tanenbaum].
3
Ver Figura 7.3 de la página 221 [25, Tanenbaum].
7.7. MULTIPROCESADORES CON CONMUTADOR 221
CPU MEMORIAS
45000
40000
40000
35000 30625
N° DE CONMUTADORES
30000
25000 22500 Red omega
20000 15625 Conmutador de cruceta
15000
10000
10000 5625
5000 2500 1304 1529
282 467 664 871 1084
0
50 75 100 125 150 175 200
² El acceso será muy rápido a la propia memoria local y más lento a la memoria de
las demás cpu.
– Tienen un mejor tiempo promedio de acceso que las máquinas basadas en redes
omega.
– La colocación de los programas y datos en memoria es crítica para lograr que
la mayoría de los accesos sean a la memoria local de cada cpu.
RED
² En un hipercubo de dimensión 4:
– Se puede considerar como dos cubos ordinarios, cada uno de ellos con 8 vértices
y 12 aristas.
– Cada vértice es un cubo.
– Cada arista es una conexión entre 2 cpu.
– Se conectan los vértices correspondientes de cada uno de los cubos.
5
Ver Figura 7.5 de la página 223 [25, Tanenbaum].
6
Ver Figura 7.6 de la página 224 [25, Tanenbaum].
224 CAPÍTULO 7. INTRODUCCIÓN A LOS SISTEMAS DISTRIBUIDOS
Figura~7.6: Retícula.
² En un hipercubo de dimensión 5:
– Se deberían añadir dos cubos conectados entre sí y conectar las aristas corres-
pondientes en las dos mitades, y así sucesivamente.
7
Ver Figura 7.7 de la página 224 [25, Tanenbaum].
7.10. CONCEPTOS DE SOFTWARE 225
² Débilmente acoplados.
² Fuertemente acoplados.
² Tiene su propio S. O.
² Es posible que un usuario se conecte de manera remota con otra estación de trabajo:
² Para alternar con otra máquina remota, primero hay que desconectarse de la primera:
– Las rutas de acceso a un determinado archivo pueden ser diferentes para las
distintas estaciones.
– Los distintos clientes tienen un punto de vista distinto del sistema de archivos.
– El nombre de un archivo depende:
¤ Del lugar desde el cual se tiene acceso a él.
¤ De la con…guración del sistema de archivos.
Todas las máquinas pueden ejecutar el mismo S. O., pero esto no es necesario.
Si los clientes y los servidores ejecutan diversos S. O., como mínimo deben coincidir
en el formato y signi…cado de todos los mensajes que podrían intercambiar.
Esquemas como este se denominan “sistema operativo de red”:
² Soporta sistemas heterogéneos, por ej.: clientes de MS - DOS que hagan uso de
servidores UNIX.
² La arquitectura.
² El protocolo.
² La implantación.
La Arquitectura de NFS
La idea fundamental es permitir que una colección arbitraria de clientes y servidores com-
partan un sistema de archivos común.
Generalmente todos los clientes y servidores están en la misma LAN , pero esto no es
necesario; por ello se puede ejecutar NFS en una WAN (“red de área amplia”).
NFS permite que cada máquina sea un cliente y un servidor al mismo tiempo.
Cada servidor de NFS exporta uno o varios de sus directorios (y subdirectorios depen-
dientes) para el acceso por parte de clientes remotos.
Los clientes tienen acceso a los directorios exportados mediante el montaje:
Un cliente sin disco puede montar un archivo remoto en su directorio raíz; esto produce
un sistema de archivos soportado en su totalidad en un servidor remoto.
Las estaciones de trabajo que no poseen discos locales pueden montar directorios re-
motos en donde lo deseen, en la parte superior de su jerarquía de directorios local; esto
produce un sistema de archivos que es en parte local y en parte remoto.
Si dos o más clientes montan el mismo directorio al mismo tiempo:
² No hay que hacer nada especial para lograr compartir los archivos.
Protocolos de NFS
Uno de los objetivos de NFS es:
² Tener acceso a los atributos de archivo, tales como su modo, tamaño y fecha de la
última modi…cación.
El “sistema de archivos remotos” (RFS) del Sistema V de UNIX no funciona así, sino
que:
² El servidor lleva un registro del hecho que cierto archivo está abierto y la posición
actual del lector.
² Los bloqueos no tienen que asociarse con los archivos abiertos y el servidor no sabe
cuáles archivos están abiertos.
NFS utiliza el esquema de protección de UNIX, con los bits “rwx” para el propietario,
grupo y otros.
Se puede utilizar la criptografía de claves públicas para dar validez al cliente y el
servidor en cada solicitud y respuesta; el cliente malicioso no puede personi…car a otro
cliente, ya que no conoce su clave secreta.
Las claves utilizadas para la autenti…cación, así como otra información, están conteni-
das en el NIS:
Implantación de NFS
La implantación del código del cliente y el servidor es independiente de los protocolos NFS.
Una implementación que suele tomarse como referencia es la de Sun, que consta de
tres capas.8
La capa superior es la de llamadas al sistema:
² Llama a la segunda capa: capa del sistema virtual de archivos: virtual …le system:
VFS.
La capa VFS mantiene una tabla con una entrada por cada archivo abierto que es
análoga a la tabla de nodos-i para los archivos abiertos en UNIX.
La capa VFS tiene una entrada por cada archivo abierto:
² Para los archivos remotos, poseen la información su…ciente como para tener acceso
a ellos.
8
Ver Figura 7.8 de la página 233 [25, Tanenbaum].
7.11. SISTEMAS OPERATIVOS DE REDES 231
² Utiliza la información del directorio remoto, el directorio local donde será montado
y otros datos adicionales.
² Con el nombre del directorio remoto por montar se descubre el nombre de la máquina
donde se localiza dicho directorio.
El núcleo:
² Pide el código del cliente NFS para crear un nodo-r (nodo-i remoto) en sus tablas
internas.
² Luego de haber recibido la capa VFS del cliente el bloque necesario, emite la solicitud
del siguiente bloque; esto se denomina lectura adelantada (read ahead).
² Al abrir un archivo con caché se envía un mensaje al servidor para revisar la hora
de la última modi…cación.
² Se determina si la copia del caché es válida o debe descartarse, utilizando una nueva
copia del servidor.
² El temporizador del caché expira cada 30 segundos y todos los bloques modi…cados
en el caché se envían al servidor.
Resumiendo:
CLIENTE SERVIDOR
CAPA DEL SIST. VIRT. DE ARCHIVOS CAPA DEL SIST. VIRT. DE ARCHIVOS
MENSAJE MENSAJE
DISCO DISCO
AL SERVIDOR DEL CLIENTE
LOCAL LOCAL
NETWORK
Un sistema distribuido es aquel que se ejecuta en una colección de máquinas sin me-
moria compartida, pero que aparece ante sus usuarios como una sola computadora:
También se de…ne un sistema distribuido como aquel que se ejecuta en una colección de
máquinas enlazadas mediante una red pero que actúan como un uniprocesador virtual.
Algunas de las características de los sistemas distribuidos son las siguientes:
– Es normal que se ejecuten núcleos idénticos en todas las cpu del sistema.
² Operan como un sistema de tiempo compartido, pero con varias cpu en vez de una
sola.
² Una lista de todos los procesos en el sistema que no están bloqueados en forma lógica
y listos para su ejecución.
² Encuentra que el caché del procesador está ocupado por palabras de memoria que
pertenecen a aquella parte de la memoria compartida que contiene al programa del
proceso anterior.
² Luego de un breve lapso se habrán reemplazado por el código y los datos del programa
del proceso asignado a ese procesador.
Ninguna cpu tiene memoria local, es decir que todos los programas se almacenan en la
memoria global compartida.
Si todas las cpu están inactivas en espera de e / s y un proceso está listo para su
ejecución:
9
Ver Figura 7.9 de la página 235 [25, Tanenbaum].
7.14. ASPECTOS DEL DISEÑO 235
E (LISTO) MEMORIA
D (LISTO)
C (EN EJECUCION)
CPU 1 CPU 2 CPU 3 B(EN EJECUCION)
A (EN EJECUCION) DISCO
PROC. A EN EJ. PROC. B EN EJ. PROC. C EN EJ. COLA DE EJECUC.
CACHE CACHE CACHE SIST. OPERATIVO
BUS
² Es conveniente asignarlo a la cpu que se utilizó por última vez (para ese proceso):
– La hipótesis es que ningún otro proceso utilizó esa cpu desde entonces (hipótesis
de Vaswani y Zahorjan).
² Suspenderlo.
² Transparencia.
² Flexibilidad.
236 CAPÍTULO 7. INTRODUCCIÓN A LOS SISTEMAS DISTRIBUIDOS
Elemento S. O. S. O. S. O. de
de red distribuido multiprocesador
¿Se ve como un
uniprocesador virtual? No Sí Sí
¿Todas tienen que
ejecutar el mismo S. O.? No Sí Sí
¿Cuántas copias
del S. O. existen? n n 1
¿Cómo se logra Archivos Memoria
la comunicación? compartidos Mensajes compartida
¿Se requiere un acuerdo
en los protocolos de la red? Sí Sí No
¿Existe una única
cola de ejecución? No No Sí
¿Existe una semántica bien
de…nida para los archivos
compartidos? Por lo general No Sí Sí
² Con…abilidad.
² Desempeño.
² Escalabilidad.
7.15 Transparencia
Un aspecto muy importante es la forma de lograr la imagen de un único sistema [25,
Tanenbaum].
Los usuarios deben percibir que la colección de máquinas conectadas son un sistema
de tiempo compartido de un solo procesador:
² El envío posterior de mensajes, donde el acceso a los servicios remotos será distinto
al acceso a los servicios locales.
² De migración: los recursos se pueden mover a voluntad sin cambiar sus nombres.
7.16 Flexibilidad
La ‡exibilidad es de fundamental importancia [25, Tanenbaum].
Existen dos escuelas de pensamiento en cuanto a la estructura de los sistemas distri-
buidos:10
² Núcleo monolítico:
² Micronúcleo (microkernel):
² Capacidades de red.
² La mayoría de las máquinas tiene discos y administra sus propios sistemas locales
de archivos.
² Existe una interfaz bien de…nida con cada servicio (conjunto de mensajes que com-
prende el servidor).
7.17 Con…abilidad
Un importante objetivo de los sistemas distribuidos es que si una máquina falla, alguna
otra debe encargarse del trabajo [25, Tanenbaum].
La con…abilidad global teórica del sistema podría ser el “or” booleano de la con…abilidad
de los componentes; ejemplo:
NUCLEO MICRONUCLEO
MONOLITICO
SERVIDOR SERVIDOR SERVIDOR
USUARIO USUARIO DE DE DIREC- DE
ARCHIVOS TORIOS PROCESOS
NUCLEO MICRONU- MICRONU- MICRONU- MICRONU-
MONOLIT. CLEO CLEO CLEO CLEO
RED
7.18 Desempeño
Cuando se ejecuta una aplicación en un sistema distribuido no debe parecer peor que su
ejecución en un único procesador, pero esto es difícil de lograr [25, Tanenbaum].
240 CAPÍTULO 7. INTRODUCCIÓN A LOS SISTEMAS DISTRIBUIDOS
² Tiempo de respuesta.
² La velocidad de proceso.
7.19 Escalabilidad
La tendencia indica que el tamaño de los sistemas distribuidos es hacia cientos de miles y
aun decenas de millones de usuarios conectados [25, Tanenbaum].
Existen cuellos de botella potenciales que se debe intentar evitar en los sistemas dis-
tribuidos de gran escala:
² Componentes centralizados:
² Tablas centralizadas:
² Algoritmos centralizados:
² Ninguna máquina tiene la información completa acerca del estado del sistema.
243
244 CAPÍTULO 8. COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS
² Para evitar el caos, “A” y “B” deben coincidir en el signi…cado de los bits que se
envíen.
² ¿Cuántos voltios hay que utilizar para un bit “0” y cuántos para un bit “1”?.
² ¿Cómo puede detectar si un mensaje ha sido dañado o perdido, y qué debe hacer si
lo descubre?.
² ¿Qué longitud tienen los números, cadenas y otros elementos de datos y cuál es la
forma en que están representados?.
² Son aquellos preparados para comunicarse con cualquier otro sistema abierto me-
diante reglas estándar:
² Sin conexión:
Cada capa proporciona una interfaz con la otra capa por encima de ella; la interfaz
consiste de un conjunto de operaciones para de…nir el servicio que la capa está preparada
para ofrecer a sus usuarios.
El protocolo de la capa “n” utiliza la información de la capa “n”.
Cada protocolo de capa se puede cambiar independientemente de los demás:
Con enlaces del orden de decenas (o centenas) de miles de bits / segundo y cpu pode-
rosas:
MAQUINA 1 MAQUINA 2
PROCESO PROCESO
A B
INTERFAZ INTERFAZ
RED
MENSAJE
² El servidor:
– Ejecuta el requerimiento.
– Regresa los datos solicitados o un código de error si no pudo ejecutarlo correc-
tamente.
² No se tiene que establecer una conexión sino hasta que ésta se utilice.
² Si todas las máquinas fuesen idénticas solo se necesitarían tres niveles de protocolos.3
8.4 Direccionamiento en C - S
Para que un cliente pueda enviar un mensaje a un servidor, debe conocer la dirección de
éste [25, Tanenbaum].
Un esquema de direccionamiento se basa en la dirección de la máquina destinataria del
mensaje:
CAPA
SOLICITUD
CLIENTE SERVIDOR 7
NIVELES DE PROTOCOLOS
NECESARIOS SI TODAS LAS
MAQUINAS FUESEN IDENTICAS
Otro método de direccionamiento consiste en asignarle a cada proceso una única di-
rección que no contenga un número de máquina:
8.4. DIRECCIONAMIENTO EN C - S 249
También existe el método de dejar que cada proceso elija su propio identi…cador:
² Existe el problema, para el núcleo emisor, de saber a qué máquina enviar el mensaje:
² Se hace referencia a los procesos de los servidores mediante cadenas en ASCII que
son las que aparecen en los programas.
² Los chips de interfaz de la red se diseñan de modo que permitan a los procesos
almacenar direcciones de procesos en ellos.
² Al recibir cada paquete el chip de interfaz de la red debe examinarlo para determinar
si el proceso destino se encuentra en esa máquina:
² El proceso emisor:
La desventaja de la solución es que cada mensaje de salida debe ser copiado desde el
espacio del usuario al espacio del núcleo.
Otra solución es:
² Una primitiva síncrona es aquella en que el emisor se bloquea hasta que el receptor
ha aceptado el mensaje y la con…rmación regresa al emisor.
Este esquema funciona bien cuando el servidor llama a receive antes de que el cliente
llame a send.
El problema se presenta cuando el send se lleva a cabo antes que el receive:
² Descartar el mensaje.
² Con…ar en que el servidor llame a receive antes de que el cliente vuelva a transmitir;
por ello el cliente podría tener que intentar varias veces.
Si dos o más clientes utilizan un servidor con transferencia de mensajes sin almacena-
miento en bu¤ers:
² Si realizar el trabajo insume cierto tiempo, los demás clientes podrían hacer varios
intentos de envíos sin éxito.
Otra solución consiste en hacer que el núcleo receptor mantenga pendientes los men-
sajes por un instante:
La llamada a receive elimina un mensaje del buzón o se bloquea (si se utilizan primitivas
con bloqueo) si no hay un mensaje presente.
Esta técnica se denomina primitiva con almacenamiento en bu¤ers.
Los buzones tienen el problema de que son …nitos y pueden ocuparse en su totalidad:
Otra solución utilizada es no dejar que un proceso envíe un mensaje si no existe espacio
para su almacenamiento en el destino:
– La suspensión debe operar como si fuera justo antes de que intentara enviar el
mensaje.
– Cuando haya espacio libre en el buzón, se hará que el emisor intente nuevamen-
te.
254 CAPÍTULO 8. COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS
² La respuesta del servidor de regreso al cliente es reconocida por el núcleo del cliente.
1 1
CLIENTE SERVIDOR CLIENTE SERVIDOR
3 NUCLEO 2
4 3
2
1. SOLICITUD (DEL CLIENTE AL 1. SOLICITUD (DEL CLIENTE AL
SERVIDOR). SERVIDOR).
2. RECONOCIMIENTO (DE NUCLEO 2. RESPUESTA (DEL SERVIDOR AL
A NUCLEO). CLIENTE).
3. RESPUESTA (DEL SERVIDOR AL 3. RECONOCIMIENTO (DE NUCLEO A
CLIENTE). NUCLEO) - NO SIEMPRE EXISTE, POR
4. RECONOCIMIENTO (DE NUCLEO ELLO APARECE COMO LINEA
A NUCLEO). DISCONTINUA.
² En algunos casos se utiliza un reconocimiento del núcleo del cliente al núcleo del
servidor:
² Direccionamiento:
– Número de máquina.
– Direcciones ralas de procesos.
– Búsqueda de nombres en ASCII por medio del servidor.
² Bloqueo:
256 CAPÍTULO 8. COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS
² Almacenamiento en bu¤ers:
² Con…abilidad:
– No con…able.
– Solicitud - reconocimiento - respuesta - reconocimiento.
– Solicitud - respuesta - reconocimiento.
² Req:
– Solicitud.
– De cliente a servidor.
– El cliente desea servicio.
² Rep:
– Respuesta.
– De servidor a cliente.
– Respuesta del servidor al cliente.
8.9. LLAMADA A UN PROCEDIMIENTO REMOTO (RPC) 257
² Ack:
– Reconocimiento.
– De cualquiera de ellos a algún otro.
– El paquete anterior que ha llegado.
² Aya:
– ¿Estás vivo?.
– De cliente a servidor.
– Veri…ca si el servidor se ha descompuesto.
² Iaa:
– Estoy vivo.
– De servidor a cliente.
– El servidor no se ha descompuesto.
² Ta:
– Intenta de nuevo.
– De servidor a clientes.
– El servidor no tiene espacio.
² Au:
– Dirección desconocida.
– De servidor a cliente.
– Ningún proceso utiliza esta dirección.
REQ
ACK
CLIENTE SERVIDOR
REP
ACK
REQ
CLIENTE REP SERVIDOR
ACK
REQ
ACK
AYA
CLIENTE SERVIDOR
IAA
REP
ACK
² Se copia a la pila.
² Para el procedimiento que recibe la llamada es solo una variable local ya inicializada.
5
Ver Figura 8.6 de la página 260 [25, Tanenbaum].
260 CAPÍTULO 8. COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS
0 0 0
LA PILA ANTES DE LA LA PILA MIENTRAS EL LA PILA DESPUES DEL
LLAMADA Aread PROCEDIMIENTO LLAMADO REGRESO A QUIEN HIZO
ESTA ACTIVO LA LLAMADA
² El procedimiento podría modi…carla, sin que esto afecte el valor de la variable original
en el procedimiento que hizo la llamada.
² Quien recibe la llamada copia la variable en la pila, como en la llamada por valor.
² La copia de nuevo después de la llamada, escribiendo sobre el valor original.
La decisión de cuál mecanismo utilizar para el paso de parámetros la toman los di-
señadores del sistema y es una propiedad …ja del lenguaje.
La ida es que una llamada a un procedimiento remoto (RPC) se parezca lo más posible
a una llamada local:
Para el servidor es como si tuviera una llamada directa del cliente; lleva a cabo el
trabajo y regresa el resultado a quien hizo la llamada, de la forma usual.
El stub del servidor recupera el control luego de la llamada y:
² El stub del cliente examina el mensaje, desempaca el resultado, lo copia a quien hizo
la llamada y regresa de la manera usual.
Cuando el proceso que hizo la llamada obtiene el control luego de la llamada a read:
Resumiendo, se pueden indicar los siguientes pasos como una llamada a un procedi-
miento remoto:6
Se ha convertido la llamada local del procedimiento cliente al stub del cliente, en una
llamada local al procedimiento servidor.
La llamada real del resguardo al servidor es similar a la llamada original del cliente,
excepto en que los parámetros son variables inicializadas a partir del mensaje recibido, en
vez de ser constantes.7
Los elementos del mensaje corresponden a:
RESGUARDO RESGUARDO
MAQUINA CLIENTE DEL CLIENTE DEL SERVID. MAQUINA SERVIDOR
LLAMADA
LLAMADA
PARAMETROS PARAMETROS
EMPACADOS DESEMPACADOS
CLIENTE SERVIDOR
RESULTADOS
RESULTADOS
REGRESO EMPACADOS REGRESO
DESEMPACADOS
NUCLEO NUCLEO
Figura~8.7: Llamadas y mensajes en una RPC, donde cada elipse representa un solo
proceso que incluye el resguardo.
² Parámetros.
– Diseñar un estándar de red o forma canónica para los enteros, caracteres, bo-
oleanos, número de punto ‡otante, etc.
– Pedir a todos los emisores que conviertan sus representaciones internas a esta
forma durante el ordenamiento.
² Genere un resguardo del cliente que empaque sus parámetros en el formato estándar
de los mensajes.
² Llame al servidor.
Una solución es la conexión dinámica para que concuerden los clientes y los servi-
dores.
El punto de inicio de la conexión dinámica es la especi…cación formal del servidor, que
indica el nombre del servidor, el número de versión y una lista de los procedimientos que
proporciona.
Se tienen los tipos de parámetros para cada procedimiento y cada parámetro queda
determinado como parámetro in, out o in-out.
La dirección es relativa al servidor.
El principal uso de la especi…cación formal es como entrada del generador de resguar-
dos:
² Una llamada tipo initialize que se encuentra fuera del ciclo principal exporta la
interfaz del servidor:
² Cuando el cliente llama a alguno de los procedimientos remotos por primera vez:
Es un esquema muy ‡exible pero el conector puede ser un cuello de botella con altas
cargas de trabajo.
² También se suele utilizar una variable global (UNIX) errno a la que se asigna un
valor que indica el tipo de error.
Otra posibilidad para el tratamiento de los errores es mediante una excepción provo-
cada por el error:
² El problema es que el núcleo del cliente no está seguro de la razón por la que no
hubo respuesta.
Ciertas operaciones se pueden repetir con seguridad tantas veces como sea necesario
sin que ocurran daños; una solicitud con esta propiedad es idempotente.
Otras operaciones no son idempotentes, por ej. la transferencia de dinero:
² Se emite una solicitud a un servidor bancario para transferir cierta suma de dinero.
RECIBE RECIBE
RECIBE
EJECUTA EJECUTA
FALLO
RESPONDE NO FALLO NO
REP REP REP
² El núcleo del servidor mantiene un registro del número secuencial de recepción más
reciente de cada uno de los núcleos de clientes que lo utilicen.
² El núcleo del servidor podrá indicar la diferencia entre una solicitud original y una
retransmisión y puede rechazar la realización de cualquier solicitud por segunda vez.
Una protección adicional es tener un bit en el encabezado del mensaje para distinguir
las solicitudes de las retransmisiones.
– Garantiza que la RPC se realiza a lo más una vez, pero es posible que no se
realice ni una sola vez.
La posibilidad de fallos del servidor distingue de manera clara los sistemas con un
único procesador de los sistemas distribuidos:
Las soluciones a los cómputos huerfanos son las siguientes [25, Tanenbaum]:
² Exterminación:
270 CAPÍTULO 8. COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS
– Se crea un registro que indica lo que va a hacer el resguardo del cliente antes
de que emita la RPC.
– El registro se mantiene en disco.
– Luego del rearranque se veri…ca el contenido del registro y se elimina el huérfano
explícitamente.
– La desventaja es la sobrecarga en e / s generada por la grabación previa a cada
RPC.
– Fallaría si los huérfanos generan RPC, creando huérfanos de huérfanos:
¤ Sería imposible localizarlos.
¤ Ante ciertos fallos en la red sería imposible eliminarlos aunque se los loca-
lice.
² Reencarnación:
² Reencarnación sutil:
² Expiración:
– A cada RPC se le asigna una cantidad estándar de tiempo “t” para que realice
su trabajo.
– Si el tiempo es insu…ciente debe pedir explícitamente otro quantum, pero esto
es un inconveniente.
– Si luego del fallo el servidor espera “t” antes de rearrancar, todos los huérfanos
habrán desaparecido.
– El problema es elegir un “t” razonable, ya que pueden existir RPC con requisitos
diversos.
8.14. ASPECTOS DE LA IMPLANTACIÓN EN RPC 271
Los protocolos sin conexión tienen características opuestas a las indicadas precedente-
mente.
Otra opción importante es utilizar un protocolo estándar de propósito general o alguno
especí…co para RPC.
La utilización del protocolo estándar IP (o UDP, integrado a IP) posee las siguientes
ventajas:
² Los paquetes IP se pueden enviar y recibir por casi todos los sistemas UNIX.
² IP se diseñó como una base para que las conexiones con…ables TCP se pudiesen
establecer en las interredes.
272 CAPÍTULO 8. COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS
Otro aspecto importante relacionado con los protocolos es la longitud del paquete y el
mensaje:
8.14.2 Reconocimientos
Cuando los RPC de gran tamaño deben dividirse en muchos paquetes pequeños, surge la
cuestión del reconocimiento:
² Etc.
² El servidor reconoce todo el mensaje al recibir todos los paquetes; no hay reconoci-
miento individual de paquetes.
Otra consideración más importante que el control de errores es el control del ‡ujo:
² En RPC con transporte mínimo la mayor parte del tiempo se ocupa en:
² En RPC con transporte de 1k o más la mayor parte del tiempo se ocupa en:
– El tiempo de transmisión.
– El tiempo que tarda el desplazamiento del paquete hacia adentro y afuera de
la interfaz.
8.14.4 Copiado
Un aspecto que domina frecuentemente los tiempos de ejecución en RPC es el copiado.
El número de veces que se debe copiar un mensaje varía según el hardware, el software
y el tipo de llamada.
En el mejor de los casos el chip de la red puede utilizar el DMA (acceso directo a la
memoria) para:
² Transferir el mensaje del espacio de direcciones del resguardo del cliente a la red.
9
Ver Figura 8.10 de la página 275 [25, Tanenbaum].
8.14. ASPECTOS DE LA IMPLANTACIÓN EN RPC 275
LLAMA AL PROCEDIMIENTO
1 REALIZA EL SERVICIO. 6
RESGUARDO.
PREPARA EL BUFFER DE
MENSAJES.
ORDENA PARAMETROS LLAMA AL SERVIDOR.
2 DENTRO DEL BUFFER. ESTABLECE LOS
LLENA LOS CAMPOS DE PARAMETROS EN LA PILA. 5
ENCABEZADO DEL DESORDENA LOS
MENSAJE. PARAMETROS.
SEÑALA AL NUCLEO.
CAMBIO DE CONTEXTO
CAMBIO DE CONTEXTO
DEL RESGUARDO
AL NUCLEO.
DEL SERVIDOR.
COPIA EL MENSAJE
COPIA EL MENSAJE
AL NUCLEO.
AL RESGUARDO
DETERMINA LA DIRECCION
DEL SERVIDOR.
3 DE DESTINO. 4
VE SI EL RESGUARDO
PONE LA DIRECCION
ESTA ESPERANDO.
EN EL ENCABEZADO
DECIDE A CUAL RESGUARDO
DEL MENSAJE.
DARSELO.
ESTABLECE LA INTERFAZ
VERIFICA LA VALIDEZ
DE LA RED.
DEL PAQUETE.
INICIALIZA EL
INTERRUPCION DEL
CRONOMETRO.
PROCESO.
1 - CLIENTE. 4 - NUCLEO.
2 - RESGUARDO DEL CLIENTE. 5 - RESGUARDO DEL SERVIDOR.
3 - NUCLEO. 6 - SERVIDOR.
² El núcleo:
– Inspecciona el paquete.
– Asocia la página que lo contiene en el espacio de direcciones del servidor.
– Si no puede efectuar la asociación, copia el paquete al resguardo del servidor.
² El núcleo del cliente copia el mensaje del resguardo del cliente en un bu¤er del núcleo
para su transmisión.
² Si el tiempo de copia de una palabra de 32 bits es de 500 nseg, con 8 copias, cada
palabra necesita 4 microseg.
– El bu¤er del paquete en el núcleo ocupa toda una página a partir de una frontera
de página.
– El bu¤er receptor del resguardo del servidor también es de toda una página e
inicia en una frontera de página.
Otro problema son los lenguajes débilmente tipi…cados, como por ejemplo, “C”:
² Ni siquiera a partir de una especi…cación formal del propio código, en especial con-
siderando “C”.
Conclusión:
² Ej.: un grupo de servidores de archivo que cooperan para ofrecer un único servicio
de archivos tolerante a fallos:
– Sería recomendable que un cliente envíe el mensaje a todos los servidores para
garantizar la ejecución de la solicitud aunque alguno falle.
Un grupo es una colección de procesos que actúan juntos en cierto sistema o alguna
forma determinada por el usuario.
La propiedad fundamental de todos los grupos es que cuando un mensaje se envía al
propio grupo, todos los miembros del grupo lo reciben.
Se trata de una comunicación uno - muchos (un emisor, muchos receptores), que se
distingue de la comunicación puntual o punto a punto (un emisor, un receptor).
Los grupos son dinámicos:
10
Ver Figura 8.11 de la página 281 [25, Tanenbaum].
280 CAPÍTULO 8. COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS
² En ciertas redes es posible crear una dirección especial de red a la que pueden escu-
char varias máquinas:
² Signi…ca que los paquetes que tienen cierta dirección se entregan a todas las máqui-
nas.
² Se puede utilizar para implantar los grupos, pero es menos e…ciente que la multi-
transmisión.
² Cada máquina debe veri…car, mediante su software, si el paquete va dirigido a ella:
R
R R
S R R S R
R R
R
² Los extraños no pueden enviar mensajes al grupo como un todo, peor pueden enviar
mensajes a miembros del grupo en lo individual.
² Es importante que los procesos que no sean miembros (clientes) puedan enviar hacia
el grupo.
² Podría ser necesario que los miembros del grupo utilizaran la comunicación en grupo.
– Se envía al coordinador.
– El coordinador decide cuál de los trabajadores es el más adecuado para llevarla
a cabo y se la envía.
– La pérdida del coordinador lleva al grupo a un alto total, lo que es una desven-
taja.
– En condiciones normales, el coordinador funciona correctamente y toma deci-
siones sin molestar a los demás procesos.
² El coordinador:
² Los trabajadores:
Una posibilidad es tener un servidor de grupos al cual enviar todas las solicitudes:
² Al salir de un grupo, el proceso debe comunicarlo a los demás del grupo que deja.
² Los demás miembros del grupo lo deben descubrir de forma experimental; luego se
lo puede eliminar del grupo.
Otro aspecto importante es que la entrada y salida al grupo debe sincronizarse con el
envío de mensajes:
² Un proceso que se unió a un grupo debe recibir todos los mensajes que se envíen al
mismo.
² Una forma de garantizar que una entrada o salida se integra al ‡ujo de mensajes en
el lugar correcto es convertir esta operación en un mensaje a todo el grupo.
Un aspecto crítico resulta cuando fallan tantas máquinas que el grupo ya no puede
funcionar:
284 CAPÍTULO 8. COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS
² El protocolo deberá resolver la situación que se presenta cuando dos o más procesos
intentan al mismo tiempo reconstruir el grupo.
² El núcleo de la máquina emisora deberá contar con una lista de las máquinas que
tienen procesos pertenecientes al grupo.
² La desventaja consiste en que los procesos del usuario (los miembros del grupo)
deben tener conocimiento de quién es miembro de cada grupo:
– No es transparente.
– Los procesos del usuario deben actualizar las listas de miembros.
8.17. ASPECTOS DEL DISEÑO DE LA COMUNICACIÓN EN GRUPO 285
² El mensaje se envía a todos los miembros del grupo (o a todo el sistema) mediante
uno de los métodos anteriores.
² El predicado puede utilizar el número de máquina del receptor, sus variables locales
u otros factores.
² Permite enviar un mensaje solo a aquellas máquinas que tengan al menos “x” mb
de memoria libre y se puedan ocupar de un nuevo proceso.
² Se envía un mensaje.
² Se efectúa varias veces un proceso get_reply para recolectar todas las respuestas,
una a la vez.
286 CAPÍTULO 8. COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS
8.17.6 Atomicidad
La mayoría de los sistemas de comunicación en grupo están diseñados para que los men-
sajes enviados al grupo lleguen correctamente a todos los miembros o a ninguno de ellos:
La única forma de garantizar que cada destino recibe todos sus mensajes es pedirle que
envíe de regreso un reconocimiento después de recibir el mensaje:
² Si fallan:
– Algunos miembros del grupo habrán recibido el mensaje y otros no; esto es
inaceptable.
– Los miembros que no recibieron el mensaje ni siquiera saben que les falta al-
go, por lo que no pedirán una retransmisión; además, si pudieran detectar el
faltante pero fallara el emisor, no podrán recibir el mensaje.
² El emisor comienza con el envío de un mensaje a todos los miembros del grupo.
Este algoritmo asegura que todos los procesos sobrevivientes obtendrán el mensaje,
independientemente del número de máquinas que fallen o el número de paquetes perdidos.
8.17. ASPECTOS DEL DISEÑO DE LA COMUNICACIÓN EN GRUPO 287
– 0 a 1; 4 a 0; 4 a 1; 4 a 3; 0 a 3; 0 a 4.
El problema es que cuando dos procesos contienden por el acceso a una LAN, el orden
de envío de los mensajes no es determinista.
En el ejemplo anterior, los procesos 1 y 3 reciben los mensajes de los procesos 0 y 4 en
distinto orden:
² Si los procesos 0 y 4 intentan actualizar el mismo registro de una base de datos, los
procesos 1 y 3 terminarán con distintos valores …nales.
Un sistema debe tener una semántica bien de…nida con respecto al orden de entrega de
los mensajes.
La mejor garantía es la entrega inmediata de todos los mensajes, en el orden en que
fueron enviados:
² Todos los mensajes destinados a un grupo deben entregarse antes de comenzar a
entregar la siguiente serie de mensajes.
² Todos los receptores reciben todos los mensajes en el mismo orden.
² Es esquema se denomina ordenamiento con respecto al tiempo global.
Una variante al esquema anterior es el ordenamiento consistente:
² Si dos mensajes “a” y “b” se envían muy cercanos en el tiempo, el sistema:
² Se garantiza que los mensajes lleguen a todos los miembros del grupo en el mismo
orden:
² Cada uno de los procesos “A” y “D” decide de manera simultánea enviar un mensaje
a sus grupos respectivos.
² Se utiliza la unitransmisión.
El problema es el siguiente:
² Resulta muy complicado implantar el orden con respecto al tiempo entre los distintos
grupos, pero no siempre es necesario hacerlo.
8.17.9 Escalabilidad
Es necesario considerar cómo funcionarán los algoritmos cuando se tienen los siguientes
casos:
Sincronización en Sistemas
Distribuidos
² Cooperan.
² Se sincronizan entre sí.
Ejemplos:
² Generalmente se resuelven en sistemas de una sola cpu con métodos como los se-
máforos y los monitores:
289
290 CAPÍTULO 9. SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS
² Los procesos toman las decisiones solo con base en la información disponible en forma
local.
² No existe un reloj común o alguna otra fuente precisa del tiempo global.
Los primeros tres puntos indican que es inaceptable reunir toda la información en un
solo lugar para su procesamiento, pero lograr la sincronización sin centralización requiere
hacer las cosas distintas al caso de los sistemas operativos tradicionales.
El último punto también es crucial:
– Registro contador.
– Registro mantenedor.
² Se puede programar un cronómetro para que genere una interrupción “x” veces por
segundo.
² Habrá una pérdida de sincronía en los relojes (de software), es decir que tendrán
valores distintos al ser leidos.
La diferencia entre los valores del tiempo se llama distorsión del reloj y podría generar
fallas en los programas dependientes del tiempo.
Lamport demostró que la sincronización de relojes es posible y presentó un algoritmo
para lograrlo.
Lamport señaló que la sincronización de relojes no tiene que ser absoluta:
Para sincronizar los relojes lógicos, Lamport de…nió la relación ocurre antes de (happens-
before):
² Si “a” y “b” son eventos en el mismo proceso y “a” ocurre antes de “b”, entonces
“a –> b” es verdadero.
292 CAPÍTULO 9. SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS
² Si dos eventos “x” e “y” están en procesos diferentes que no intercambian mensajes,
entonces “x –> y” no es verdadero, pero tampoco lo es “y –> x”:
Necesitamos una forma de medir el tiempo tal que a cada evento “a”, le podamos
asociar un valor del tiempo “C(a)” en el que todos los procesos estén de acuerdo:
² El proceso “0” envía el mensaje “a” al proceso “1” cuando el reloj de “0” marca
“6”.
² Si el mensaje acarrea el tiempo de inicio “6”, el proceso “1” considerará que tardó
10 marcas de reloj en viajar.
² El mensaje “c” de “2” a “1” sale en “60” y llega en “56”, tardaría un tiempo
negativo, lo cual es imposible.
0 1 2 0 1 2
0 0 0 0 0 0
A A
6 8 10 6 8 10
12 16 20 12 16 20
B B
18 24 30 18 24 30
24 32 40 24 32 40
30 40 50 30 40 50
C C
36 48 60 36 48 60
42 56 70 42 61 70
D D
48 64 80 48 69 80
54 72 90 70 77 90
60 80 100 76 85 100
Este algoritmo cumple nuestras necesidades para el tiempo global, si se hace el siguiente
agregado:
² Entre dos eventos cualesquiera, el reloj debe marcar al menos una vez.
² Dos eventos no deben ocurrir exactamente al mismo tiempo.
Con este algoritmo se puede asignar un tiempo a todos los eventos en un sistema
distribuido, con las siguientes condiciones:
² Los valores de tiempo asignados a los eventos no tienen porqué ser cercanos a los
tiempos reales en los que ocurren.
² En ciertos sistemas (ej.: sistemas de tiempo real), es importante la hora real del
reloj:
294 CAPÍTULO 9. SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS
² Se tomó este número para que el segundo atómico coincida con el segundo solar
promedio de 1958.
² La BIH introduce segundos de salto para hacer las correcciones necesarias para que
permanezcan en fase:
El Instituto Nacional del Tiempo Estándar (NIST) de EE. UU. y de otros países:
² Transmiten pulsos UTC con cierta regularidad establecida (cada segundo, cada 0,5
mseg, etc.).
² Se deben conocer con precisión la posición relativa del emisor y del receptor:
² Se debe mantener el tiempo de todas las máquinas tan cercano como sea posible.
Se supone que cada máquina tiene un cronómetro que provoca una interrupción “h”
veces por segundo.
Cuando el cronómetro se detiene, el manejador de interrupciones añade “1” a un reloj
en software.
El reloj en software mantiene un registro del número de marcas (interrupciones) a
partir de cierta fecha acordada antes; al valor de este reloj se lo llama “C”.
Cuando el tiempo UTC es “t”, el valor del reloj en la máquina “p” es “Cp(t)”:
² Lo ideal sería que “Cp(t)” = “t” para toda “p” y todo “t”:
² Lo real es que los cronómetros no realizan interrupciones exactamente “h” veces por
segundo:
² Una máquina tiene un receptor UTC, por lo que se la llama despachador del tiempo.
Cada máquina envía un mensaje al servidor para solicitar el tiempo actual, periódica-
mente, en un tiempo no mayor que ± / 2 ½ segundos.
El despachador del tiempo responde prontamente con un mensaje que contiene el tiempo
actual “C U T C ".
Cuando el emisor obtiene la respuesta puede hacer que su tiempo sea “C U T C ".
Un gran problema es que el tiempo no puede correr hacia atrás:
² “C U T C " no puede ser menor que el tiempo actual “C” del emisor.
² Se promedia el resto.
² Es activo.
² El i -ésimo intervalo:
Al inicio de cada intervalo cada máquina transmite el tiempo actual según su reloj.
Debido a la diferente velocidad de los relojes las transmisiones no serán simultáneas.
Luego de que una máquina transmite su hora, inicializa un cronómetro local para
reunir las demás transmisiones que lleguen en cierto intervalo “S”.
Cuando recibe todas las transmisiones se ejecuta un algoritmo para calcular una nueva
hora para los relojes.
Una variante es promediar los valores de todas las demás máquinas.
Otra variante es descartar los valores extremos antes de promediar (los “m” mayores
y los “m” menores).
Una mejora al algoritmo considera la corrección por tiempos de propagación.
² Veri…ca si alguno de ellos es ajeno a los demás y de serlo lo descarta por ser un valor
extremo.
² Primero ingresa a una región crítica para lograr la exclusión mutua y garantizar que
ningún otro proceso utilizará las estructuras de datos al mismo tiempo.
Si un proceso pide permiso para entrar a una región crítica ya asignada a otro proceso:
² Si su propio mensaje tiene una marca menor el receptor no envía nada y encola el
pedido.
– Se bloquearán los siguientes intentos de los demás procesos por entrar a todas
las regiones críticas.
² Todos los procesos participan en todas las decisiones referentes a las entradas en las
regiones críticas.
² Se sobrecarga el sistema.
Una mejora consiste en permitir que un proceso entre a una región crítica con el
permiso de una mayoría simple de los demás procesos (en vez de todos):
² Luego de que un proceso otorgó el permiso a otro para entrar a una región crítica,
no puede otorgar el mismo permiso a otro proceso hasta que el primero libere su
permiso.
² En caso positivo:
² En caso negativo:
– La vuelve a pasar.
La falla de un proceso es detectada cuando su vecino intenta sin éxito pasarle la …cha:
² Envía de regreso un mensaje o.k. al emisor para indicar que está vivo y que tomará
el control.
En cierto momento todos los procesos han declinado ante uno de ellos, que será el nuevo
coordinador, que envía un mensaje coordinador a todos los procesos para anunciarlo.
Si un proceso inactivo se activa realiza una elección:
– Siempre gana el proceso que posee el número mayor, de ahí el nombre “algoritmo
del grandulón”.
– La exclusión mutua.
– El manejo de las regiones críticas.
– La prevención de bloqueos.
– La recuperación de fallas.
² O se hace todo lo que se tenía que hacer como una unidad o no se hace nada.
² Ejemplo:
Las operaciones entre Begin y End forman el cuerpo de la transacción y deben ejecu-
tarse todas o ninguna de ellas:
² Serialización:
² Atomicidad:
² Permanencia:
² Contiene todos los archivos (y otros objetos) a los cuales tiene acceso.
² Las lecturas y escrituras irán a este espacio hasta que la transacción se complete o
aborte:
² Signi…ca alto consumo de recursos por las copias de los objetos al espacio de trabajo
particular.
Cuando un proceso inicia una transacción, basta crear un espacio de trabajo particular
para él que sea vacío excepto por un apuntador de regreso al espacio de trabajo de su
proceso padre.
Para una transacción del nivel superior el espacio de trabajo del padre es el sistema
de archivos “real”.
Cuando el proceso abre un archivo para lectura, se siguen los apuntadores de regreso
hasta localizar el archivo en el espacio de trabajo del padre (o algún antecesor).
Cuando se abre un archivo para escritura:
La lectura por medio del índice particular (del espacio de trabajo particular) no es
problemática, pues las direcciones en disco a las que referencia son las originales.
La modi…cación de un bloque de un archivo requiere:
² Los bloques particulares a los que apunta se colocan nuevamente en la lista de bloques
libres.
² Las estructuras de datos no tienen que modi…carse, puesto que ya han sido actuali-
zadas.
Si la transacción aborta:
Cuando el coordinador ha recibido todas las respuestas sabe si debe establecer el com-
promiso o abortar:
² El coordinador:
² En distintos procesos.
² En distintos procesadores.
² El de la cerradura.
² Se sigue adelante y se hace todo lo que se deba hacer, sin prestar atención a lo que
hacen los demás.
² Se actúa a posteriori si se presenta algún problema.
² Se veri…can todas las demás transacciones para ver si alguno de los archivos ha sido
modi…cado desde el inicio de la transacción:
² Ausencia de bloqueos.
² Paralelismo máximo ya que no se esperan cerraduras.
En el método de las marcas no preocupa que las transacciones concurrentes utilicen los
mismos archivos, pero sí importa que la transacción con el número menor esté en primer
lugar.
Las marcas de tiempo tienen propiedades distintas a las de los bloqueos:
9.12. BLOQUEOS EN SISTEMAS DISTRIBUIDOS 311
Las marcas de tiempo son libres de bloqueos, lo que es una gran ventaja.
9.11.4 Resumen
Los diferentes esquemas ofrecen distintas ventajas pero el problema principal es la gran
complejidad de su implantación.
– Ignorar el problema.
² Detección:
² Prevención:
– Hacer que los bloqueos sean imposibles desde el punto de vista estructural.
² Evitarlos:
El algoritmo del avestruz merece las mismas consideraciones que en el caso de mono-
procesador.
En los sistemas distribuidos resulta muy difícil implantar algoritmos para evitar los
bloqueos:
Las técnicas más aplicables para el análisis de los bloqueos en sistemas distribuidos
son:
² Detección.
² Prevención.
² Los recursos que espera un proceso pueden ser locales o remotos (de otra máquina).
– El mensaje se actualiza:
¤ Se conserva el primer campo.
¤ Se reemplaza el segundo por su propio número de proceso y el tercero por
el número del proceso al cual espera.
– El mensaje se envía al proceso debido al cual se bloquea:
¤ Si se bloquea debido a varios procesos les envía mensajes (diferentes) a
todos ellos.
Una forma de romper el bloqueo es que el proceso que inició la exploración se compro-
meta a suicidarse y, si varios procesos se bloquean al mismo tiempo e inician exploraciones,
todos ellos se suicidarán.
Una variante es eliminar solo al proceso del ciclo que tiene el número más alto.
314 CAPÍTULO 9. SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS
² Exigir a los procesos que soliciten todos sus recursos desde un principio.
² Hacer que todos los procesos liberen todos sus recursos cuando soliciten uno nuevo.
² Se veri…ca cuál de ellos tiene la marca de tiempo mayor (es más joven).
² Se puede permitir la espera solo si el proceso en estado de espera tiene una marca
inferior (más viejo) que el otro.
Otra posibilidad es permitir la espera de procesos solo si el proceso que espera tiene
una marca mayor (es más joven) que el otro proceso; las marcas aparecen en la cadena
en forma descendente.
Es más sabio dar prioridad a los procesos más viejos:
Procesos y Procesadores en
Sistemas Distribuidos
² Si tiene varios hilos de control podría ejecutar un segundo hilo mientras el primero
espera:
² Cada hilo:
² Los hilos comparten la cpu de la misma forma que lo hacen los procesos:
315
316CAPÍTULO 10. PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS
² Mientras un hilo está bloqueado se puede ejecutar otro hilo del mismo proceso.
² El hilo trabajador veri…ca si puede satisfacer la solicitud por medio del bloque caché
compartido, al que tienen acceso todos los hilos.
² Se llama:
– Al plani…cador y se inicializa otro hilo, que tal vez sea el servidor, para pedir
más trabajo; o.
– A otro trabajador listo para realizar un trabajo.
Los hilos ganan un desempeño considerable pero cada uno de ellos se programa en
forma secuencial.
Otro modelo es el de equipo:
² Todos los hilos son iguales y cada uno obtiene y procesa sus propias solicitudes.
² No hay servidor.
² Se utiliza una cola de trabajo que contiene todos los trabajos pendientes, que son
trabajos que los hilos no han podido manejar.
² Un hilo debe veri…car primero la cola de trabajo antes de buscar en el buzón del
sistema.
² El primer hilo genera ciertos datos y los trans…ere al siguiente para su procesamiento.
10.3. ASPECTOS DEL DISEÑO DE UN PAQUETE DE HILOS 317
² Los datos pasan de hilo en hilo y en cada etapa se lleva a cabo cierto procesamiento.
En un diseño dinámico:
² Un proceso:
² Del usuario.
² Del núcleo.
² Cuando un hilo ejecuta una llamada al sistema o cualquier acción que pueda provocar
su suspensión:
² Para cada proceso el núcleo tiene una tabla con una entrada por cada hilo que
contiene:
² Todas las llamadas que pueden bloquear un hilo se implantan como llamadas al
sistema:
Otro problema de los paquetes de hilos a nivel usuario es que si un hilo comienza su
ejecución no puede ejecutarse ningún otro hilo de ese proceso, salvo que el hilo entregue
voluntariamente la cpu.
Un problema adicional para los hilos a nivel usuario es que generalmente los progra-
madores desean los hilos en aplicaciones donde los hilos se bloquean a menudo:
Una de las estructuras es una pila de argumentos compartida por “C” y “S”, que se
asocia de manera lectura / escritura en ambos espacios de direcciones.
Para llamar al servidor, “C”:
El núcleo:
² Modi…ca el mapa de memoria del cliente para colocar éste en el espacio de direcciones
del servidor.
² Modelo híbrido.
² Sin disco:
– Bajo costo, fácil mantenimiento del hardware y del software, simetría y ‡exibi-
lidad.
– Gran uso de la red, los servidores de archivos se pueden convertir en cuellos de
botella.
Generalmente se considera que una estación de trabajo está “inactiva” cuando se dan
ambas condiciones:
322CAPÍTULO 10. PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS
Los algoritmos para localizar las estaciones de trabajo inactivas se pueden dividir en
dos categorías:
² El cliente transmite una solicitud indicando el programa que desea ejecutar, la can-
tidad de memoria necesaria, si requiere un chip coprocesador, etc.
Todas las llamadas al sistema que soliciten el estado de la máquina deben realizarse
en la máquina donde se ejecuta el proceso.
Las llamadas al sistema relacionadas con el tiempo son un serio problema debido a las
di…cultades de sincronización.
En caso de que regrese el poseedor de la máquina:
– T = 1 / ( ¹ - ¸).
– Cuando “ ¸” tiende a “0”, “T” no tiende a “0”.
² Supongamos que tenemos “n” multiprocesadores personales, cada uno con cierto
número de cpu y con su propio sistema de colas con tasas “ ¸” y “ ¹” y tiempo “T”:
– Si reunimos todas las cpu y formamos una sola pila de procesadores tendremos
un solo sistema de colas en vez de “n” colas ejecutándose en paralelo.
– La tasa de entrada será “n ¸”, la tasa de servicio será “n ¹” y el tiempo
promedio de respuesta será:
¤ T 1 = 1 / (n ¹ - n ¸) = 1 / n ( ¹ - ¸) = T / n.
– Conclusión: si reemplazamos “n” pequeños recursos por uno grande que sea
“n” veces más poderoso:
¤ Podemos reducir el tiempo promedio de respuesta “n” veces.
² Decidir cuándo ejecutar el proceso de manera local y cuándo buscar una estación
inactiva.
² No migratorias:
– Una vez colocado un proceso en una máquina permanece ahí hasta que termina.
² Migratorias:
² Tasa de respuesta:
Los algoritmos deterministas son adecuados cuando se sabe anticipadamente todo acer-
ca del comportamiento de los procesos, pero esto generalmente no se da, aunque puede
haber en ciertos casos aproximaciones estadísticas.
Los algoritmos heurísticos son adecuados cuando la carga es impredecible.
326CAPÍTULO 10. PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS
Los diseños centralizados permiten reunir toda la información en un lugar y tomar una
mejor decisión; la desventaja es que la máquina central se puede sobrecargar y se pierde
robustez ante su posible falla.
Generalmente los algoritmos óptimos consumen más recursos que los subóptimos, ade-
más, en la mayoría de los sistemas reales se buscan soluciones subóptimas, heurísticas y
distribuidas.
Cuando se va a crear un proceso se debe decidir si se ejecutará en la máquina que lo
genera o en otra (política de transferencia):
² La decisión se puede tomar “solo con información local” o “con información global”.
² Un método consiste en contar el número de procesos (hay que considerar los procesos
latentes no activos).
² Las máquinas ejecutan sus algoritmos en forma asíncrona por lo que el sistema nunca
se equilibra.
² Los arcos que van de una subgrá…ca a la otra representan el trá…co en la red.
1
Ver Figura 10.1 de la página 328 y Figura 10.2 de la página 328 [25, Tanenbaum].
328CAPÍTULO 10. PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS
G 4 H 2 I
G 4 H 2 I
– La elección la pueden hacer los subordinados, los pares jerárquicos del equipo
fallado o el superior jerárquico del mismo.
Para disminuir la vulnerabilidad se puede tener en la cima del árbol jerárquico no uno
sino un grupo de equipos; si alguno del grupo falla los restantes eligen a un subordinado
para integrar el grupo superior.
Las tareas se pueden crear en cualquier parte de la jerarquía y pueden requerir varios
procesos, es decir varios procesadores.
Cada administrador debe mantener un registro de sus equipos dependientes que estén
disponibles.
Si el administrador que recibe una solicitud determina que no tiene su…cientes proce-
sadores disponibles, trans…ere la solicitud hacia arriba a su superior, quien también podría
trasladarla hacia arriba nuevamente.
Si el administrador determina que sí puede satisfacer la solicitud:
Se necesita una forma de garantizar que los procesos con comunicación frecuente se
ejecuten de manera simultánea.
En muchos casos un grupo de procesos relacionados entre sí iniciarán juntos.
La comunicación dentro de los grupos debe prevalecer sobre la comunicación entre los
grupos.
Se debe disponer de un número de procesadores su…ciente para soportar al grupo de
mayor tamaño.
Cada procesador se multiprograma con “n” espacios para los procesos (multiprograma-
ción de nivel “n”).
El algoritmo de Ousterhout utiliza el concepto de coplani…cación:
² Toma en cuenta los patrones de comunicación entre los procesos durante la plani…-
cación.
² Debe garantizar que todos los miembros del grupo se ejecuten al mismo tiempo.
333
334 CAPÍTULO 11. SISTEMAS DISTRIBUIDOS DE ARCHIVOS
² El servicio de directorios:
² Posibilidades:
– Cada usuario tiene un permiso o posibilidad para cada objeto al que tiene
acceso:
¤ Determina los tipos de accesos permitidos.
B C
D E
En una jerarquía con estructura de árbol solo se puede eliminar un enlace con un
directorio si el directorio al cual se apunta está vacío.
En una grá…ca se permite la eliminación de un enlace mientras exista al menos otro:
0
N° DE DIRECTORIOS QUE MAQUINA 1
APUNTAN A ESTE A
DIRECTORIO
2 1
B C
1 1
MAQUINA 2
D E
² Se individualiza al servidor pero no se indica dónde está, por ello puede moverse
dentro de la red sin necesidad de cambiar la ruta.
² Ej.: /servidor1/dir1/dir2/x.
² Un único espacio de nombres que tenga la misma apariencia en todas las máquinas.
² Si dos write se realizan en serie y luego se ejecuta un read, el valor que se debe
regresar es el almacenado en la última escritura.
² Una solución es permitir a los cliente mantener copias locales de los archivos de uso
frecuente en sus cachés particulares, lo que ocasiona el siguiente problema:
² Una solución sería propagar inmediatamente todas las modi…caciones de los archivos
en caché de regreso al despachador:
² Los cambios a un archivo abierto solo pueden ser vistos en un principio por el proceso
(o tal máquina) que modi…co el archivo.
² Los cambios serán visibles a los demás procesos (o máquinas) solo cuando se cierre
el archivo y sea actualizado en el servidor.
² Una solución es que al cerrar cada archivo su valor se envía de regreso al servidor:
Otro problema consiste en que no se pueden compartir los apuntadores que para cada
archivo indican en la semántica UNIX la posición actual en el archivo.
Un método distinto es que todos los archivos sean inmutables:
² El ocultamiento.
² La duplicación o réplica.
² El control de la concurrencia.
² Estáticas:
² Dinámicas:
– Debe exportar los nombres de los directorios seleccionados, para que otras
máquinas los puedan acceder.
² El servidor que recibe un nombre binario que se re…ere a otro servidor puede:
– Indicar al cliente el servidor que tiene el archivo buscado, para que el cliente lo
busque.
– Enviar la solicitud al siguiente servidor y no contestar.
Otra posibilidad es que los servidores conserven información de estado de los clientes
entre las solicitudes.
Aclaración:
² Luego de abrir un archivo el servidor debe mantener la información que relacione los
clientes con los archivos abiertos por éstos.
² La tabla que asocia los descriptores de archivo con los archivos propiamente
dichos es información de estado.
² Debe incluir el nombre del archivo y toda la información para que el servidor realice
el trabajo.
11.9. OCULTAMIENTO 341
² Al volver a arrancar no tiene información sobre la relación entre los clientes y los
archivos abiertos por éstos.
Los servidores sin estado tienden a ser más tolerantes de los fallos que los servidores
con estados.
11.9 Ocultamiento
En un sistema cliente - servidor, cada uno con su memoria principal y un disco, existen
cuatro lugares donde se pueden almacenar los archivos o partes de ellos [25, Tanenbaum]:
² Qué hacer si se utiliza toda la capacidad del caché y hay que eliminar a alguien.
Respecto de qué hacer cuando se utiliza toda la capacidad del caché y hay que eliminar
a alguien:
² Se puede utilizar cualquier algoritmo de ocultamiento, por ej.: LRU mediante listas
ligadas.
Si el caché se coloca en la memoria principal del cliente las principales opciones son:
² Ocultar los archivos dentro del propio espacio de direcciones de un proceso de usuario.
² Cuando un tercer proceso lee el archivo del servidor obtendrá la versión original y
no alguna de las nuevas:
² Cuando se modi…ca una entrada del caché (archivo o bloque), el nuevo valor:
Los principales problemas de la escritura a través del caché son los siguientes:
Otro algoritmo para manejar el caché de archivos del cliente es el de escritura al cierre:
– Se podría esperar (ej.: 30”) para ver si el archivo es eliminado en ese lapso.
² Si se abre un archivo para lectura otros procesos lo pueden abrir para lectura pero
no para escritura.
² Si se abre un archivo para escritura se debe evitar abrirlo para lectura desde otro
proceso.
² Al cerrar un archivo:
11.10 Réplica
Frecuentemente los sistemas distribuidos de archivos proporcionan la réplica de archivos
como un servicio [25, Tanenbaum]:
² Las direcciones en la red de todas las copias se asocian con el nombre del archivo.
² Para leer un archivo con “N” réplicas un cliente debe conformar un quórum de
lectura, es decir una colección arbitraria de “N r ” servidores o más.
² Se debe cumplir que “N r ” + “N w ” > “N”, por lo cual nunca se podrá obtener un
quórum de lectura y otro de escritura al mismo tiempo.
11.14 Escalabilidad
Una tendencia de…nida en los sistemas distribuidos es hacia los sistemas cada vez mas
grandes [25, Tanenbaum].
Los sistemas distribuidos de archivos que operan bien para cientos de máquinas podrían
fallar en algún aspecto trabajando con miles o decenas de miles de máquinas.
Generalmente los algoritmos centralizados no se escalan bien ya que el servidor cen-
tralizado podría convertirse en un cuello de botella; por ello se podría separar el sistema
en unidades más pequeñas relativamente independientes entre sí.
Las transmisiones también son un área problemática:
En general los recursos y algoritmos no deben ser lineales con respecto al número de
usuarios.
– Cuando está conectado el usuario carga al equipo móvil los archivos que cree
necesitará después.
– Los utiliza mientras está desconectado.
– Al reconectarse, los archivos en el caché deben fusionarse con los existentes en
el árbol de directorios, logrando la sincronización.
– La conexión para la sincronización puede ser problemática si se utiliza un enlace
de ancho de banda reducido.
11.17. TOLERANCIA DE FALLOS 349
Rendimiento
Las instalaciones rara vez cuentan con personal versado en las técnicas de análisis de
rendimiento.
Durante los primeros años del desarrollo de las computadoras el hardware represen-
taba el costo dominante de los sistemas y debido a ello los estudios de rendimiento se
concentraban en el hardware.
Actualmente y según la tendencia apreciable:
² El software representa una porción cada vez mayor de los presupuestos informáticos.
Un software de…ciente y / o mal utilizado puede ser causa de un rendimiento pobre del
hardware, por lo tanto es importante controlar y evaluar el rendimiento del hardware y del
software.
351
352 CAPÍTULO 12. RENDIMIENTO
² Se debe reformular el aspecto del rendimiento del hardware base y medirlo de manera
más adaptada a la productividad humana.
También in‡uyen en los puntos de vista sobre la evaluación del rendimiento aspectos
tales como:
² Construcción de redes.
² Procesamiento distribuido.
² Evaluación de selección:
Frecuentemente son necesarios procesos de con…guración de los sistemas para que pue-
dan servir a las necesidades.
Los procesos de sintonización del sistema tienden a mejorar el rendimiento en base a
ajustar el sistema a las características de la instalación del usuario.
² Tiempo de regreso:
354 CAPÍTULO 12. RENDIMIENTO
– Tiempo desde la entrega del trabajo hasta su regreso al usuario (para procesa-
miento por lotes).
² Tiempo de respuesta:
– Tiempo desde que el usuario presiona “enter” hasta que se da la primera sección
de tiempo de servicio.
² Simulación.
² Modelado de sistemas.
² Capacidad de ejecución:
² Carga de trabajo:
² Capacidad:
² Utilización:
12.5. TÉCNICAS DE EVALUACIÓN DEL RENDIMIENTO 355
² Teoría de colas.
² Procesos de Markov.
Requieren un gran nivel matemático del evaluador y son con…ables solo en sistemas
sencillos, ya que en sistemas complejos los supuestos simpli…cadores pueden invalidar su
utilidad y aplicabilidad.
Puntos de referencia (o programas de comparación del rendimiento)
Son programas reales que el evaluador ejecuta en la máquina que se está evaluando.
Generalmente es un programa de producción:
² Pueden distorsionar las lecturas del rendimiento debido a que consumen recursos del
sistema.
Los monitores:
² Producen grandes cantidades de datos que deben ser analizados manualmente o por
sistema.
² Indican con precisión cómo está funcionando un sistema.
² Son de mucha ayuda para evaluar sistemas en desarrollo y tomar las decisiones de
diseño adecuadas.
Para detectar los embotellamientos se debe controlar cada cola de peticiones de los
recursos; cuando una cola crece rápidamente signi…ca que la tasa de llegadas de peticiones
debe superar a su tasa de servicio.
El aislamiento de los embotellamientos es una parte importante de la “a…nación” de
la “sintonización” del sistema.
Los embotellamientos pueden eliminarse:
358 CAPÍTULO 12. RENDIMIENTO
² Hace que la longitud de las colas se mantenga cerca de sus valores medios.
Retroalimentación positiva
La información retroalimentada provoca un incremento en vez de un decremento de
algún parámetro.
Se deben evitar situaciones similares a la siguiente:
² Se deben controlar los efectos de cada cambio incremental para ver si resulta una
mejora anticipada.
² La teoría de colas.
Las expresiones teoría de colas y teoría de líneas (o …las) de espera deben considerarse
equivalentes [7, Deitel].
El término matemático cola signi…ca una línea de espera.
Si no hubiera líneas de espera se podría recibir servicio de inmediato:
² Sería lo deseable.
Si existe una población de clientes que demandan cierto servicio prestado por servido-
res:
359
360 CAPÍTULO 13. MODELADO ANALÍTICO EN RELACIÓN AL RENDIMIENTO
² Ilimitadas: pueden crecer tanto como sea necesario para contener a los clientes que
esperan.
² Limitadas: solo pueden contener un número …jo de clientes en espera y quizás hasta
ninguno.
Se deben tener en cuenta variables aleatorias que pueden ser descritas por distribucio-
nes probabilísticas.
La variable aleatoria “q” representa el tiempo que emplea un cliente esperando en la
cola a ser servido.
La variable aleatoria “s” representa la cantidad de tiempo que emplea un cliente en
ser servido.
La variable aleatoria “w” representa el tiempo total que emplea un cliente en el sistema
de colas: “w = q + s”.
Llegadas de Poisson
Las llegadas pueden seguir distintos patrones arbitrarios pero suele suponerse que
forman un proceso de llegadas de Poisson:
P (¿ · t) = 1 ¡ e¡¸t :
13.3. SERVICIO, COLA Y SERVIDORES 361
² El número de llegadas por unidad de tiempo se dice que tiene distribución de Poisson
con una media ¸ .
Ws (t) = P (s · t).
Capacidad de la cola
Las colas deben tener:
² Capacidad in…nita:
– Cada cliente que llegue puede entrar en el sistema de colas y esperar, indepen-
dientemente de cuántos clientes hay en espera [7, Deitel].
– Los clientes que llegan cuando la instalación de servicio está ocupada no podrán
ser admitidos al sistema.
² Capacidad positiva:
– Tienen un solo servidor y nada más pueden darle servicio a un solo cliente a la
vez.
– Tienen “c” servidores con idéntica capacidad y pueden dar servicio a “c” clien-
tes a la vez.
² Notación Kendall.
² Notación Kendall abreviada.
¸: tasa de llegadas.
¹: tasa de servicio.
½ = u=c = ¸=¹c.
² Uniforme.
² Predecible.
² ¸: tasa de llegadas.
Lq = ¸Wq
L = ¸W
13.8. RESUMEN DEL PROCESO DE POISSON 365
P(k,t) =
¸¢t para k = 1 (¸ es la tasa promedio de llegadas).
1 ¡ ¸¢t para k = 0.
0 para k > 1.
Un proceso también es de Poisson si los tiempos entre llegadas sucesivas (tiempos entre
llegadas de primer orden):
² Idénticamente distribuidas.
E(k) = ¸ t.
(¾k )2 = ¸t.
E(y) = ¹2 = ¸2 t.
E(x) = ¹1 = ¸1 t:
Para un proceso de Poisson con una tasa de llegada “ ¸” se puede formar un nuevo
proceso de Poisson utilizando borradas aleatorias independientes:
¸n = pn ¸:
Pn
i=1 pi = 1:
Pn Pn Pn
i=1 ¸i = i=1 pi ¸ = ¸ i=1 pi = ¸:
En un proceso de Poisson:
1 ¡ P (0; t) = 1 ¡ e¡¸t :
E(t) = 1=¸:
La varianza es:
13.9. ANÁLISIS DE UN SISTEMA DE COLAS M/M/1 367
¾ 2t = 1=¸2 :
E(t) = r=¸:
¾ 2t = r=¸2 :
P (S · t) = 1 ¡ e¡¹t ; (t ¸ 0):
E(s) = 1=¹:
² La varianza es “ 1=¹2 ”.
² Intensidad de trá…co:
u = ¸=¹ = ¸E(s):
½ = u=c:
368 CAPÍTULO 13. MODELADO ANALÍTICO EN RELACIÓN AL RENDIMIENTO
² Probabilidad de que todos los servidores estén en uso, por lo que un cliente que llega
debe esperar:
½ ¾
[(uc )=c!]
C(c; u) = [(uc )=c!]+(1¡½) c¡1 [un =n!]
P
[ n=0 ]
W = Wq + E(s):
Las fórmulas de estado para el sistema de colas M/M/1 son las siguientes:
C(c; u) = ½ = ¸E(s):
Wq = [½E(s)]=(1 ¡ ½):
W = E(s)=(1 ¡ ½):
¼ q (90) = W [ln(10½)]:
² Los 48 operadores (como promedio) necesitan usar el equipo una vez al día.
² Los operadores llegan al equipo en forma aleatoria (llegadas de Poisson).
Utilizando un sistema de colas m/m/1 para modelar el uso del equipo especial del
ejemplo se obtiene:
² Operadores en espera:
² Operadores en el sistema:
Conclusión:
² Un solo equipo no es su…ciente para hacer frente a las necesidades de los operadores
sin provocar esperas excesivas.
² Cada uno de los equipos se debe analizar como un sistema de colas M/M/1.
370 CAPÍTULO 13. MODELADO ANALÍTICO EN RELACIÓN AL RENDIMIENTO
² Conclusiones:
– Los tiempos de espera en la cola bajan muy rápido tan pronto como se añade
el segundo equipo M/M/1.
– El percentil 90 de tiempo de espera en la cola es superior a 10 minutos hasta
que se añade el quinto equipo.
² Utilizando las fórmulas de los sistemas M/M/c se obtienen los siguientes valores:
² Conclusiones:
² ¸ij = 0 si j 6= i + 1 y j 6= i - 1.
P i+1 = (b i / d i+1 ) P i .
Pn
i=1 P i = 1.
² Las peticiones de acceso a disco llegan como un proceso de Poisson con una tasa
promedio de “ ¸" peticiones por minuto.
² Si el disco está en uso, la petición se coloca en una cola primero en llegar, primero
en ser servido.
² El valor esperado para el número total de peticiones al disco pendientes (en la cola
o en servicio).
Caso I:
Caso II:
² Cada brazo puede dar servicio a una petición de disco a la misma tasa “¹".
Solución al caso I
“S i " es el estado del sistema cuando hay “i” peticiones de disco al dispositivo de
servicio de disco.
La tasa de llegadas de peticiones es independiente del estado del sistema:
² di = 0 con i = 0.
² di = ¹ con i = 1, 2, 3, ...
² bi = ¸ con i = 0, 1, 2, ...
² Solo una petición puede ser servida en un momento dado y se sirve a una tasa ¹.
² ¹ > ¸:
P1 = (¸ / ¹) P0 .
P2 = (¸ / ¹) P1 = (¸ / ¹)2 P0 .
Pi = (¸ / ¹)i P0 .
P P
i Pi = 1 = i (¸ / ¹) P0 = 1/ [1 - (¸ / ¹)] P0 .
i
E(i) = (¸ / ¹) [1 - (¸ / ¹)¡1 ].
Solución al caso II
Con “i” peticiones siendo servidas:
² La probabilidad de que una petición en particular acabe siendo servida dentro del
siguiente “ ¢t” es “ ¹¢t”.
374 CAPÍTULO 13. MODELADO ANALÍTICO EN RELACIÓN AL RENDIMIENTO
² bi = ¸ con i = 0, 1, 2, ...
² di = 0 con i = 0.
² di = i¹ con i = 1, 2, 3, ...
Ningún cliente tiene que esperar ya que se suponen in…nitos servidores en paralelo.
Se utilizan las relaciones:
P1 = (¸ / ¹) P0 .
P2 = (¸ / 2¹) P1 = (1 / 2) (¸ / ¹)2 P0 .
Pi = (1 / i!) (¸ / ¹)i P0 .
P P
i Pi = 1 = i (1 / i!) (¸ / ¹) P0 .
i
P
n (x / n!) = e .
n x
P P
i Pi = 1 = i (1 / i!) (¸ / ¹) P0 = e
i ¸=¹ P .
0
P0 = e¡¸=¹ .
E(i) = (¸ / ¹).
Conclusiones:
377
378 CAPÍTULO 14. SEGURIDAD DE LOS SISTEMAS OPERATIVOS
² Sin una serie de requisitos precisos tiene poco sentido cuestionar la seguridad de un
sistema.
² Seguridad física.
² Seguridad operacional.
² Detectores de humo.
² Sensores de calor.
² Detectores de movimiento.
– Tarjetas de identi…cación.
– Sistemas de huellas digitales.
– Identi…cación por medio de la voz.
² Un sistema de huellas digitales podría rechazar a un usuario legítimo que tenga una
cortadura o una quemadura.
14.6. PROTECCIÓN POR CONTRASEÑA 381
² El acceso lo hace un programa de vigilancia que luego pasa los resultados al programa
del usuario.
² Permite:
14.5.3 Ampli…cación
La ampli…cación se produce cuando [7, Deitel]:
² El usuario elige una palabra clave, la memoriza, la teclea para ser admitido en el
sistema computarizado:
382 CAPÍTULO 14. SEGURIDAD DE LOS SISTEMAS OPERATIVOS
– Periódicamente:
¤ Se presta atención regularmente a los problemas de seguridad.
– Al azar:
¤ Se intenta atrapar a los intrusos desprevenidos.
14.8. NÚCLEOS DE SEGURIDAD Y SEGURIDAD POR HARDWARE 383
² Concretos:
² Abstractos:
² Acceso de lectura.
² Acceso de escritura.
² Acceso de ejecución.
² Celdas de la matriz para los derechos de acceso que un usuario tiene a un objeto.
Una matriz de control de acceso debe ser muy celosamente protegida por el S. O.
² El control de acceso.
² La entrada al sistema.
² La veri…cación.
– Resultan mucho más seguras que cuando son asequibles como instrucciones de
software que pueden ser modi…cadas.
– Pueden operar mucho más rápido que en el software:
¤ Mejorando la performance.
¤ Permitiendo controles más frecuentes.
² Su disponibilidad.
² Es una cuestión cada vez más importante, especialmente para sistemas en línea.
Generalmente continúan operando con una degradación suave en los niveles de pres-
tación.
Los componentes fallidos deben poder reemplazarse sin interrumpir el funcionamiento
del sistema.
Una clave para la capacidad de supervivencia es la redundancia:
² De los usuarios.
² Del sistema.
Los sujetos se consideran también como objetos del sistema y un sujeto puede tener
derechos de acceder a otro.
Los sujetos son entidades activas y los objetos son pasivos.
Una capacidad es una señal:
– Sin variantes.
– Reduciendo (nunca incrementando) los derechos de acceso establecidos.
– De un sujeto determinado.
– De cualquier otro sujeto que hubiera recibido de él esa capacidad.
14.11 Criptografía
El uso creciente de las redes de computadoras y la importancia del tra…co cursado hace
necesario proteger a los datos [7, Deitel].
La O…cina Nacional de Estándares de EE. UU. (NBS) ha adoptado la norma de cifrado
de datos (DES) para la transmisión de información federal delicada.
La criptografía es el uso de la transformación de datos para hacerlos incomprensibles
a todos, excepto a los usuarios a quienes están destinados.
El problema de la intimidad trata de cómo evitar la obtención no autorizada de infor-
mación de un canal de comunicaciones.
El problema de la autenti…cación trata sobre cómo evitar que un oponente:
² El receptor pasa el texto cifrado por una unidad de descifrado para regenerar el texto
simple.
Criptoanálisis
Es el proceso de intentar regenerar el texto simple a partir del texto cifrado, pero
desconociendo la clave de ciframiento:
² “C” puede hacerse pública sin comprometer la seguridad de “D”, que permanece
privada:
Firmas Digitales
Para que una …rma digital sea aceptada como sustituta de una …rma escrita debe ser:
² El receptor:
Aplicaciones
La criptografía es especialmente útil en los sistemas multiusuario y en las redes de
computadoras.
Se debe utilizar para proteger a las contraseñas, almacenándolas cifradas.
Se puede utilizar también para proteger todos los datos almacenados en un sistema de
computación; se debe considerar el tiempo de cifrado / descifrado.
También es aplicable en los protocolos de redes de capas, que ofrecen varios niveles de
cifrado.
En el cifrado de enlace la red asume la responsabilidad de cifrado / descifrado de cada
nodo:
En el cifrado punto a punto un mensaje se cifra en su fuente y se descifra solo una vez,
en su destino:
Cifrado:
390 CAPÍTULO 14. SEGURIDAD DE LOS SISTEMAS OPERATIVOS
Implementación:
Con…anza implícita:
² Una rutina supone que otra está funcionando correctamente cuando, de hecho, de-
bería examinar los parámetros suministrados por la otra rutina.
Compartimiento implícito:
² Usos inadecuados de los mecanismos de send / receive que pueden ser aprovechados
por los intrusos.
Veri…cación de la legalidad:
Desconexión de línea:
² Es más seguro pasar los parámetros directamente en registros que tener los registros
apuntando a las áreas que contienen los parámetros.
² El paso por referencia puede permitir que los parámetros, estando aún en el área del
usuario, puedan ser modi…cados antes de ser usados por el sistema.
Contraseñas:
Entrampamiento al intruso:
Privilegio:
Prohibiciones:
² Se advierte a los usuarios que no utilicen ciertas opciones porque los resultados
podrían ser “indeterminados”, pero no se bloquea su uso, con lo que puede robar o
alterar datos.
Residuos:
² Un intruso podría encontrar una lista de contraseñas con solo buscar en lugares tales
como una “papelera”:
Blindaje:
² Los intrusos pueden conectarse a una línea de transmisión sin hacer contacto físico:
Valores de umbral:
² Un proceso podría modi…car los parámetros ya validados por otro proceso pero aún
no utilizados.
² Un proceso podría pasar valores malos a otro aún cuando el segundo realice una
veri…cación extensa.
Rastreo:
Entre líneas:
² Se utiliza una línea de comunicaciones mantenida por un usuario habilitado que está
inactivo.
Código clandestino:
Prohibición de acceso:
Desconexión de línea:
Disfraz:
Ataque “nak”:
² Si el S. O. permite a un usuario:
Engaño al operador:
² Con un engaño se hace realizar al operador una acción que comprometa la seguridad
del sistema.
Parásito:
Caballo de Troya:
² El intruso coloca un código dentro del sistema que luego le permita accesos no
autorizados.
Parámetros inesperados:
Casos de Estudio
395
Capítulo 15
15.1 Introducción
Una de las muchas y muy variadas posibles aplicaciones de la P.O.O. (programación
orientada a objetos) [2, Joyanes] está en el desarrollo de algoritmos que implementen
estrategias de administración de recursos por parte del Sistema Operativo.
Como parte de las estrategias antes mencionadas, podemos considerar las de adminis-
tración o asignación del procesador, es decir aquéllas según las cuales los S. O. seleccionan
a cuál de los procesos listos para ser ejecutados en ejecución concurrente, le asignarán el
procesador en un momento dado, es decir, a qué proceso darán la posibilidad de utilizar
la CPU para ejecutar sus propias instrucciones; a esta decisión también se la conoce como
despacho del proceso [23, Tanenbaum] y [7, Deitel].
397
398 CAPÍTULO 15. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
² FIFO: Primero en llegar, primero en ser despachado, es decir que los procesos son
atendidos según su orden en la lista de procesos listos y una vez que reciben el
procesador lo utilizan hasta que …nalizan o hasta que se presenta una petición de
entrada / salida requerida por el propio programa.
² RR: Round Robin: Los procesos son atendidos según su orden en la lista de procesos
listos, pero disponen de un tiempo limitado (cuantum) del procesador, es decir que
pueden ser interrumpidos por requerimientos propios de entrada / salida o por haber
agotado su tiempo de procesador; obviamente que la otra causa de interrupción es
la …nalización del proceso.
² HRN: Los procesos son atendidos según su prioridad en la lista de procesos listos;
la prioridad depende de la relación de respuesta: (TE + TS) / TS, donde TE =
Tiempo de Espera y TS = Tiempo de Servicio; es decir que un proceso tiene mayor
probabilidad de acceder a la cpu si ha hecho poco uso de ella; el tiempo de espera
más el tiempo de servicio es el tiempo total que lleva el proceso en el sistema, es
decir la cantidad de ciclos de control que se han contabilizado en la simulación,
en tanto que el tiempo de servicio es el número de ciclos de control que el proceso
ha utilizado; en este caso el proceso que dispone de la cpu puede ser interrumpido
porque …naliza o porque requiere una operación de entrada / salida.
² RNM: Los procesos son atendidos según su nivel en la lista de procesos listos,
la cual se divide en subcolas, cada una de ellas asociada a un nivel determinado,
pero los procesos disponen de un tiempo limitado (cuantum) del procesador; si son
interrumpidos por entrada / salida permanecen en la subcola del nivel donde están,
pero si son interrumpidos por tiempo pasan a un nivel mayor, que tiene menor
preferencia, que es atendido cuando ya no hay procesos listos en los niveles inferiores;
de allí el nombre de Retroalimentación de Niveles Múltiples; de lo antes mencionado
se desprende que un proceso puede ser interrumpido porque …naliza, porque agota
su tiempo de procesador o porque requiere una operación de entrada / salida. En
la implementación efectuada los niveles identi…cados con un número menor son los
que tienen de hecho mayor prioridad y los identi…cados con un número mayor son
los que reciben menor prioridad.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#include <io.h>
class Proc{
public:
char identif;
/* 3: interrumpido p/ tiempo */
/* 2: terminado */
int …n;
int cuenta;
int pri;
int nivel;
Proc()
};
class procesos{
400 CAPÍTULO 15. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
public:
};
void procesos::inicio(){
{np = 50;
cout << ”Apertura del archivo resumen ’PROCESOS.TXT’ para grabación. nn”;
exit (0);
void procesos::introducir_datos(){
char opc;
cout << ”tipee: ’s’, de lo contrario: ’n’ y el sistema asumirá las identi…caciones.nn”;
if (opc == ’s’) {
{cout << ”Introduzca la identi…cación del proceso p[” <<i << ”]: ”;
else {
p[0].identif = ’a’;
p[1].identif = ’b’;
p[2].identif = ’c’;
p[3].identif = ’d’;
p[4].identif = ’e’;
p[5].identif = ’f’;
p[6].identif = ’g’;
p[7].identif = ’h’;
p[8].identif = ’i’;
p[9].identif = ’j’;
p[10].identif = ’k’;
p[11].identif = ’l’;
p[12].identif = ’m’;
p[13].identif = ’n’;
p[14].identif = ’o’;
p[15].identif = ’p’;
p[16].identif = ’q’;
p[17].identif = ’r’;
p[18].identif = ’s’;
15.5. PROGRAMA DESARROLLADO 403
p[19].identif = ’t’;
p[20].identif = ’u’;
p[21].identif = ’v’;
p[22].identif = ’w’;
p[23].identif = ’x’;
p[24].identif = ’y’;
p[25].identif = ’z’;
p[26].identif = ’1’;
p[27].identif = ’2’;
p[28].identif = ’3’;
p[29].identif = ’4’;
p[30].identif = ’5’;
p[31].identif = ’6’;
p[32].identif = ’7’;
p[33].identif = ’8’;
p[34].identif = ’9’;
p[35].identif = ’A’;
p[36].identif = ’B’;
p[37].identif = ’C’;
p[38].identif = ’D’;
p[39].identif = ’E’;
p[40].identif = ’F’;
p[41].identif = ’G’;
p[42].identif = ’H’;
p[43].identif = ’I’;
p[44].identif = ’J’;
p[45].identif = ’K’;
p[46].identif = ’L’;
404 CAPÍTULO 15. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
p[47].identif = ’M’;
p[48].identif = ’N’;
p[49].identif = ’O’;
{p[i].…n = 0;
p[i].cuenta = 0;
p[i].pri = 0;
p[i].nivel = 0;
void procesos::mostrar(){
printf(”nn”);
cout << ”Estado: 3 -> Interrumpido por tiempo (no aplicable en FIFO ni en HRN).”
<<”nn”;
{cout << ”Proceso p[” <<i << ”]: ” << p[i].identif<< ” Estado: ”<< p[i].…n<< ”
Ciclos de control utilizados: ”<< p[i].cuenta<< ”nn”;
cout << ”Proceso p[” <<i << ”]: ” << p[i].identif<< ” Prioridad: ”<< p[i].pri<< ”
Nivel: ”<< p[i].nivel;
cout <<”nn”;
void procesos::…fo(){
15.5. PROGRAMA DESARROLLADO 405
cout <<”nn”;
cout <<”nn”;
cout <<”****************************************************************”;
cout <<”nn”;
cout <<”Los procesos son atendidos según su orden en la lista de procesos listos:”;
for (register int j=0; j<cc; j++) // ***Realiza ’cc’ ciclos de control***
{aux…n = 0;
cout <<”nn”<< ”Todos los procesos han …nalizado en ”<< j << ” ciclos de control.nn”;
j = cc;
aux…n = getch();
{if (p[i].…n == 0)
cout <<”nn”;
p[i].cuenta = p[i].cuenta + 1;
if (p[i].…n == 1)
cout <<”Proceso ”’ <<p[i].identif <<”’ interrumpido por entrada / salida. ”<< ”nn”;
if (p[i].…n > 0)
{ // Intercambio de contexto.
cambio = cambio + 1;
auxiden = p[i].identif;
aux…n = p[i].…n;
auxcuenta = p[i].cuenta;
{p[k].identif = p[k+1].identif;
p[k].…n = p[k+1].…n;
p[k].cuenta = p[k+1].cuenta;
i = np;
15.5. PROGRAMA DESARROLLADO 407
aux…n = getch();
for (register int k=0; k<np; k++) // Determina si continúa la espera por entrada /
salida.
aux…n = getch();
void procesos::rrobin(){
cout <<”nn”;
cout <<”nn”;
408 CAPÍTULO 15. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
cout <<”************************************************************”;
cout <<”nn”;
cout <<”Los procesos son atendidos según su orden en la lista de procesos listos,nn”;
for (register int j=0; j<cc; j++) // ***Realiza ’cc’ ciclos de control***
{aux…n = 0;
{if (p[m].…n != 2)
{aux…n = 1;
m = np;
if (aux…n == 0)
cout <<”nn”<< ”Todos los procesos han …nalizado en ”<< j << ” ciclos de control.nn”;
j = cc;
aux…n = getch();
{if (p[i].…n == 0)
cout <<”nn”;
15.5. PROGRAMA DESARROLLADO 409
p[i].cuenta = p[i].cuenta + 1;
if (p[i].…n == 0) p[i].…n = 3;
if (p[i].…n == 1)
cout <<”Proceso ”’ <<p[i].identif <<”’ interrumpido por entrada / salida. ”<< ”nn”;
if (p[i].…n >= 0)
{ // Intercambio de contexto.
cambio = cambio + 1;
auxiden = p[i].identif;
aux…n = p[i].…n;
auxcuenta = p[i].cuenta;
{p[k].identif = p[k+1].identif;
p[k].…n = p[k+1].…n;
p[k].cuenta = p[k+1].cuenta;
i = np;
410 CAPÍTULO 15. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
aux…n = getch();
for (register int k=0; k<np; k++) // Determina si continúa la espera por entrada /
salida.
for (register int l=0; l<np; l++) // Determina si continúa la espera por tiempo.
{if (p[l].…n == 3)
if (aux…n == 1) aux…n = 0;
p[l].…n = aux…n;
aux…n = getch();
void procesos::hrn(){
cout <<”nn”;
cout <<”nn”;
cout <<”***************************************************************”;
cout <<”nn”;
cout <<”Los procesos son atendidos según su prioridad en la lista de procesos listos;nn”;
cout <<”la prioridad depende de la relación de respuesta: (TE + TS) / TS, dondenn”;
for (register int j=0; j<cc; j++) // ***Realiza ’cc’ ciclos de control***
{aux…n = 0;
cout <<”nn”<< ”Todos los procesos han …nalizado en ”<< j << ” ciclos de control.nn”;
j = cc;
aux…n = getch();
}
412 CAPÍTULO 15. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
if (j == 0)
{p[z].cuenta = 1;}
if (j < cc)
{p[l].pri = (j / p[l].cuenta);
if (auxpri == 1)
{auxiden = p[t].identif;
aux…n = p[t].…n;
auxcuenta = p[t].cuenta;
auxpri = p[t].pri;
p[t].identif = p[t+1].identif;
p[t].…n = p[t+1].…n;
p[t].cuenta = p[t+1].cuenta;
p[t].pri = p[t+1].pri;
p[t+1].identif = auxiden;
p[t+1].…n = aux…n;
p[t+1].cuenta = auxcuenta;
p[t+1].pri = auxpri;
}
15.5. PROGRAMA DESARROLLADO 413
{if (p[i].…n == 0)
{auxpri = 0;
cout <<”nn”;
p[i].cuenta = p[i].cuenta + 1;
if (p[i].…n == 1)
cout <<”Proceso ”’ <<p[i].identif <<”’ interrumpido por entrada / salida. ”<< ”nn”;
if (p[i].…n > 0)
{ // Intercambio de contexto.
cambio = cambio + 1;
auxiden = p[i].identif;
aux…n = p[i].…n;
auxcuenta = p[i].cuenta;
auxpri = p[i].pri;
{p[k].identif = p[k+1].identif;
p[k].…n = p[k+1].…n;
p[k].cuenta = p[k+1].cuenta;
p[k].pri = p[k+1].pri;
414 CAPÍTULO 15. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
i = np;
aux…n = getch();
for (register int k=0; k<np; k++) // Determina si continúa la espera por entrada /
salida.
aux…n = getch();
15.5. PROGRAMA DESARROLLADO 415
void procesos::rnm(){
cout <<”nn”;
cout <<”nn”;
cout <<”**************************************************************”;
cout <<”nn”;
cout <<”Los procesos son atendidos según su nivel en la lista de procesos listos;nn”;
cout <<”del nivel donde están, pero si son interrumpidos por tiempo pasan ann”;
cout <<”un nivel superior, que es atendido cuando ya no hay procesos listosnn”;
for (register int j=0; j<cc; j++) // ***Realiza ’cc’ ciclos de control***
{aux…n = 0;
{if (p[m].…n != 2)
{aux…n = 1;
m = np;
}
416 CAPÍTULO 15. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
if (aux…n == 0)
cout <<”nn”<< ”Todos los procesos han …nalizado en ”<< j << ” ciclos de control.nn”;
j = cc;
aux…n = getch();
if (auxpri == 1)
{auxiden = p[t].identif;
aux…n = p[t].…n;
auxcuenta = p[t].cuenta;
auxpri = p[t].pri;
auxnivel = p[t].nivel;
p[t].identif = p[t+1].identif;
p[t].…n = p[t+1].…n;
p[t].cuenta = p[t+1].cuenta;
p[t].pri = p[t+1].pri;
p[t].nivel = p[t+1].nivel;
p[t+1].identif = auxiden;
p[t+1].…n = aux…n;
15.5. PROGRAMA DESARROLLADO 417
p[t+1].cuenta = auxcuenta;
p[t+1].pri = auxpri;
p[t+1].nivel = auxnivel;
{if (p[i].…n == 0)
{auxpri = 0;
cout <<”nn”;
p[i].cuenta = p[i].cuenta + 1;
if (p[i].…n == 0) p[i].…n = 3;
if (p[i].…n == 1)
cout <<”Proceso ”’ <<p[i].identif <<”’ interrumpido por entrada / salida. ”<< ”nn”;
p[i].nivel = p[i].nivel + 1;
if (p[i].…n > 0)
{ // Intercambio de contexto.
cambio = cambio + 1;
418 CAPÍTULO 15. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
auxiden = p[i].identif;
aux…n = p[i].…n;
auxcuenta = p[i].cuenta;
auxpri = p[i].pri;
auxnivel = p[i].nivel;
{p[k].identif = p[k+1].identif;
p[k].…n = p[k+1].…n;
p[k].cuenta = p[k+1].cuenta;
p[k].pri = p[k+1].pri;
p[k].nivel = p[k+1].nivel;
i = np;
aux…n = getch();
for (register int k=0; k<np; k++) // Determina si continúa la espera por entrada /
salida.
for (register int l=0; l<np; l++) // Determina si continúa la espera por tiempo.
{if (p[l].…n == 3)
15.5. PROGRAMA DESARROLLADO 419
if (aux…n == 1) aux…n = 0;
p[l].…n = aux…n;
}
void procesos::…nal(){
/* Cierre del archivo usado */
cout << ”Se sugiere visualizar su contenido con el Notepad.exe de Windows. nn”;
fclose(text…le);
}
void main(){
/* Variables */
procesos p1;
/* Código */
420 CAPÍTULO 15. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
clrscr();
p1.inicio();
p1.introducir_datos();
p1.mostrar();
p1.…fo();
p1.mostrar();
p1.introducir_datos();
p1.mostrar();
p1.rrobin();
p1.mostrar();
p1.introducir_datos();
p1.mostrar();
p1.hrn();
p1.mostrar();
p1.introducir_datos();
p1.mostrar();
p1.rnm();
p1.mostrar();
p1.…nal();
getch();
}
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
16.1 Introducción
Una de las muchas de…niciones de Sistema Experto (SE) expresa que es un sistema infor-
mático que simula el proceso de aprendizaje, memorización, razonamiento, comunicación
y acción de un experto humano en una determinada rama de la ciencia, suministrando,
de esta forma, un consultor que puede sustituirle con unas ciertas garantías de éxito.
Otra de…nición [9, Castillo, Gutiérrez y Hadi] indica que un SE puede de…nirse como
un sistema informático (hardware y software) que simula a los expertos humanos en un
área de especialización dada.
Los SE constituyen un área dentro de un campo aún mayor llamado Inteligencia
Arti…cial (IA), que según Barr y Feigenbaum es la parte de la ciencia que se ocupa
del diseño de sistemas de computación inteligentes, es decir, sistemas que exhiben las
características que asociamos a la inteligencia en el comportamiento humano que se re…ere
a la comprensión del lenguaje, el aprendizaje, el razonamiento, la resolución de problemas,
etc.
La IA se propone combinar los métodos de búsqueda con grandes bases de conoci-
mientos especializados, investigando cómo adquirir, representar, organizar y aplicar cono-
cimiento a una gran variedad de problemas [13, Kvitca], es decir que la IA es la ciencia
que estudia cómo realizar programas que utilicen cada vez más tipos de conocimiento.
La profundización en el estudio de estos conceptos lleva, entre otras muchas cuestiones,
a la de considerar si los computadores pueden mostrar (o imitar) auténtica inteligencia,
con todas las implicancias sociales y de otros tipos que ello comprende [16, Penrose].
Los principales objetivos de los SE pueden resumirse en los siguientes:
425
426 CAPÍTULO 16. PAGINACIÓN DE MEMORIA VIRTUAL CON S. E.
² Adquirir conocimiento.
² Almacenar conocimiento.
² Razonar e inferir.
² Aprender.
² Propagar incertidumbre.
Las razones básicas para utilizar un SE son, entre otras, las que se mencionan a
continuación:
² Reducción de costos.
Uno de los posibles campos de aplicación de los SE lo constituyen los Sistemas Ope-
rativos y el Software de Base y de Aplicación de los sistemas computacionales.
En dicho sentido, se deben considerar las funciones, especialmente de los Sistemas Ope-
rativos, como administradores de los recursos computacionales, tales como el procesador,
la memoria principal, la memoria auxiliar, los periféricos, las operaciones de entrada /
salida, etc., puesto que para el cumplimiento de dichas funciones emplean distintas estra-
tegias que deben ser instrumentadas mediante módulos de software, siendo precisamente
allí donde cabría considerar la posibilidad de utilizar SE para instrumentar las mismas y
evaluar “inteligentemente” cuál sería la más conveniente en cada caso.
En este sentido es preciso señalar que no siempre los Sistemas Operativos actúan frente
a la administración de recursos eligiendo la estrategia más adecuada para cada caso, sino
que por el contrario utilizan siempre la misma estrategia, que obviamente no es en todos
los casos la más adecuada.
16.2. OBJETIVO DEL CASO DE ESTUDIO 427
1. Almacenamiento real:
1. “Estrategias de búsqueda”:
² Tratan de los casos en que una página o segmento deben ser traídos del alma-
cenamiento 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.
² Las “estrategias de búsqueda anticipada” intentan determinar por adelantado a
qué páginas o segmentos hará referencia un proceso para traerlos al almacena-
miento primario antes de ser explícitamente referenciados.
2. “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.
3. “Estrategias de reposición”:
² El principio de optimización.
430 CAPÍTULO 16. PAGINACIÓN DE MEMORIA VIRTUAL CON S. E.
² No usada recientemente.
Las ideas básicas de las distintas “estrategias de reposición” son las que se detallan
seguidamente:
El principio de optimización:
² Todas las páginas del almacenamiento principal deben tener la misma probabilidad
de ser reemplazadas.
² Para reemplazar una página, se selecciona aquella que ha estado más tiempo alma-
cenada.
² Belady, Nelson y Shedler descubrieron que con la reposición FIFO, ciertos patrones
de referencias de páginas causan más fallos de páginas cuando se aumenta el número
de marcos (celdas) de páginas asignados a un proceso: en esto consiste la “anomalía
FIFO”.
A FALLO A - - A FALLO A - - -
B FALLO B A - B FALLO B A - -
C FALLO C B A C FALLO C B A -
D FALLO D C B D FALLO D C B A
A FALLO A D C A NO FALLO D C B A
B FALLO B A D B NO FALLO D C B A
E FALLO E B A E FALLO E D C B
A NO FALLO E B A A FALLO A E D C
B NO FALLO E B A B FALLO B A E D
C FALLO C E B C FALLO C B A E
D FALLO D C E D FALLO D C B A
E NO FALLO D C E E FALLO E D C B
² Esta estrategia selecciona para ser reemplazada la página que no ha sido usada
durante el mayor período de tiempo.
² Requiere que cada página reciba un “sello de tiempo” cada vez que se referencia:
² La página seleccionada para reemplazo podría ser la próxima en ser requerida, por lo
cual habría que paginarla de nuevo al almacenamiento principal casi de inmediato.
² La página que será reemplazada es aquella que ha sido usada con menos frecuencia
o que ha sido referida con menos intensidad.
– Ejemplo: La página de uso menos frecuente puede ser la página de entrada más
reciente al almacenamiento principal, por lo que existe una alta probabilidad
de que sea usada de inmediato.
² Presupone que las páginas que no han tenido uso reciente tienen poca probabilidad
de ser usadas en el futuro próximo y pueden ser reemplazadas por otras nuevas.
– “bit referenciado”:
¤ = 0 si la página no ha sido referenciada.
¤ = 1 si la página ha sido referenciada.
– “bit modi…cado” (también llamado “bit sucio”):
¤ = 0 si la página no ha sido modi…cada.
¤ = 1 si la página ha sido modi…cada.
² La selección de la página que será reemplazada comienza buscando una página que
no ha sido referenciada, pero si no la encuentra, habrá que reemplazar una página
que ha sido referenciada.
² Con el transcurso del tiempo la mayoría de los “bits referenciados” serán activados
y como consecuencia:
– Se pierde la capacidad para distinguir las páginas más deseables para ser reem-
plazadas.
– Para evitarlo se ajustan periódicamente todos los “bits referenciados” a “0”:
¤ Se logra un nuevo inicio.
¤ Se vuelve vulnerable al reemplazo aún a las páginas activas, pero solo bre-
vemente, mientras se reajustan los bits.
² Question Editor3 :
² Knowledge Acquisition4 :
² User Interface5 :
Principio de optimización
Single
Null
Null
Null
Null
NoTxt
NoPic
Reposición FIFO
Single
Single
Null
Null
Null
NoTxt
NoPic
16.5. DESCRIPCIÓN DEL EJERCICIO EFECTUADO 437
Single
Single
NoTxt
NoPic
Single
Single
Menos de 50 veces
Null
Null
Null
Null
NoTxt
NoPic
1.5
Single
Single
No referenciada
Sí referenciada y no modi…cada
Sí referenciada y sí modi…cada
Null
Null
Null
Null
Null
Null
NoTxt
16.5. DESCRIPCIÓN DEL EJERCICIO EFECTUADO 439
NoPic
Question 3=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 1=0 0 0 0 0 0 0 0 0
Question 2=0 0 0 0 0 0 0 0 0
Question 3=0 0 0 0 0 0 0 0 0
Question 4=0 0 0 0 0 0 0 0 0
Question 5=0 0 0 0 0 0 0 0 0
Question 3=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 4=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 5=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 2=0 0 0 0 0 0 0 0 0
Question 3=0 0 0 0 0 0 0 0 0
Question 4=0 0 0 0 0 0 0 0 0
Question 5=0 0 0 0 0 0 0 0 0
Question 3=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 4=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 4=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 1=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 3=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 4=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 1=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 3=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 4=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 1=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 3=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 3=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 3=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 3=10 -10 -10 -10 -10 -10 -10 -10 -10
Question 1=10 -10 -10 -10 -10 -10 -10 -10 -10
por parte del Sistema Operativo, por ejemplo, cuando se pretende optimizar la plani…-
cación del procesador (o procesadores) mediante un esquema de plani…cación de niveles
múltiples, es decir cuando para efectuar la asignación del procesador a los distintos pro-
cesos o cuando se debe seleccionar una página para reposición, no se tiene solo en cuenta
una estrategia pura de asignación de procesador ni una estrategia pura de reposición de
páginas, sino que por el contrario, ambas estrategias intercambian información y tratan
de tomar decisiones teniendo en cuenta no solo la situación propia del recurso que deben
administrar de manera directa (procesador o memoria) sino también la situación especí…-
ca del otro recurso administrado por una estrategia de otro tipo, pero con el objetivo de
lograr decisiones de administración de recursos que tengan una visión más amplia y un
objetivo de optimización global y no solo local de cada recurso administrado.
n = Length[Prior], m = Length[DatosPagina]},
Print[”********************************************”];
Print[”********************************************”];
Do[
Posterior = {};
* Prior1[[i]]]]
, {i, 1, n}];
aux1 = Sort[aux1];
Print[” ”, Pautas[[Abs[DatosPagina[[j]]]]]];
Print[” ”];
, {i, n, 1, -1}];
, {j, 1, m}];
Print[”****************************************************”];
Print[”Resultado …nal:”];
Print[” ”];
, {i, n, 1, -1}];
Print[”****************************************************”];
”Página no referenciada”,
Verosimilitudes =
DatosPagina =
********************************************
********************************************
Página no referenciada
****************************************************
Resultado …nal:
****************************************************
Este programa ayuda a comprender las estrategias consideradas, ya que para una
página con un “per…l” determinado, es decir con determinadas características, indica bajo
qué estrategias es más probable que dicha página sea seleccionada para el desalojo.
En este caso se tiene en cuenta para el análisis la información propia de una página
en particular y se despliega en pantalla cómo evolucionan los cálculos hasta concluir con
todo el análisis de la información suministrada con cada página, teniendo en cuenta los
valores de probabilidades asignados en el programa “a priori”.
Además se han efectuado algunas modi…caciones al programa inicial “paginas.ma” pa-
ra permitirle realizar el análisis de un gran número de páginas generadas aleatoriamente
(simulando de esta manera situaciones reales de páginas en un sistema de computación),
para realizar con los resultados obtenidos un sencillo grá…co de número de veces que cada
una de las estrategias consideradas resulta la más apropiada, según cada página conside-
rada, para producir el desalojo de la misma. Este segundo programa y el resultado de
algunas ejecuciones se encuentran en el archivo “paginas2.ma”, cuyo contenido se detalla
seguidamente:
n = Length[Prior], m = Length[DatosPagina]},
Do[
Posterior = {};
* Prior1[[i]]]]
, {i, 1, n}];
aux1 = Sort[aux1];
, {j, 1, m}];
Do[
16.6. PROGRAMAS DESARROLLADOS Y DATOS Y EJECUCIONES 459
,{k1, 1, n}
];
”Página no referenciada”,
Verosimilitudes =
Print[”********************************************”];
Print[”********************************************”];
Print[” ”];
Print[” ”];
Do[
DatosPagina =
posi = posinit;
];
];
];
];
n = Length[Prior];
aux1 = Sort[aux1];
, {i, n, 1, -1}
16.6. PROGRAMAS DESARROLLADOS Y DATOS Y EJECUCIONES 463
];
Print[” ”];
Print[”****************************************************”];
Print[” ”];
Print[”************************************”];
ListPlot[Contador,PlotStyle->
{RGBColor[1,0.6,0.3],PointSize[0.15]},
AxesLabel->{”Estrategias”,”Ocurrencias”},
AxesOrigin->{0,0}];
********************************************
********************************************
****************************************************
464 CAPÍTULO 16. PAGINACIÓN DE MEMORIA VIRTUAL CON S. E.
************************************
17.1 Introducción
467
468 CAPÍTULO 17. SUBSISTEMA DE DISCO DE UNA PETICIÓN
Solución al caso I
“S i " es el estado del sistema cuando hay “i” peticiones de disco al dispositivo de
servicio de disco.
La tasa de llegadas de peticiones es independiente del estado del sistema:
² di = 0 con i = 0.
² di = ¹ con i = 1, 2, 3, ...
² bi = ¸ con i = 0, 1, 2, ...
² Solo una petición puede ser servida en un momento dado y se sirve a una tasa ¹.
² ¹ > ¸:
P
i Pi = 1.
P1 = (¸ / ¹) P0 .
P2 = (¸ / ¹) P1 = (¸ / ¹)2 P0 .
Pi = (¸ / ¹)i P0 .
P P i
i Pi = 1 = i (¸ / ¹) P0 = 1/ [1 - (¸ / ¹)] P0 .
E(i) = (¸ / ¹) [1 - (¸ / ¹)¡1 ].
(* Teoría de Colas *)
(* Caso 1: El subsistema de disco solo puede dar servicio a una petición a la vez. *)
(* Referencias y aclaraciones:
mu = 1/Es(s)
lambda = 1/Es(tau)
470 CAPÍTULO 17. SUBSISTEMA DE DISCO DE UNA PETICIÓN
Es(tau) = 1/lambda
mu > lambda: Restricción para que la longitud de la cola de peticiones no crezca inde…-
nidamente.
Pn: Probabilidad de que haya ”n” clientes en el sistema de colas en estado estable.
P0 = 1-(lambda/mu)
Pri = (1-(lambda/mu))(lambda/mu)^i
(i=0,1,2,3,..)
Es(i): N± promedio de peticiones pendientes.
Es(i) = (lambda/mu)(1-(lambda/mu))^(-1) *)
BeginPackage[”Colas1pn‘”]
<<Statistics‘LinearRegression‘
Colas1pn::usage=
”Colas1pn[mu,lambda,i]
Análisis del rendimiento de un subsistema
petición a la vez.
Colas1pnAux[inmu,inlambda,ini];
Colas1pnAux[inmu_,inlambda_,ini_]:=
Caso1[mu_,lambda_,i_]:=
{coef=N[lambda/mu,6],
Pri=N[(1.-lambda/mu)*(lambda/mu)^i,6],
Es=N[lambda/mu*(1.-lambda/mu)^(-1.),6],
Print[”subsistema de disco.”]
Print[”petición a la vez.”]
Print[N[{mu,lambda,coef}]]
Print[”0,1,2,3,4,...peticiones”]
Print[N[Pri]]
Print[”pendientes es el siguiente:”]
Print[N[Es]]
Print[”******************************”]
AppendTo[listacoef,coef]
AppendTo[listapetpend,Es]
472 CAPÍTULO 17. SUBSISTEMA DE DISCO DE UNA PETICIÓN
AppendTo[result,{coef,Es}]
];
Modelo1[mum_,lambdam_,im_]:=
Caso1[i,j,{Range[0,im,1]}]
];
];
];
listacoef={};
listapetpend={};
result={};
Modelo1[inmu,inlambda,ini];
Print[” ”];
Print[”*****************************”];
Print[”*****************************”];
Print[listacoef];
Print[”Promedio de peticiones”];
Print[listapetpend];
Print[”Pares (coe…cientes,promedio):”];
Print[result];
ListPlot[result,PlotStyle->
{RGBColor[1,0.6,0.3],PointSize[0.023]},
AxesLabel->{Coe…cientes,Esperas},
AxesOrigin->{0,0}];
Regress[result,{1,x,x^2,x^3},x,
OutputList->{BestFit,
BestFitCoe¢cients,ANOVATable,
Con…denceIntervalTable,
CovarianceMatrix,CorrelationMatrix,
EstimatedVariance,FitResiduals,
ParameterTable,PredictedResponse,
RSquared,AdjustedRSquared}]
EndPackage[];
<<Examples‘Colas1pn‘
474 CAPÍTULO 17. SUBSISTEMA DE DISCO DE UNA PETICIÓN
? Colas1pn
Colas1pn[mu,lambda,i]
Análisis del rendimiento de un subsistema de disco que solo puede dar servicio a una
petición a la vez.
Colocar los valores máximos para mu, lambda y el número de peticiones pendientes.
Colas1pn[20,10,3]
******************************
Análisis del rendimiento de un subsistema de disco.
******************************
1.
******************************
2.33333
******************************
9.
******************************
0.0526316
******************************
0.176471
******************************
0.333333
******************************
0.538462
******************************
0.818182
******************************
*****************************
*****************************
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45}
{0.111111, 0.428571, 1., 2.33333, 9., 0.0526316, 0.176471, 0.333333, 0.538462, 0.818182}
Pares (coe…cientes,promedio):
{{0.1, 0.111111}, {0.3, 0.428571}, {0.5, 1.}, {0.7, 2.33333}, {0.9, 9.}, {0.05, 0.0526316},
{Statistics‘LinearRegression‘BestFit ->
17.7. RESULTADOS Y CONCLUSIONES 479
Statistics‘LinearRegression‘BestFitCoe¢cients ->
18.1 Introducción
Para el desarrollo del presente caso de estudio se ha utilizado el software Mathematica,
una muy poderosa herramienta para el cálculo numérico y el especialmente para el cálculo
simbólico [5, Castillo, Iglesias, Gutiérrez, Alvarez y Cobo].
El software mencionado se ha utilizado para la realización de un algoritmo que imple-
mente el análisis de rendimiento de un subsistema de disco de varias peticiones a la
vez, utilizando Teoría de Colas.
El estudio de las simulaciones efectuadas con el algoritmo señalado permite evaluar el
comportamiento esperado de un subsistema de disco de varias peticiones a la vez cuando
es sometido a distintas cargas de trabajo, es decir a conjuntos de peticiones de operaciones
de acceso a los discos que con…guran cantidades de trabajo distintas a ser atendidas.
La posibilidad de atender varias peticiones en paralelo requiere que el subsistema de
disco disponga de un número elevado de brazos de acceso, que además sean independientes
en sus movimientos, de tal manera que cada uno de ellos pueda atender a un petición.
Los aspectos teóricos relacionados han sido desarrollados en los Capítulos “Entrada /
Salida” y “Modelado Analítico en Relación al Rendimiento”.
481
482 CAPÍTULO 18. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
también un grá…co ilustrativo de los mismos, todo ello incluido en el archivo de ejecución
y de resultados (Colas2en.ma).
² Cada brazo puede dar servicio a una petición de disco a la misma tasa “¹".
Solución al caso II
Con “i” peticiones siendo servidas:
² La probabilidad de que una petición en particular acabe siendo servida dentro del
siguiente “ ¢t” es “ ¹¢t”.
² bi = ¸ con i = 0, 1, 2, ...
² di = 0 con i = 0.
² di = i¹ con i = 1, 2, 3, ...
Ningún cliente tiene que esperar ya que se suponen in…nitos servidores en paralelo.
Se utilizan las relaciones:
18.4. DESCRIPCIÓN DEL ALGORITMO UTILIZADO 483
P1 = (¸ / ¹) P0 .
P2 = (¸ / 2¹) P1 = (1 / 2) (¸ / ¹)2 P0 .
Pi = (1 / i!) (¸ / ¹)i P0 .
P P
i Pi = 1 = i (1 / i!) (¸ / ¹) P0 .
i
P
n (x / n!) = e .
n x
P P i ¸=¹
i Pi = 1 = i (1 / i!) (¸ / ¹) P0 = e P0 .
P0 = e¡¸=¹ .
E(i) = (¸ / ¹).
Conclusiones:
(* TEORIA DE COLAS *)
(* Caso 2: El subsistema de disco, que posee varios brazos móviles, puede dar
(* Referencias y aclaraciones:
mu = 1/Es(s)
lambda = 1/Es(tau)
Es(tau) = 1/lambda
mu > lambda: Restricción para que la longitud de la cola de peticiones no crezca inde…-
nidamente.
Pn: Probabilidad de que haya ”n” clientes en el sistema de colas en estado estable.
P0 = E^(-(lambda/mu))
Pri = ((lambda/mu)^i)(E^(-(lambda/mu))/Factorial[i])
(i=0,1,2,3,..)
Es(i) = (lambda/mu) *)
18.5. PROGRAMA DESARROLLADO 485
BeginPackage[”Colas2pn‘”]
<<Statistics‘LinearRegression‘
Colas2pn::usage=
”Colas2pn[mu,lambda,i]
Colas2pn[inmu_,inlambda_,ini_]:=
Colas2pnAux[inmu,inlambda,ini];
Colas2pnAux[inmu_,inlambda_,ini_]:=
result},
Caso2[mu_,lambda_,i_]:=
{coef=N[lambda/mu,6],
Pri=N[((lambda/mu)^i)*((E^(-(lambda/mu)))/(Factorial[i])),6],
Es=N[lambda/mu,6],
Print[”subsistema de disco.”]
Print[”peticiones a la vez.”]
486 CAPÍTULO 18. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
Print[N[{mu,lambda,coef}]]
Print[”0,1,2,3,4,...peticiones”]
Print[N[Pri]]
Print[”pendientes es el siguiente:”]
Print[N[Es]]
Print[”******************************”]
AppendTo[listacoef,coef]
AppendTo[listapetpend,Es]
AppendTo[result,{coef,Es}]
];
Modelo2[mum_,lambdam_,im_]:=
Caso2[i,j,{Range[0,im,1]}]
];
18.5. PROGRAMA DESARROLLADO 487
];
];
listacoef={};
listapetpend={};
result={};
Modelo2[inmu,inlambda,ini];
Print[” ”];
Print[”*****************************”];
Print[”*****************************”];
Print[listacoef];
Print[”Promedio de peticiones”];
Print[listapetpend];
Print[”Pares (coe…cientes,promedio):”];
Print[result];
ListPlot[result,PlotStyle->
{RGBColor[1,0.6,0.3],PointSize[0.023]},
AxesLabel->{Coe…cientes,Esperas},
AxesOrigin->{0,0}];
Regress[result,{1,x},x,
OutputList->{BestFit,
488 CAPÍTULO 18. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
BestFitCoe¢cients,ANOVATable,
Con…denceIntervalTable,
CovarianceMatrix,CorrelationMatrix,
EstimatedVariance,FitResiduals,
ParameterTable,PredictedResponse,
RSquared,AdjustedRSquared}]
EndPackage[];
<<Examples‘Colas2pn‘
? Colas2pn
Colocar los valores máximos para mu, lambda y el número de peticiones pendientes.
Colas2pn[20,10,3]
0.1
******************************
0.3
******************************
0.5
******************************
0.7
******************************
0.9
******************************
0.05
******************************
0.15
******************************
0.25
******************************
0.35
******************************
0.45
******************************
*****************************
*****************************
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45}
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45}
Pares (coe…cientes,promedio):
{{0.1, 0.1}, {0.3, 0.3}, {0.5, 0.5}, {0.7, 0.7}, {0.9, 0.9}, {0.05, 0.05},
18.7. RESULTADOS Y CONCLUSIONES 493
{Statistics‘LinearRegression‘BestFit ->
-2.37982 10¡17 + 1. x,
Statistics‘LinearRegression‘BestFitCoe¢cients ->
Como era de esperarse, se observa que en todos los casos, la forma de la curva de los
grá…cos obtenidos es similar, apreciándose un muy buen ajuste de los valores obtenidos (y
gra…cados) a una recta.
Asimismo se observa un leve impacto en los tiempos de espera ante incrementos de la
carga de trabajo, expresada según los coe…cientes considerados, obteniéndose que el número
promedio de peticiones pendientes tiende a 1.
Capítulo 19
Optimización de Operaciones de
Búsqueda en Disco con Redes
Neuronales
19.1 Introducción
Para el desarrollo del presente caso de estudio se ha utilizado el software Mathematica,
una muy poderosa herramienta para el cálculo numérico y el especialmente para el cálculo
simbólico [5, Castillo, Iglesias, Gutiérrez, Alvarez y Cobo], como así también software
especí…co de redes neuronales arti…ciales, a saber: Nndt, Nnmodel y Qnet [10, Hilera
y Martínez].
Las operaciones de acceso a disco, consecuencia de los requerimientos de lectura y/o
grabación que efectúan al Sistema Operativo los distintos procesos, son la causa de con-
siderables demoras en los tiempos de respuesta; dichas demoras son especialmente signi…-
cativas si consideramos que las operaciones de procesador demandan tiempos de ciclo del
orden del nanosegundo, en tanto que las operaciones de acceso a disco insumen tiempos
del orden del milisegundo, es decir que la diferencia es de seis órdenes de magnitud.
Asimismo, si consideramos cómo se compone el tiempo de acceso a disco, encontramos
que el mismo está integrado por el tiempo de búsqueda (movimiento del mecanismo de
acceso que contiene el cabezal de lectura / grabación hasta posicionarse en el cilindro
que contiene a la pista que aloja al registro que se debe acceder), el tiempo de demora
rotacional o latencia (tiempo que demora la rotación del disco hasta que el registro que se
pretende acceder queda bajo el cabezal de lectura / grabación, previamente posicionado
en el cilindro que aloja a la pista correcta) y el tiempo de transferencia de la información
propiamente dicha (lectura o grabación) [7, Deitel] y [23, Tanenbaum].
Además de lo indicado precedentemente se debe señalar que de los tres tiempos mencio-
nados, el tiempo de búsqueda generalmente es el mayor en la generalidad de los dispositivos
de disco, razón por la cual se ha tratado de disminuirlo permanentemente, habiéndose lle-
gado (con modi…caciones de diseño y de tecnología de fabricación), en algunos modelos
de disco, a aproximarlo al tiempo de demora rotacional o latencia.
Otra vía para mejorar los tiempos de acceso a disco y por ende la performance de los
procesos, consiste en optimizar los algoritmos de búsqueda, teniendo en cuenta que cuando
495
496 CAPÍTULO 19. BÚSQUEDA EN DISCO CON REDES NEURONALES
Conforme a lo antes indicado, el objetivo del caso de estudio desarrollado fue el de pro-
gramar un paquete con Mathematica (Colas3pn.m) que implementara los principales
algoritmos de búsqueda y que permitiera generar archivos para entrenamiento y testeo de
redes neuronales (Colas3en.ma y Colas3fn.txt) y posteriormente efectuar comparacio-
nes entre los distintos modelos y herramientas de redes utilizados.
El paquete desarrollado con Mathematica permite analizar un conjunto de requerimien-
tos con tres algoritmos de búsqueda distintos, calculando para cada uno de ellos la cantidad
de movimientos del mecanismo de acceso (número de cilindros del disco recorridos por el
mecanismo de acceso) y señalando en cada caso cuál es el más adecuado según el criterio
indicado de minimizar los movimientos; además de desplegar los datos y resultados en
pantalla, el paquete genera un archivo de texto que permite entrenar y testear las redes
neuronales, teniendo presente que se trata de un problema de clasi…cación.
Una descripción detallada del problema planteado puede consultarse en el Capítulo “En-
trada / Salida”, siendo especialmente pertinentes los temas relacionados con Algoritmos
de Programación del Brazo del Disco y Optimización de la Búsqueda en Discos.
19.4. DESCRIPCIÓN DE LOS ALGORITMOS UTILIZADOS 497
² SSF: Las operaciones requeridas se atienden dando prioridad a las que signi…can
menos movimiento (salto de cilindros) del mecanismo de acceso.
² Número de ciclos que se evaluarán, es decir número de registros que tendrá el archivo
generado.
498 CAPÍTULO 19. BÚSQUEDA EN DISCO CON REDES NEURONALES
Es necesario señalar además que las peticiones de acceso a determinadas pistas del disco
se expresan por el número del cilindro al que pertenece la pista, siendo estos requerimientos
generados (por el paquete) al azar, al igual que el número que determina la posición inicial
del mecanismo de acceso antes de atender las peticiones de cada ciclo.
Respecto del archivo generado, el mismo tendrá un tamaño variable según los datos
que se hayan suministrado al paquete que lo produce, siendo posible efectuar la generación
del archivo en varias etapas, es decir en sucesivas ejecuciones del paquete, en cuyo caso
y por una simple cuestión de estructura de los datos, el número de cilindros y el número
de peticiones por ciclo deberán ser los mismos, ya que de lo contrario el archivo generado
no podrá ser utilizado para el entrenamiento y testeo de las redes directamente por no ser
homogéneo, sino que habría que segmentarlo con algún editor previamente.
El código del programa desarrollado (Colas3pn.m) es el siguiente:
requerimientos. *)
(* Referencias y aclaraciones:
plani…cación FCFS.
plani…cación SSF.
plani…cación SCAN. *)
BeginPackage[”Colas3pn‘”]
Colas3pn::usage=
”Colas3pn[cildisc,totpetic,numpetic] nn
numpetic.”
Colas3pn[incildisc_,intotpetic_,innumpetic_]:=
Colas3pnAux[incildisc,intotpetic,innumpetic];
Colas3pnAux[incildisc_,intotpetic_,innumpetic_]:=
posinitaux},
Caso3[cildisc_,totpetic_,numpetic_]:=
{totpetic}];
tfcfs=0;
tssf=0;
tscan=0;
fcfs=0;
ssf=0;
scan=0;
indice=0;
tfcfs=Abs[peticalea[[1]]-posinit];
tfcfs=tfcfs+Abs[peticalea[[j]]-peticalea[[j-1]]];
];
peticiones=peticalea;
19.5. PROGRAMA DESARROLLADO 501
posinitaux=posinit;
movmin=200000;
peticaux=Abs[posinitaux-peticiones];
If[peticaux[[j]]<movmin, movmin=peticaux[[j]];
indice=j];
];
tssf=tssf+movmin;
peticiones[[indice]]=10000;
posinitaux=peticalea[[indice]];
];
peticiones=peticalea;
If[peticiones[[j]]<=posinit, peticiones[[j]]=posinit;];
];
peticiones=Sort[peticiones];
tscan=Abs[peticiones[[1]]-posinit];
tscan=tscan+Abs[peticiones[[j]]-peticiones[[j-1]]];
];
posinitaux=peticiones[[totpetic]];
peticiones=peticalea;
If[peticiones[[j]]>=posinit, peticiones[[j]]=posinitaux;];
];
peticiones=Reverse[Sort[peticiones]];
502 CAPÍTULO 19. BÚSQUEDA EN DISCO CON REDES NEURONALES
tscan=tscan+Abs[peticiones[[1]]-posinitaux];
tscan=tscan+Abs[peticiones[[j]]-peticiones[[j-1]]];
];
result={tfcfs,tssf,tscan};
resultclas=Sort[result];
If[tfcfs==resultclas[[1]], fcfs=1,
If[tssf==resultclas[[1]], ssf=1,
If[tscan==resultclas[[1]], scan=1
];
];
];
Print[”algoritmos de búsqueda.”];
Print[{cildisc,totpetic,numpetic}];
Print[posinit];
Print[”es la siguiente:”];
Print[peticalea];
Print[result];
19.5. PROGRAMA DESARROLLADO 503
If[fcfs==1, Print[”FCFS”],
If[ssf==1, Print[”SSF”],
If[scan==1, Print[”SCAN”]
];
];
];
Print[{posinit,peticalea,result,fcfs,ssf,scan}];
PutAppend[{posinit,peticalea,fcfs,ssf,scan},
”D:nWnmath22nTrabajonColas3fn.txt”];
Print[”******************************”];
);
Modelo3[cildiscm_,totpeticm_,numpeticm_]:=
Caso3[cildiscm,totpeticm,i]
];
peticalea={};
peticiones={};
peticaux={};
result={};
resultclas={};
Print[” ”];
(* Put[{}, ”D:nWnmath22nTrabajonColas3fn.txt”]; *)
Modelo3[incildisc,intotpetic,innumpetic];
Print[”************************************************”];
Print[”************************************************”];
EndPackage[];
² Número del cilindro que corresponde a la posición inicial del mecanismo de acceso.
² Lista de peticiones atendidas en un ciclo, las que están representadas por el número
del cilindro que aloja en cada caso a la pista que debe ser accedida (interesa el
cilindro y no la pista por cuanto acceder a una pista situada en el mismo cilindro
que otra no signi…ca un movimiento de posicionamiento del mecanismo de acceso, es
decir no signi…ca un salto de cilindro); además se debe tener presente que el número
de peticiones atendidas en un ciclo es un dato de entrada, en tanto que la lista de
peticiones de cada ciclo se genera al azar.
² Cali…cación obtenida por el método de búsqueda (algoritmo) FCFS, donde cero (0)
signi…ca no seleccionado y uno (1) signi…ca seleccionado.
² Cali…cación obtenida por el método de búsqueda (algoritmo) SSF, donde cero (0)
signi…ca no seleccionado y uno (1) signi…ca seleccionado.
² Cali…cación obtenida por el método de búsqueda (algoritmo) SCAN, donde cero (0)
signi…ca no seleccionado y uno (1) signi…ca seleccionado.
<<Examples‘Colas3pn‘
? Colas3pn
Colas3pn[cildisc,totpetic,numpetic]
Cálculo del número de cilindros del disco recorridos por el mecanismo de acceso en las
operaciones de búsqueda de los cilindros requeridos según las peticiones de entrada
/ salida que precisan los procesos; generación del archivo de resultados correspon-
diente.
Colas3pn[40,5,100]
{40, 5, 1}
23
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
FCFS
******************************
{40, 5, 2}
506 CAPÍTULO 19. BÚSQUEDA EN DISCO CON REDES NEURONALES
14
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 3}
21
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 4}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 5}
32
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
************************************************
508 CAPÍTULO 19. BÚSQUEDA EN DISCO CON REDES NEURONALES
************************************************
² Funciones lineales.
² Funciones escalón.
² Funciones sigmoidales.
Las neuronas se pueden organizar en capas conectadas por varios tipos de uniones, a
saber:
² Conexiones laterales.
510 CAPÍTULO 19. BÚSQUEDA EN DISCO CON REDES NEURONALES
Una unidad se dice que está en la capa de entrada de una red neuronal (X, U), si es
la entrada de al menos una unidad procesadora de U y no es la salida de ninguna unidad
procesadora de U.
Una unidad se dice que está en la capa de salida de una red neuronal (X, U), si es la
salida de al menos una unidad procesadora de U y no es la entrada de ninguna unidad
procesadora de U.
Una unidad se dice que está en la capa intermedia u oculta de una red neuronal (X,
U), si es la entrada de al menos una unidad procesadora de U y, al mismo tiempo, es la
salida de al menos una unidad procesadora de U.
Una de las principales propiedades de las RNA es su capacidad de aprender a partir
de unos datos. Una vez que ha sido elegida la arquitectura de red para un problema
particular, los pesos de las conexiones se ajustan para codi…car la información contenida
en un conjunto de datos de entrenamiento.
Los principales métodos de aprendizaje son los siguientes [17, Castillo, Cobo, Gutiérrez
y Pruneda] :
² Aprendizaje supervisado.
² Aprendizaje no supervisado:
– Aprendizaje Hebbiano.
– Aprendizaje competitivo.
– Representación de características (Feature mapping).
Finalizado el proceso de aprendizaje de la red, con lo cual los pesos de la misma han
sido calculados, se debe comprobar la calidad del modelo resultante (validación), midiendo
los errores entre los valores de salida deseados y los obtenidos por la red neuronal; algunas
medidas estándard del error son:
² RMSE: Root Mean Square Error: raíz cuadrada del error cuadrático medio.
² Error máximo.
Las principales ventajas de la RNA son las siguientes [10, Hilera y Martínez]:
² Aprendizaje adaptativo.
² Autoorganización.
² Tolerancia a fallos.
Algunas de las posibles aplicaciones de las RNA están en el ámbito de las siguientes
disciplinas [10, Hilera y Martínez]:
² Biología.
² Empresa.
² Medio ambiente.
² Finanzas.
² Manufacturación.
² Medicina.
² Militares.
Por último y a los efectos de situar a las RNA dentro del mundo de la computación
en general y frente a la IA (Inteligencia Arti…cial) en particular, ver la Tabla 19.1 de la
página 511 [10, Hilera y Martínez].
Además, el producto incluye algoritmos para redes perceptrón multicapa (MLP: multi-
layer perceptron) de los tipos feed-forward y recurrente.
La red MLP es entrenada con el método Levenberg - Marquardt.
El entrenamiento requiere un grupo de señales de entrada y las correspondientes de
salida, almacenadas en un archivo referenciado como archivo de pattern. Este es el único
archivo que el usuario debe suministrar. Opcionalmente, ciertos parámetros que de…nen
las columnas del archivo de pattern, el tamaño de la red y la con…guración de la red,
pueden ser almacenados en un archivo referido como archivo de setup.
Nndt también incluye una rutina para presentación grá…ca de señales de salida, ac-
tivaciones de nodos, residuos y pesos durante la ejecución. La interface además provee
facilidades para el examen de activaciones de nodos y pesos así como modi…cación de
pesos.
Asimismo se incluye un archivo de help (ayuda) que puede consultarse en cualquier
momento de la ejecución de Nndt presionando F1.
Algunas de las muchas pantallas del producto pueden observarse en la Figura 19.1 de
la página 512 y en la Figura 19.2 de la página 513.
19.7. DESCRIPCIÓN DEL SOFTWARE DE RNA UTILIZADO 513
– Una matriz de testeo puede ser cargada desde datos no originalmente utilizados
para generar el modelo.
– Este análisis puede mostrar cuán sensitiva es una variable de salida si se efectúan
cambios en la entrada.
² DDE Interface:
Algunas de las muchas pantallas del producto pueden observarse en la Figura 19.3 de
la página 516, en la Figura 19.4 de la página 517, en la Figura 19.5 de la página 518, en
la Figura 19.6 de la página 519 y en la Figura 19.7 de la página 520.
516 CAPÍTULO 19. BÚSQUEDA EN DISCO CON REDES NEURONALES
Los resultados obtenidos se resumen en la Tabla 19.2 de la página 523, en la Tabla 19.3
de la página 523 y en la Tabla 19.4 de la página 524, pudiendo extraerse de las mismas
las siguientes conclusiones:
² Se efectuaron pruebas con distinto número de capas ocultas y distinto número de
neuronas por capa.
² En todos los casos los archivos de datos de entrenamiento y de testeo fueron los
mismos.
² El menor error (0,15679432) se logró con la con…guración de red 6:6:3:3, es decir con
2 capas ocultas de 6 y 3 neuronas respectivamente y luego de 274 iteraciones.
² Podría decirse que aún el error mínimo obtenido es relativamente alto.
Estudio y evaluación con la herramienta Nnmodel
Los resultados obtenidos se resumen en la Tabla 19.5 de la página 524, en la Tabla 19.6
de la página 525 y en la Tabla 19.7 de la página 525, pudiendo extraerse de las mismas
las siguientes conclusiones:
524 CAPÍTULO 19. BÚSQUEDA EN DISCO CON REDES NEURONALES
Prueba Error
N±
1 0,229280308
2 0,156794318
3 0,21210684
4 0,284308086
5 0,279096262
6 0,212079128
7 0,255048114
Promedios 0,232673294
² En todos los casos los archivos de datos fueron los mismos, pero utilizándose un
número variable de datos para entrenamiento y para testeo, seleccionando estos
últimos de distinta manera.
² El menor error (0,015253) se logró con la con…guración de red 6:9:3, es decir con 1
capa oculta de 9 neuronas y luego de 5000 iteraciones.
Prueba Error
N±
1 0,066045
2 0,06085
3 0,061114
4 0,104912
5 0,057495
6 0,015253
7 0,063339
Promedios 0,061286857
² En todos los casos los archivos de datos fueron los mismos, pero utilizándose un
número variable de datos para entrenamiento y para testeo, seleccionando estos
últimos de distinta manera.
² El menor error (0,159792) se logró con la con…guración de red 6:5:3, es decir con 1
capa oculta de 5 neuronas y luego de 10000 iteraciones.
conclusión …nal de que para los datos analizados, las con…guraciones de red empleadas,
las herramientas consideradas y los parámetros utilizados, el menor error corresponde a la
herramienta Nnmodel.
Asimismo puede concluirse que la utilización de tecnología de redes neuronales arti…-
ciales implantada en el …rmware de los controladores de operaciones de entrada / salida
permitiría de una manera muy rápida y a un muy bajo nivel, seleccionar cuál sería el
algoritmo de plani…cación de la búsqueda en disco más adecuado para cada conjunto de
peticiones pendientes en un momento dado, sin la intervención del sistema operativo para
la ejecución del algoritmo de plani…cación por software, teniendo además en cuenta que
para cada conjunto de peticiones la RNA podría de hecho aplicar el algoritmo más ade-
cuado, en vez de siempre el mismo algoritmo ejecutado a nivel del sistema operativo, como
frecuentemente ocurre, liberando además ciclos de cpu.
Otra posibilidad sería considerar el desarrollo de un sistema experto que tomara las
decisiones que acá se dejan en el ámbito de la RNA, con lo que se lograría mayor precisión
en los resultados, es decir que sería mayor el número de aciertos en seleccionar el algoritmo
óptimo para cada caso, pero posiblemente se perdería en performance debido a la mayor
cantidad y complejidad del código que debería ejecutar el sistema experto.
19.8. RESULTADOS Y CONCLUSIONES 527
20.1 Introducción
Para el desarrollo del presente caso de estudio se ha utilizado el lenguaje Java, una muy
poderosa herramienta para el desarrollo orientado a objetos, la utilización a través de Inter-
net, el desarrollo multiplataforma y especialmente para la explotación de la concurrencia
a nivel de programa, mediante la utilización de hilos de ejecución o procesos ligeros, según
se los designa en la bibliografía existente [25, Tanenbaum] y [20, Castillo, Cobo, Gómez y
Solares].
Los hilos o procesos ligeros son una parte de código o miniprograma que puede ser
ejecutada independientemente, de forma que una aplicación o un applet puede tener varios
hilos ejecutándose simultáneamente y efectuando distintas tareas; estos hilos se encuentran
dentro de un programa y son parte de él.
Los hilos, a veces también llamados contextos de ejecución, pueden ser utilizados para
la implementación de algoritmos paralelos o procesos concurrentes, sin ser necesario dis-
poner de equipos con estructura de multiprocesador. En el caso de un solo procesador,
los procesos ligeros incorporan mecanismos para compartirlo, estableciéndose prioridades
entre ellos y también facilidades de sincronización, cuando es necesario.
Los aspectos teóricos relacionados con los hilos (threads) han sido desarrollados en el
Capítulo “Procesos y Procesadores en Sistemas Distribuidos”.
Conforme a lo antes indicado, el objetivo del caso de estudio desarrollado fue el de pro-
gramar una aplicación con Java (Hilos.java) que implementara el problema de “procesos
productores y consumidores” y que permitiera generar un archivo reutilizable de segui-
miento (Hilos.txt y su versión formateada Hilos.dat) y posteriormente efectuar análisis
de la forma en que se ha desarrollado la ejecución concurrente de los hilos y la sincroniza-
ción de los mismos, que es el verdadero objetivo, más allá de la utilización como ejemplo
del problema de productores y consumidores.
529
530 CAPÍTULO 20. CONCURRENCIA E HILOS CON JAVA
² Los procesos consumidores simulan retirar, es decir “leer” información del grupo de
bu¤ers disponibles, que previamente debió ser “cargado” por los procesos producto-
res.
² Los procesos productores solo actúan cuando el nivel de bu¤ers grabados está por
debajo de cierto límite, llamado límite de reposición, que es un dato variable que se
ingresa como parámetro de con…guración de la simulación, al igual que la cantidad
de bu¤ers grabados en cada reposición.
² Los procesos consumidores pueden retirar (leer) bu¤ers en número variable pero
hasta cierto límite, que también es un dato variable que se ingresa como parámetro
de con…guración de la simulación.
² Debido a que los procesos productores solo actúan cuando el número de bu¤ers
disponibles está por debajo del nivel de reposición y a que la cantidad de reposición
es …nita, se asegura que el número de bu¤ers del pool será siempre …nito.
Respecto del archivo generado, el mismo tendrá un tamaño variable según los datos
que se hayan suministrado a la ejecución que lo produce, especialmente el tiempo de
ejecución; es preciso señalar además que el archivo es reutilizable, es decir que se borra
automáticamente al iniciar cada ejecución.
El código del programa desarrollado (Hilos.java) es el siguiente:
//
//
// * Los hilos consumidores leen (y liberan) bu¤ers del pool de bu¤ers disponibles.
//
import java.io.*;
import java.util.*;
import java.util.Date;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
532 CAPÍTULO 20. CONCURRENCIA E HILOS CON JAVA
import java.applet.*;
import java.applet.Applet;
import java.math.*;
import java.text.*;
import java.lang.String;
import java.lang.*;
implements ActionListener {
VentanaDialogCH ventana;
SimpleDialogCH dialog;
TextArea textArea;
Button boton1;
public Hilos() {
MenuBar barra;
// Menú principal.
setMenuBar(barra);
barra.add(cargadatos);
cardatos.addActionListener(this);
cargadatos.add(cardatos);
ejecuc.addActionListener(this);
20.5. PROGRAMA DESARROLLADO 533
cargadatos.add(ejecuc);
listaeje.addActionListener(this);
cargadatos.add(listaeje);
barra.add(ayuda);
ayulis.addActionListener(this);
ayuda.add(ayulis);
barra.add(salir);
…n.addActionListener(this);
salir.add(…n);
barra.add(acerca);
acercade.addActionListener(this);
acerca.add(acercade);
addWindowListener(new WindowAdapter() {
System.exit(0);
});
System.exit(0);
ventana.setVisible(true);
ventana.setBackground(Color.yellow);
ventana.setForeground(Color.red);
ventana.setSize(new Dimension(600,400));
ventana.setVisible(true);
20.5. PROGRAMA DESARROLLADO 535
ventana.setBackground(Color.red);
ventana.setForeground(Color.yellow);
ventana.setSize(new Dimension(600,400));
ventana.setVisible(true);
ventana.setBackground(Color.green);
ventana.setForeground(Color.orange);
ventana.setSize(new Dimension(600,400));
ventana.setTitle(”Lista Ayuda”);
ventana.setVisible(true);
ventana.setBackground(Color.cyan);
ventana.setForeground(Color.magenta);
ventana.setSize(new Dimension(600,400));
ventana.setVisible(true);
ventana.setBackground(Color.orange);
ventana.setForeground(Color.blue);
ventana.setSize(new Dimension(600,400));
menus.setVisible(true);
menus.setBackground(Color.cyan);
menus.setSize(new Dimension(850,650));
imagen1.setTitle(”???????”);
imagen1.setVisible(true);
imagen1.setBackground(Color.orange);
imagen1.setSize(new Dimension(100,100));
SimpleDialogCH dialog;
TextArea textArea;
20.5. PROGRAMA DESARROLLADO 537
Button boton1;
public VentanaDialogCH(){
textArea=new TextArea(5,40);
textArea.setEditable(false);
add(”Center”,textArea);
boton1.addActionListener(this);
panel.add(boton1);
add(”South”,panel);
panel.setBackground(Color.yellow);
addWindowListener(new WindowAdapter(){
setVisible(false);
}});
String str=evt.getActionCommand();
if(str.equals(”Diálogo p/ con…guración”)){
if(dialog==null)
dialog=new SimpleDialogCH(this,”Con…guración”);
dialog.show();
try {
textArea.setForeground(Color.orange);
538 CAPÍTULO 20. CONCURRENCIA E HILOS CON JAVA
textArea.append(asterisc);
ex.printStackTrace ();
try {
f0.delete();
long longitud;
longitud = 0;
f1.seek(longitud);
f1.writeUTF(stock);
f1.close();
catch (Exception e) {
try {
ex.printStackTrace ();
try {
long longitud;
longitud = f1.length();
f1.seek(longitud);
f1.writeUTF(maxcompra);
f1.close();
}
catch (Exception e) {
System.out.println(”Archivo Hilos: Salida en grabación de parámetros: ” + e);
}
}
ex.printStackTrace ();
try {
RandomAccessFile f1 = new RandomAccessFile (”Hilos.txt”, ”rw”);
long longitud;
longitud = f1.length();
f1.seek(longitud);
f1.writeUTF(limitereponer);
540 CAPÍTULO 20. CONCURRENCIA E HILOS CON JAVA
f1.close();
catch (Exception e) {
try {
ex.printStackTrace ();
try {
long longitud;
longitud = f1.length();
f1.seek(longitud);
f1.writeUTF(cantidadreponer);
f1.close();
catch (Exception e) {
try {
20.5. PROGRAMA DESARROLLADO 541
textArea.append(asterisc);
textArea.append(”nn ”);
ex.printStackTrace ();
try {
RandomAccessFile f1 = new RandomAccessFile (”Hilos.txt”, ”rw”);
long longitud;
longitud = f1.length();
f1.seek(longitud);
f1.writeUTF(tiempoapertura);
f1.close();
}
catch (Exception e) {
System.out.println(”Archivo Hilos: Salida en grabación de parámetros: ” + e);
}
VentanaDialogCH parent;
Button b1;
super(fr,titulo,true);
parent=(VentanaDialogCH)fr;
p1.add(etiqueta1);
tstock=new TextField(”0”,4);
p1.add(tstock);
add(”Center”,p1);
tmaxcompra=new TextField(”30”,4);
p1.add(tmaxcompra);
add(”Center”,p1);
p1.add(etiqueta3);
tlimitereponer=new TextField(”40”,4);
p1.add(tlimitereponer);
add(”Center”,p1);
tcantidadreponer=new TextField(”50”,4);
p1.add(tcantidadreponer);
add(”Center”,p1);
Label etiqueta5=new Label(”Número de milisegundos de la ejecución (2000):”);
20.5. PROGRAMA DESARROLLADO 543
p1.add(etiqueta5);
ttiempoapertura=new TextField(”2000”,4);
p1.add(ttiempoapertura);
add(”Center”,p1);
p2.setLayout(new FlowLayout(FlowLayout.RIGHT));
b1=new Button(”Cancelar”);
b1.addActionListener(this);
b2.addActionListener(this);
p2.add(b1);
p2.add(b2);
add(”South”,p2);
setSize(500,200);
String str=evt.getActionCommand();
if(str.equals(”Aceptar”))
parent.setText1(tstock.getText());
stock = tstock.getText();
parent.setText2(tmaxcompra.getText());
MAXCOMPRA = tmaxcompra.getText();
parent.setText3(tlimitereponer.getText());
LIMITEREPONER = tlimitereponer.getText();
parent.setText4(tcantidadreponer.getText());
CANTIDADREPONER = tcantidadreponer.getText();
parent.setText5(ttiempoapertura.getText());
TIEMPOAPERTURA = ttiempoapertura.getText();
544 CAPÍTULO 20. CONCURRENCIA E HILOS CON JAVA
setVisible(false);
TextArea textArea;
public VentanaDialogECH(){
textArea=new TextArea(5,40);
textArea.setEditable(false);
add(”Center”,textArea);
addWindowListener(new WindowAdapter(){
setVisible(false);
}});
try {
long longitud;
longitud = 0;
f1.seek(longitud);
stock = f1.readUTF();
maxcompra = f1.readUTF();
limitereponer = f1.readUTF();
cantidadreponer = f1.readUTF();
tiempoapertura = f1.readUTF();
f1.close();
}
20.5. PROGRAMA DESARROLLADO 545
catch (Exception e) {
try {
a.MAXCOMPRA = Integer.parseInt(maxcompra);
a.LIMITEREPONER = Integer.parseInt(limitereponer);
a.CANTIDADREPONER = Integer.parseInt(cantidadreponer);
a.TIEMPOAPERTURA = Integer.parseInt(tiempoapertura);
p1.start();
p2.start();
c1.start();
c2.start();
c3.start();
try {
long longitud;
546 CAPÍTULO 20. CONCURRENCIA E HILOS CON JAVA
String c, d, asterisc;
longitud = 0;
f1.seek(longitud);
asterisc = ”nn*************************************”;
d = ”nn ”;
textArea.setForeground(Color.red);
textArea.append(asterisc);
c = f1.readUTF();
c = f1.readUTF();
c = f1.readUTF();
c = f1.readUTF();
c = f1.readUTF();
textArea.append(asterisc);
textArea.append(d);
f1.close();
catch (Exception e) {
}
20.5. PROGRAMA DESARROLLADO 547
String str=evt.getActionCommand();
TextArea textArea;
public VentanaDialogLCH(){
textArea=new TextArea(5,40);
textArea.setEditable(false);
add(”Center”,textArea);
addWindowListener(new WindowAdapter(){
setVisible(false);
}});
try {
long longitud;
String c, d, asterisc;
longitud = 0;
f1.seek(longitud);
asterisc = ”nn*************************************”;
d = ”nn ”;
textArea.setForeground(Color.red);
textArea.append(asterisc);
c = f1.readUTF();
c = f1.readUTF();
c = f1.readUTF();
c = f1.readUTF();
c = f1.readUTF();
textArea.append(asterisc);
textArea.append(d);
textArea.append(c);
textArea.append(d);
f1.close();
catch (Exception e) {
String str=evt.getActionCommand();
TextArea textArea;
public VentanaDialogA(){
textArea=new TextArea(5,40);
textArea.setEditable(false);
add(”Center”,textArea);
addWindowListener(new WindowAdapter(){
setVisible(false);
}});
try {
textArea.setForeground(Color.blue);
textArea.append(”nn ”);
textArea.append(asterisc);
textArea.append(”nn ”);
textArea.append(”nn ******************************************************”);
textArea.append(”nn ”);
textArea.append(”nn El ejemplo contempla el problema de productores / consumido-
res:”);
textArea.append(”nn ”);
textArea.append(”nn ”);
textArea.append(”nn ”);
textArea.append(”nn ”);
textArea.append(”nn ”);
textArea.append(asterisc);
textArea.append(”nn ”);
ex.printStackTrace ();
String str=evt.getActionCommand();
TextArea textArea;
public VentanaDialogAS(){
textArea=new TextArea(5,40);
textArea.setEditable(false);
add(”Center”,textArea);
addWindowListener(new WindowAdapter(){
20.5. PROGRAMA DESARROLLADO 551
setVisible(false);
}});
try {
textArea.setForeground(Color.black);
textArea.append(”nn ”);
textArea.append(asterisc);
textArea.append(”nn ”);
textArea.append(”nn ****************************************************”);
textArea.append(”nn ”);
textArea.append(”nn ”);
textArea.append(”nn ”);
textArea.append(asterisc);
textArea.append(”nn ”);
ex.printStackTrace ();
String str=evt.getActionCommand();
552 CAPÍTULO 20. CONCURRENCIA E HILOS CON JAVA
implements AdjustmentListener {
Image imagen1;
ImaCanvas imaani;
Panel panel;
public VImaCanvas(){
setLayout(new BorderLayout());
imagen1 = Toolkit.getDefaultToolkit().getImage(”Ani0076.gif”);
panel.add(imaani);
add(”Center”,imaani);
imaani.repaint();
Image img;
int x,y;
img=imagen1;
x=0;
y=0;
}
20.5. PROGRAMA DESARROLLADO 553
g.drawImage(img,0,0,this);
almacen = a;
this.numero = numero;
while(!almacen.cerrado){
if(System.currentTimeMillis()
-almacen.hora>almacen.TIEMPOAPERTURA){
almacen.cerrado=true;
try {
long longitud;
String c;
c = ”Fin de la ejecución.”;
longitud = f1.length();
f1.seek(longitud);
f1.writeUTF(c);
f1.close();
catch (Exception e) {
almacen.reponer(numero);
try {
sleep((int)(Math.random() * 100));
catch (InterruptedException e) {
almacen = a;
this.numero = numero;
int value;
while(!almacen.cerrado){
value=(int)(Math.random()*almacen.MAXCOMPRA);
almacen.comprar(numero,value);
class Almacen {
long hora=System.currentTimeMillis();
int cantidad) {
while (necesitareponer == true) {
try { wait();
} catch (InterruptedException e) {
}
}
if(!cerrado){
if(stock<cantidad){
cantidad=stock;
stock-=cantidad;
try {
long longitud;
String c;
longitud = f1.length();
f1.seek(longitud);
f1.writeUTF(c);
f1.close();
556 CAPÍTULO 20. CONCURRENCIA E HILOS CON JAVA
catch (Exception e) {
if(stock<=LIMITEREPONER)
necesitareponer = true;
notify();
}
public synchronized void reponer(int productor) {
if (!cerrado){
while (necesitareponer == false) {
try { wait();
} catch (InterruptedException e) {}
}
stock+=CANTIDADREPONER;
try {
long longitud;
String c;
longitud = f1.length();
f1.seek(longitud);
f1.writeUTF(c);
f1.close();
catch (Exception e) {
System.out.println(”Archivo Hilos: Salida luego de grabar Hilo Productor: ” + e);
20.6. DATOS Y EJECUCIONES 557
necesitareponer = false;
notify();
30
40
50
2000
21.1 Introducción
Para el desarrollo del presente caso de estudio se ha utilizado el lenguaje Matlab, una
muy poderosa herramienta para el cálculo numérico, aplicada acá a la simulación de reque-
rimientos de paginación de memoria virtual y a evaluar si secuencias aleatorias de dichos
requerimientos podrían llevar a situaciones del tipo de la llamada Anomalía de Belady o
Anomalía FIFO [7, Deitel].
Lo interesante del presente caso de estudio es que se permiten simular requerimientos
de paginación para secuencias grandes (de cientos o de miles de requerimientos) como así
también para grupos muy numerosos de celdas de páginas, lo que nos acerca a situaciones
reales.
Los aspectos teóricos relacionados con los algoritmos de paginación y con la anomalía
mencionada, han sido desarrollados en el Capítulo “Administración de la Memoria”.
559
560 CAPÍTULO 21. ANOMALÍA DE BELADY CON MATLAB
² Seguimiento del algoritmo de paginación FIFO, con indicación de los fallos de página
que se van produciendo.
Respecto del archivo generado, el mismo tendrá un tamaño variable según los datos
que se hayan suministrado a las ejecuciones que lo producen; es preciso señalar además
que el archivo es acumulativo, es decir que no se borra automáticamente al iniciar cada
ejecución.
El código del programa desarrollado (Anomalia.m) es el siguiente:
clc
echo o¤
n = 0;
M = 0;
R = 0;
T = 0;
fallos = 0;
i = 0;
j = 0;
r = 0;
s = 0;
p = 0;
encontrada = 0;
k = 0;
l = 0;
Fp(3) = 0;
Cp(3) = 0;
Aux(2) = 0;
disp(’ ’)
disp(’***********************************************************************’)
disp(’ ’)
562 CAPÍTULO 21. ANOMALÍA DE BELADY CON MATLAB
disp(’ ’)
keyboard
disp(’ ’)
keyboard
for i = 1:n,
M(i) = 0;
end
if R == 0
keyboard
end
if n == 0
keyboard
end
l = n;
r = size(R,1);
s = size(R,2);
for q = 1:s,
for i = 1:r,
21.5. PROGRAMA DESARROLLADO 563
end
disp(’**********************************************************’)
disp(’**********************************************************’)
n = round(l * 0.8);
for k = 1:3,
for j = 1:r,
for i = 1:n,
if M(i) == T(j)
disp(T(j))
encontrada = 1;
i = n;
end
end
if encontrada == 0
disp(T(j))
fallos = fallos + 1;
for i = 1:(n-1),
M(i) = M(i+1);
end
M(n) = T(j);
end
encontrada = 0;
564 CAPÍTULO 21. ANOMALÍA DE BELADY CON MATLAB
end
disp(’**********************************************************’)
disp(fallos)
disp(n)
disp(’**********************************************************’)
Fp(k) = fallos;
Cp(k) = n;
fallos = 0;
if k == 1
n = l;
else if k == 2
n = round(l * 1.2);
end
end
for i = 1:n,
M(i) = 0;
end
end
disp(’ ’)
disp(’**********************************************************’)
bx = ’ ’;
…d = fopen(’D:nTesisMicnAnomalianAnomalia.txt’,’a’);
fprintf(…d,rx);
fprintf(…d,’nn’);
for i = 1:r,
vx = num2str(T(i));
fprintf(…d,vx);
fprintf(…d,’nn’);
end
fprintf(…d,tx);
fprintf(…d,’nn’);
for i = 1:3,
Aux(1) = Cp(i);
x(i) = Cp(i);
Aux(2) = Fp(i);
y(i) = Fp(i);
disp(Aux)
nx1 = num2str(Aux(1));
fprintf(…d,nx1);
fprintf(…d,bx);
nx2 = num2str(Aux(2));
fprintf(…d,nx2);
fprintf(…d,’nn’);
end
disp(’**********************************************************’)
…gure(q);
colormap(pink);
set(q,’DefaultTextColor’,’cyan’);
566 CAPÍTULO 21. ANOMALÍA DE BELADY CON MATLAB
plot(x,y,’r-’,x,y,’g*’);
disp(’**********************************************************’)
fprintf(…d,tx);
fprintf(…d,’nn’);
else
fprintf(…d,tx);
fprintf(…d,’nn’);
end
end
disp(’**********************************************************’)
end
end
end
fclose(’all’);
622 684 182 511 999 231 233 655 611 501 3 281 558 359 421 446 12 985 980 847 11 866
957 967 224 990 516 267 982 487 924 629 308 803 134 573 175 802 399 982 871 11
492 676 578 17 453 985 781 1000 389 972 228 770 221 956 498 941 155 457 842 976
30 112 409 700 547 68 886 737 949 985 621 500 623 703 765 891 577 633 535 285 360
178 365 848 543 264 497 447
8 90
10 90
12 89
471 590 792 692 95 212 714 16 192 330 16 255 483 891 675 736 874 893 584 552 3 811
238 435 584 240 629 792 506 334 401 419 899 333 801 875 745 932 209 533 278 199
803 788 178 353 668 61 174 499 771 74 944 280 601 843 120 492 344 645 570 49 648
148 390 856 204 604 10 975 447 274 138 932 53 104 588 470 16 879 449 797 104 631
742 553 405 16 753 664
8 86
10 86
12 86
28
38
568 CAPÍTULO 21. ANOMALÍA DE BELADY CON MATLAB
48
29
39
49
Uno de los grá…cos producidos para una de las ejecuciones de evaluación se muestra
en la Figura 21.1 de la página 568.
21.7. RESULTADOS Y CONCLUSIONES 569
Anexos
571
Capítulo 22
************************************************************
************************************************************
************************************************************
************************************************************
573
574 CAPÍTULO 22. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
576 CAPÍTULO 22. PLANIFICACIÓN DEL PROCESADOR CON P.O.O.
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
n = Length[Prior], m = Length[DatosPagina]},
Print[”********************************************”];
Print[”********************************************”];
Do[
Posterior = {};
585
586 CAPÍTULO 23. PAGINACIÓN DE MEMORIA VIRTUAL CON S. E.
* Prior1[[i]]]]
, {i, 1, n}];
aux1 = Sort[aux1];
Print[” ”, Pautas[[Abs[DatosPagina[[j]]]]]];
Print[” ”];
, {i, n, 1, -1}];
, {j, 1, m}];
Print[”****************************************************”];
Print[”Resultado …nal:”];
Print[” ”];
, {i, n, 1, -1}];
Print[”****************************************************”];
”Página no referenciada”,
Verosimilitudes =
DatosPagina =
********************************************
********************************************
Página no referenciada
****************************************************
Resultado …nal:
****************************************************
DatosPagina =
********************************************
********************************************
Página no referenciada
****************************************************
Resultado …nal:
****************************************************
DatosPagina =
********************************************
********************************************
Página no referenciada
****************************************************
Resultado …nal:
****************************************************
DatosPagina =
********************************************
********************************************
Página no referenciada
****************************************************
Resultado …nal:
****************************************************
DatosPagina =
********************************************
********************************************
Página no referenciada
****************************************************
Resultado …nal:
****************************************************
(* sí referenciada y sí modi…cada *)
DatosPagina =
23.1. PROGRAMAS DESARROLLADOS Y DATOS Y EJECUCIONES 629
********************************************
********************************************
Página no referenciada
****************************************************
Resultado …nal:
****************************************************
(* sí referenciada y no modi…cada *)
DatosPagina =
********************************************
********************************************
Página no referenciada
****************************************************
Resultado …nal:
****************************************************
(* no referenciada *)
DatosPagina =
********************************************
********************************************
Página no referenciada
652 CAPÍTULO 23. PAGINACIÓN DE MEMORIA VIRTUAL CON S. E.
****************************************************
Resultado …nal:
****************************************************
(* sí referenciada y sí modi…cada *)
DatosPagina =
********************************************
********************************************
Página no referenciada
****************************************************
Resultado …nal:
****************************************************
662 CAPÍTULO 23. PAGINACIÓN DE MEMORIA VIRTUAL CON S. E.
Capítulo 24
<<Examples‘Colas1pn‘
? Colas1pn
Colas1pn[mu,lambda,i]
Análisis del rendimiento de un subsistema de disco que solo puede dar servicio a una
petición a la vez.
Colocar los valores máximos para mu, lambda y el número de peticiones pendientes.
Colas1pn[20,10,3]
Análisis del rendimiento de un subsistema de disco.
Resultados del Caso 1:
663
664 CAPÍTULO 24. SUBSISTEMA DE DISCO DE UNA PETICIÓN
0.111111
******************************
0.428571
******************************
1.
******************************
2.33333
******************************
9.
******************************
0.0526316
666 CAPÍTULO 24. SUBSISTEMA DE DISCO DE UNA PETICIÓN
******************************
0.176471
******************************
0.333333
******************************
0.538462
******************************
******************************
*****************************
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45}
Promedio de peticiones pendientes para cada coe…ciente:
{0.111111, 0.428571, 1., 2.33333, 9., 0.0526316, 0.176471, 0.333333, 0.538462, 0.818182}
Pares (coe…cientes,promedio):
{{0.1, 0.111111}, {0.3, 0.428571}, {0.5, 1.}, {0.7, 2.33333}, {0.9, 9.}, {0.05, 0.0526316},
{0.15, 0.176471}, {0.25, 0.333333}, {0.35, 0.538462}, {0.45, 0.818182}}
{Statistics‘LinearRegression‘BestFit ->
Statistics‘LinearRegression‘BestFitCoe¢cients ->
Colas1pn[40,20,7]
******************************
0.111111
24.1. DATOS Y EJECUCIONES 669
******************************
0.428571
******************************
1.
******************************
2.33333
******************************
9.
******************************
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
{{0.95, 0.0475, 0.002375, 0.00011875, 5.9375 10¡6 , 2.96875 10¡7 , 1.48437 10¡8 , 7.42187
10¡10 }}
0.0526316
******************************
0.176471
******************************
0.333333
******************************
672 CAPÍTULO 24. SUBSISTEMA DE DISCO DE UNA PETICIÓN
0.538462
******************************
0.818182
******************************
1.22222
******************************
1.85714
******************************
3.
******************************
5.66667
******************************
19.
******************************
0.0344828
******************************
0.111111
******************************
0.2
******************************
0.0000288698}}
0.304348
******************************
0.428571
******************************
0.000564329}}
0.578947
******************************
0.00162586}}
0.764706
******************************
1.
678 CAPÍTULO 24. SUBSISTEMA DE DISCO DE UNA PETICIÓN
******************************
0.00813047}}
1.30769
******************************
0.0149864}}
1.72727
******************************
0.025641
******************************
0.0810811
******************************
0.142857
******************************
0.212121
******************************
0.0000226245}}
0.290323
******************************
24.1. DATOS Y EJECUCIONES 681
0.0000862317}}
0.37931
******************************
0.000258516}}
0.481481
******************************
0.000651777}}
0.6
******************************
0.00144009}}
0.73913
******************************
0.904762
******************************
*****************************
*****************************
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85, 0.95, 0.0333333,
0.1, 0.166667, 0.233333, 0.3, 0.366667, 0.433333, 0.5, 0.566667, 0.633333, 0.025,
0.075, 0.125, 0.175, 0.225, 0.275, 0.325, 0.375, 0.425, 0.475}
{0.111111, 0.428571, 1., 2.33333, 9., 0.0526316, 0.176471, 0.333333, 0.538462, 0.818182,
1.22222, 1.85714, 3., 5.66667, 19., 0.0344828, 0.111111, 0.2, 0.304348, 0.428571,
0.578947, 0.764706, 1., 1.30769, 1.72727, 0.025641, 0.0810811, 0.142857, 0.212121,
0.290323, 0.37931, 0.481481, 0.6, 0.73913, 0.904762}
Pares (coe…cientes,promedio):
{{0.1, 0.111111}, {0.3, 0.428571}, {0.5, 1.}, {0.7, 2.33333}, {0.9, 9.}, {0.05, 0.0526316},
{0.55, 1.22222}, {0.65, 1.85714}, {0.75, 3.}, {0.85, 5.66667}, {0.95, 19.},
{Statistics‘LinearRegression‘BestFit ->
Statistics‘LinearRegression‘BestFitCoe¢cien ts ->
Colas1pn[90,20,5]
0.111111
******************************
0.428571
******************************
1.
******************************
2.33333
******************************
9.
******************************
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
0.0526316
******************************
0.176471
******************************
0.333333
******************************
0.538462
******************************
0.818182
******************************
1.22222
24.1. DATOS Y EJECUCIONES 689
******************************
1.85714
******************************
3.
******************************
5.66667
******************************
19.
******************************
0.0344828
******************************
24.1. DATOS Y EJECUCIONES 691
0.111111
******************************
0.2
******************************
0.304348
******************************
0.428571
******************************
0.578947
******************************
0.764706
******************************
1.
******************************
1.30769
******************************
1.72727
******************************
0.025641
******************************
0.0810811
******************************
0.142857
******************************
0.212121
******************************
0.290323
******************************
0.37931
******************************
0.481481
******************************
0.6
******************************
0.73913
******************************
0.904762
******************************
0.0204082
******************************
0.0638298
******************************
0.111111
******************************
0.162791
700 CAPÍTULO 24. SUBSISTEMA DE DISCO DE UNA PETICIÓN
******************************
0.219512
******************************
0.282051
******************************
0.351351
******************************
0.428571
******************************
0.515152
******************************
702 CAPÍTULO 24. SUBSISTEMA DE DISCO DE UNA PETICIÓN
0.612903
******************************
0.0169492
******************************
0.0526316
******************************
0.0909091
******************************
0.132075
******************************
0.176471
******************************
0.22449
******************************
0.276596
******************************
0.333333
******************************
0.395349
******************************
0.463415
******************************
0.0144928
******************************
0.0447761
******************************
0.0769231
******************************
0.111111
******************************
0.147541
******************************
0.186441
******************************
0.22807
******************************
0.272727
******************************
0.320755
******************************
0.372549
******************************
0.0126582
******************************
0.038961
24.1. DATOS Y EJECUCIONES 711
******************************
0.0666667
******************************
0.0958904
******************************
0.126761
******************************
0.15942
******************************
0.19403
******************************
24.1. DATOS Y EJECUCIONES 713
0.230769
******************************
0.269841
******************************
0.311475
******************************
0.011236
******************************
0.0344828
******************************
0.0588235
******************************
0.0843373
******************************
0.111111
******************************
0.139241
******************************
0.168831
******************************
0.2
******************************
0.232877
******************************
0.267606
******************************
*****************************
*****************************
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85, 0.95, 0.0333333,
0.1, 0.166667, 0.233333, 0.3, 0.366667, 0.433333, 0.5, 0.566667, 0.633333, 0.025,
0.075, 0.125, 0.175, 0.225, 0.275, 0.325, 0.375, 0.425, 0.475, 0.02, 0.06, 0.1, 0.14,
0.18, 0.22, 0.26, 0.3, 0.34, 0.38, 0.0166667, 0.05, 0.0833333, 0.116667, 0.15, 0.183333,
0.216667, 0.25, 0.283333, 0.316667, 0.0142857, 0.0428571, 0.0714286, 0.1, 0.128571,
0.157143, 0.185714, 0.214286, 0.242857, 0.271429, 0.0125, 0.0375, 0.0625, 0.0875,
0.1125, 0.1375, 0.1625, 0.1875, 0.2125, 0.2375, 0.0111111, 0.0333333, 0.0555556,
0.0777778, 0.1, 0.122222, 0.144444, 0.166667, 0.188889, 0.211111}
{0.111111, 0.428571, 1., 2.33333, 9., 0.0526316, 0.176471, 0.333333, 0.538462, 0.818182,
1.22222, 1.85714, 3., 5.66667, 19., 0.0344828, 0.111111, 0.2, 0.304348, 0.428571,
0.578947, 0.764706, 1., 1.30769, 1.72727, 0.025641, 0.0810811, 0.142857, 0.212121,
0.290323, 0.37931, 0.481481, 0.6, 0.73913, 0.904762, 0.0204082, 0.0638298, 0.111111,
0.162791, 0.219512, 0.282051, 0.351351, 0.428571, 0.515152, 0.612903, 0.0169492,
0.0526316, 0.0909091, 0.132075, 0.176471, 0.22449, 0.276596, 0.333333, 0.395349,
0.463415, 0.0144928, 0.0447761, 0.0769231, 0.111111, 0.147541, 0.186441, 0.22807,
0.272727, 0.320755, 0.372549, 0.0126582, 0.038961, 0.0666667, 0.0958904, 0.126761,
0.15942, 0.19403, 0.230769, 0.269841, 0.311475, 0.011236, 0.0344828, 0.0588235,
0.0843373, 0.111111, 0.139241, 0.168831, 0.2, 0.232877, 0.267606}
Pares (coe…cientes,promedio):
{{0.1, 0.111111}, {0.3, 0.428571}, {0.5, 1.}, {0.7, 2.33333}, {0.9, 9.}, {0.05, 0.0526316},
{0.55, 1.22222}, {0.65, 1.85714}, {0.75, 3.}, {0.85, 5.66667}, {0.95, 19.},
{0.211111, 0.267606}}
{Statistics‘LinearRegression‘BestFit ->
Statistics‘LinearRegression‘BestFitCoe¢cien ts ->
Colas1pn[10,20,3]
Throw[Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.]
Colas1pn[10,90,9]
Throw[Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.]
720 CAPÍTULO 24. SUBSISTEMA DE DISCO DE UNA PETICIÓN
<<Examples‘Colas2pn‘
? Colas2pn
Colocar los valores máximos para mu, lambda y el número de peticiones pendientes.
Colas2pn[20,10,3]
721
722 CAPÍTULO 25. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
0.1
******************************
0.3
******************************
0.5
******************************
0.7
******************************
0.9
******************************
0.05
******************************
0.15
******************************
0.25
******************************
0.35
******************************
0.45
******************************
*****************************
*****************************
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45}
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45}
Pares (coe…cientes,promedio):
{{0.1, 0.1}, {0.3, 0.3}, {0.5, 0.5}, {0.7, 0.7}, {0.9, 0.9}, {0.05, 0.05},
{Statistics‘LinearRegression‘BestFit ->
-2.37982 10¡17 + 1. x,
Statistics‘LinearRegression‘BestFitCoe¢cients ->
Colas2pn[40,20,7]
0.1
******************************
0.3
******************************
0.5
******************************
728 CAPÍTULO 25. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
0.7
******************************
0.000300094, 0.0000385835}}
******************************
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
25.1. DATOS Y EJECUCIONES 729
0.05
******************************
0.15
******************************
0.25
******************************
0.35
******************************
0.45
******************************
0.55
******************************
0.65
******************************
0.000116765, 0.0000125106}}
0.75
******************************
0.000223888, 0.0000271864}}
0.85
******************************
0.000394847, 0.0000535864}}
0.95
******************************
{{0.967216, 0.0322405, 0.000537342, 5.97047 10¡6 , 4.97539 10¡8 , 3.31693 10¡10 , 1.84274
10¡12 , 8.77494 10¡15 }}
0.0333333
******************************
0.1
******************************
734 CAPÍTULO 25. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
0.166667
******************************
0.233333
******************************
0.3
******************************
0.366667
******************************
0.433333
******************************
0.5
******************************
0.566667
******************************
0.633333
******************************
{{0.97531, 0.0243827, 0.000304784, 2.53987 10¡6 , 1.58742 10¡8 , 7.93709 10¡11 , 3.30712
10¡13 , 1.18111 10¡15 }}
0.025
******************************
0.075
******************************
0.125
******************************
0.175
******************************
25.1. DATOS Y EJECUCIONES 739
0.225
******************************
0.275
******************************
0.325
******************************
0.375
******************************
0.425
******************************
0.475
******************************
*****************************
*****************************
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85, 0.95, 0.0333333,
0.1, 0.166667, 0.233333, 0.3, 0.366667, 0.433333, 0.5, 0.566667, 0.633333, 0.025,
0.075, 0.125, 0.175, 0.225, 0.275, 0.325, 0.375, 0.425, 0.475}
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85, 0.95, 0.0333333,
0.1, 0.166667, 0.233333, 0.3, 0.366667, 0.433333, 0.5, 0.566667, 0.633333, 0.025,
0.075, 0.125, 0.175, 0.225, 0.275, 0.325, 0.375, 0.425, 0.475}
Pares (coe…cientes,promedio):
{{0.1, 0.1}, {0.3, 0.3}, {0.5, 0.5}, {0.7, 0.7}, {0.9, 0.9}, {0.05, 0.05}, {0.15, 0.15},
{0.25, 0.25}, {0.35, 0.35}, {0.45, 0.45}, {0.55, 0.55}, {0.65, 0.65}, {0.75, 0.75},
{0.025, 0.025}, {0.075, 0.075}, {0.125, 0.125}, {0.175, 0.175}, {0.225, 0.225},
{0.275, 0.275}, {0.325, 0.325}, {0.375, 0.375}, {0.425, 0.425}, {0.475, 0.475}}
{Statistics‘LinearRegression‘BestFit ->
-1.33926 10¡16 + 1. x,
Statistics‘LinearRegression‘BestFitCoe¢cients ->
Colas2pn[90,20,5]
0.1
******************************
0.3
******************************
0.5
744 CAPÍTULO 25. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
******************************
0.7
******************************
0.9
******************************
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.
25.1. DATOS Y EJECUCIONES 745
0.05
******************************
0.15
******************************
0.25
******************************
0.35
******************************
0.45
******************************
0.55
******************************
0.65
******************************
0.75
******************************
0.85
******************************
0.95
******************************
0.0333333
******************************
0.1
******************************
0.166667
******************************
0.233333
******************************
0.3
******************************
0.366667
******************************
0.433333
******************************
0.5
******************************
0.566667
******************************
0.633333
******************************
0.025
******************************
0.075
******************************
0.125
754 CAPÍTULO 25. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
******************************
0.175
******************************
0.225
******************************
0.275
******************************
0.325
******************************
0.375
******************************
756 CAPÍTULO 25. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
0.425
******************************
0.475
******************************
0.02
******************************
0.06
******************************
0.1
******************************
0.14
******************************
0.18
******************************
0.22
******************************
0.26
******************************
0.3
******************************
0.34
******************************
0.38
******************************
0.0166667
******************************
0.05
******************************
0.0833333
******************************
0.116667
******************************
0.15
******************************
0.183333
******************************
0.216667
******************************
0.25
******************************
0.283333
******************************
0.316667
******************************
0.0142857
25.1. DATOS Y EJECUCIONES 765
******************************
0.0428571
******************************
0.0714286
******************************
0.1
******************************
0.128571
******************************
0.157143
******************************
25.1. DATOS Y EJECUCIONES 767
0.185714
******************************
0.214286
******************************
0.242857
******************************
0.271429
******************************
0.0125
******************************
0.0375
******************************
0.0625
******************************
0.0875
******************************
0.1125
******************************
0.1375
******************************
0.1625
******************************
0.1875
******************************
0.2125
******************************
0.2375
******************************
0.0111111
******************************
0.0333333
******************************
0.0555556
******************************
0.0777778
******************************
0.1
******************************
0.122222
******************************
0.144444
******************************
0.166667
******************************
0.188889
776 CAPÍTULO 25. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
******************************
0.211111
******************************
*****************************
*****************************
{0.1, 0.3, 0.5, 0.7, 0.9, 0.05, 0.15, 0.25, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85, 0.95, 0.0333333,
0.1, 0.166667, 0.233333, 0.3, 0.366667, 0.433333, 0.5, 0.566667, 0.633333, 0.025,
0.075, 0.125, 0.175, 0.225, 0.275, 0.325, 0.375, 0.425, 0.475, 0.02, 0.06, 0.1, 0.14,
0.18, 0.22, 0.26, 0.3, 0.34, 0.38, 0.0166667, 0.05, 0.0833333, 0.116667, 0.15, 0.183333,
0.216667, 0.25, 0.283333, 0.316667, 0.0142857, 0.0428571, 0.0714286, 0.1, 0.128571,
0.157143, 0.185714, 0.214286, 0.242857, 0.271429, 0.0125, 0.0375, 0.0625, 0.0875,
0.1125, 0.1375, 0.1625, 0.1875, 0.2125, 0.2375, 0.0111111, 0.0333333, 0.0555556,
0.0777778, 0.1, 0.122222, 0.144444, 0.166667, 0.188889, 0.211111}
Pares (coe…cientes,promedio):
25.1. DATOS Y EJECUCIONES 777
{{0.1, 0.1}, {0.3, 0.3}, {0.5, 0.5}, {0.7, 0.7}, {0.9, 0.9}, {0.05, 0.05}, {0.15, 0.15},
{0.25, 0.25}, {0.35, 0.35}, {0.45, 0.45}, {0.55, 0.55}, {0.65, 0.65}, {0.75, 0.75},
{0.85, 0.85}, {0.95, 0.95}, {0.0333333, 0.0333333}, {0.1, 0.1},
{0.166667, 0.166667}, {0.233333, 0.233333}, {0.3, 0.3}, {0.366667, 0.366667},
{0.433333, 0.433333}, {0.5, 0.5}, {0.566667, 0.566667}, {0.633333, 0.633333},
{0.025, 0.025}, {0.075, 0.075}, {0.125, 0.125}, {0.175, 0.175}, {0.225, 0.225},
{0.275, 0.275}, {0.325, 0.325}, {0.375, 0.375}, {0.425, 0.425},
{0.475, 0.475}, {0.02, 0.02}, {0.06, 0.06}, {0.1, 0.1}, {0.14, 0.14}, {0.18, 0.18},
{0.22, 0.22}, {0.26, 0.26}, {0.3, 0.3}, {0.34, 0.34}, {0.38, 0.38},
{0.0166667, 0.0166667}, {0.05, 0.05}, {0.0833333, 0.0833333}, {0.116667, 0.116667},
{0.15, 0.15}, {0.183333, 0.183333}, {0.216667, 0.216667}, {0.25, 0.25},
{0.283333, 0.283333}, {0.316667, 0.316667}, {0.0142857, 0.0142857},
{0.0428571, 0.0428571}, {0.0714286, 0.0714286}, {0.1, 0.1}, {0.128571, 0.128571},
{0.157143, 0.157143}, {0.185714, 0.185714}, {0.214286, 0.214286},
{0.242857, 0.242857}, {0.271429, 0.271429}, {0.0125, 0.0125}, {0.0375, 0.0375},
{0.0625, 0.0625}, {0.0875, 0.0875}, {0.1125, 0.1125}, {0.1375, 0.1375},
{0.1625, 0.1625}, {0.1875, 0.1875}, {0.2125, 0.2125}, {0.2375, 0.2375},
{0.0111111, 0.0111111}, {0.0333333, 0.0333333}, {0.0555556, 0.0555556},
{0.0777778, 0.0777778}, {0.1, 0.1}, {0.122222, 0.122222}, {0.144444, 0.144444},
{0.166667, 0.166667}, {0.188889, 0.188889}, {0.211111, 0.211111}}
Grá…co de promedio de peticiones pendientes para cada coe…ciente y Análisis de regresión
lineal:
{Statistics‘LinearRegression‘BestFit ->
-2.07028 10¡16 + 1. x,
Statistics‘LinearRegression‘BestFitCoe¢cients ->
{-2.07028 10¡16 , 1.}}
Colas2pn[10,20,3]
Throw[Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.]
Colas2pn[10,90,9]
Throw[Para que la cola no crezca inde…nidamente debe ser Mu mayor que Lambda.]
778 CAPÍTULO 25. SUBSISTEMA DE DISCO DE VARIAS PETICIONES
Optimización de Operaciones de
Búsqueda en Disco con Redes
Neuronales
<<Examples‘Colas3pn‘
? Colas3pn
Colas3pn[cildisc,totpetic,numpetic]
Cálculo del número de cilindros del disco recorridos por el mecanismo de acceso en las
operaciones de búsqueda de los cilindros requeridos según las peticiones de entrada
/ salida que precisan los procesos; generación del archivo de resultados correspon-
diente.
Colas3pn[40,5,100]
{40, 5, 1}
23
779
780 CAPÍTULO 26. BÚSQUEDA EN DISCO CON REDES NEURONALES
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
FCFS
******************************
{40, 5, 2}
14
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 3}
21
26.1. DATOS Y EJECUCIONES 781
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 4}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 5}
32
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 6}
20
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 7}
26.1. DATOS Y EJECUCIONES 783
24
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SCAN
******************************
{40, 5, 8}
10
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 9}
23
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SCAN
******************************
{40, 5, 10}
11
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 11}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 12}
40
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
786 CAPÍTULO 26. BÚSQUEDA EN DISCO CON REDES NEURONALES
{40, 5, 13}
29
{13, 15, 7, 8, 8}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 14}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 15}
38
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 16}
23
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 17}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 18}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
FCFS
26.1. DATOS Y EJECUCIONES 789
******************************
{40, 5, 19}
32
{26, 5, 25, 1, 4}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 20}
18
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 21}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 22}
36
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 23}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 24}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
792 CAPÍTULO 26. BÚSQUEDA EN DISCO CON REDES NEURONALES
SSF
******************************
{40, 5, 25}
29
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 26}
24
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 27}
40
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 28}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 29}
15
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 30}
6
26.1. DATOS Y EJECUCIONES 795
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 31}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 32}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 33}
22
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 34}
26.1. DATOS Y EJECUCIONES 797
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 35}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 36}
27
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 37}
36
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 38}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 39}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
800 CAPÍTULO 26. BÚSQUEDA EN DISCO CON REDES NEURONALES
{40, 5, 40}
10
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 41}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 42}
33
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 43}
40
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 44}
11
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
FCFS
******************************
{40, 5, 45}
38
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
26.1. DATOS Y EJECUCIONES 803
******************************
{40, 5, 46}
21
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 47}
32
{13, 37, 6, 1, 7}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 48}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 49}
12
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
FCFS
******************************
{40, 5, 50}
40
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 51}
18
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
806 CAPÍTULO 26. BÚSQUEDA EN DISCO CON REDES NEURONALES
SSF
******************************
{40, 5, 52}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 53}
24
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 54}
36
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 55}
15
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 56}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 57}
34
26.1. DATOS Y EJECUCIONES 809
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 58}
11
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 59}
16
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 60}
19
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 61}
26.1. DATOS Y EJECUCIONES 811
31
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 62}
33
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 63}
14
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 64}
31
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 65}
34
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SCAN
******************************
{40, 5, 66}
18
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
814 CAPÍTULO 26. BÚSQUEDA EN DISCO CON REDES NEURONALES
{40, 5, 67}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 68}
13
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 69}
21
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 70}
15
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 71}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 72}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
26.1. DATOS Y EJECUCIONES 817
******************************
{40, 5, 73}
10
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 74}
22
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SCAN
******************************
{40, 5, 75}
29
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SCAN
******************************
{40, 5, 76}
23
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 77}
14
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 78}
26
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
820 CAPÍTULO 26. BÚSQUEDA EN DISCO CON REDES NEURONALES
SCAN
******************************
{40, 5, 79}
31
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 80}
33
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 81}
23
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SCAN
******************************
{40, 5, 82}
30
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SCAN
******************************
{40, 5, 83}
17
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 84}
9
26.1. DATOS Y EJECUCIONES 823
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 85}
10
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 86}
39
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 87}
32
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SCAN
******************************
{40, 5, 88}
26.1. DATOS Y EJECUCIONES 825
11
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 89}
21
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SCAN
******************************
{40, 5, 90}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 91}
12
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 92}
20
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 93}
25
{38, 35, 1, 2, 3}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
828 CAPÍTULO 26. BÚSQUEDA EN DISCO CON REDES NEURONALES
{40, 5, 94}
22
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 95}
36
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SCAN
******************************
{40, 5, 96}
38
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 97}
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 98}
40
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
{40, 5, 99}
36
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
26.1. DATOS Y EJECUCIONES 831
******************************
{40, 5, 100}
34
El número de movimientos del mecanismo de acceso sería el siguiente para FCFS, SSF y
SCAN:
SSF
******************************
************************************************
************************************************
4, 17, 3, 39, 1, 30 , 0, 1, 0
6, 9, 8, 25, 3, 2 , 0, 1, 0
1, 15, 11, 3, 5, 10 , 0, 1, 0
16, 6, 1, 8, 7, 36 , 0, 1, 0
10, 38, 1, 5, 7, 6 , 0, 1, 0
5, 1, 32, 23, 7, 29 , 0, 1, 0
3, 33, 10, 8, 2, 3 , 0, 1, 0
9, 8, 9, 19, 33, 34 , 1, 0, 0
7, 1, 10, 38, 3, 34 , 0, 1, 0
3, 3, 21, 36, 2, 16 , 0, 1, 0
9, 2, 5, 14, 36, 6 , 0, 1, 0
9, 17, 17, 9, 1, 3 , 0, 1, 0
8, 34, 9, 1, 7, 24 , 0, 1, 0
14, 3, 13, 9, 2, 18 , 0, 0, 1
3, 36, 7, 24, 9, 10 , 0, 1, 0
27, 27, 2, 6, 7, 34 , 0, 1, 0
26.1. DATOS Y EJECUCIONES 839
1, 6, 20, 14, 5, 29 , 0, 1, 0
5, 11, 6, 19, 9, 19 , 0, 1, 0
7, 20, 4, 1, 11, 23 , 0, 1, 0
15, 6, 32, 8, 7, 36 , 0, 1, 0
34, 1, 13, 7, 5, 34 , 0, 1, 0
37, 8, 8, 25, 3, 9 , 0, 1, 0
26.1. DATOS Y EJECUCIONES 843
27, 40, 7, 8, 2, 17 , 0, 0, 1
4, 2, 14, 31, 3, 11 , 0, 1, 0
5, 1, 9, 29, 6, 40 , 0, 1, 0
22, 8, 22, 6, 1, 11 , 0, 1, 0
7, 16, 9, 4, 5, 23 , 0, 1, 0
5, 3, 8, 22, 14, 34 , 0, 1, 0
30
40
50
2000
847
848 CAPÍTULO 27. CONCURRENCIA E HILOS CON JAVA
Fin de la ejecución.
858 CAPÍTULO 27. CONCURRENCIA E HILOS CON JAVA
Capítulo 28
622 684 182 511 999 231 233 655 611 501 3 281 558 359 421 446 12 985 980 847 11 866
957 967 224 990 516 267 982 487 924 629 308 803 134 573 175 802 399 982 871 11
492 676 578 17 453 985 781 1000 389 972 228 770 221 956 498 941 155 457 842 976
30 112 409 700 547 68 886 737 949 985 621 500 623 703 765 891 577 633 535 285 360
178 365 848 543 264 497 447
8 90
10 90
12 89
471 590 792 692 95 212 714 16 192 330 16 255 483 891 675 736 874 893 584 552 3 811
238 435 584 240 629 792 506 334 401 419 899 333 801 875 745 932 209 533 278 199
803 788 178 353 668 61 174 499 771 74 944 280 601 843 120 492 344 645 570 49 648
148 390 856 204 604 10 975 447 274 138 932 53 104 588 470 16 879 449 797 104 631
742 553 405 16 753 664
8 86
10 86
12 86
859
860 CAPÍTULO 28. ANOMALÍA DE BELADY CON MATLAB
28
38
48
29
39
49
NO se ha producido la Anomalía de Belady en la simulación efectuada.
609 459 364 605 368 808 787 651 965 810 627 851 227 243 279 969 269 388 371 585
674 767 859 370 570 372 929 69 448 923 375 874 714 703 418 606 94 500 678 12 728
521 289 42 890 276 49 238 171 117 641 847 806 519 224 91 81 51 694 553 735 69 719
278 763 888 603 451 777 980 246 876 390 12 197 638 31 28 364 628 547 899 791 168
118 192 746 731 27 479 343 713 509 671 85 264 491 616 82 620 556 638 477 185 561
52 924 841 342 550 283 459 683 668 887 924 855 254 983 411 49 712 162 515 801 241
890 980 968 218 482 592 868 472 592 705 256 68 780 672 462 990 347 286 465 870
454 153 732 663 693 615 622 976 250 125 40 620 578 819 887 901 718 467 279 745
724 291 844 85 515 805 636 384 605 834 958 170 832 248 509 479 94 22 167 685 981
968 51 485 87 219 635 160 727 765 171 887 343 173 477 990 792 318 987 882 266 863
708 852 515 288 980 674 465 133 609 770 70 832 850 679 551 896 715 783 618 298
281 434 264 952 445 89 882 852 859 747 619 986 361 198 531 652 219 463 381 896
972 645 456 599 420 96 665 560 393 331 753 549 175 788 734 490 717 696 520 986
651 269 988 466 990 999 41 371 69 732 217 334 118 176 698 187 847 953 141 918 597
888 679 507 867 221 419 895 210 272 965 602 874 818 77 53 513 524 521 150 36 430
988 627 26 412 342 206 657 945 994 575 643 457 51 819 956 408 20 848 183 962 223
218 627 952 842 753 950 658 570 231 428 994 840 825 881 579 330 333 796 231 646
201 993 301 236 378 29 826 798 15 317 693 113 318 607 568 985 313 930 477 132 946
719 874 586 154 856 136 450 348 147 18 128 235 721 739 202 371 32 244 290 713 362
401 507 102 767 58 98 178 176 537 971 818 907 696 228 425 560 169 623 847 710 845
157 415 583 701 272 715 880 714 469 663 756 74 599 185 175 54 526 831 252 794 108
698 383 873 255 60 26 61 371 428 422 469 584 207 248 910 884 215 811 601 923 356
17 878 488 437 273 405 135 963 327 202 262 88 512 996 408 777 568 938 831 309 694
171 729 936 82 657
240 707
300 669
360 640
194 820 451 580 707 594 281 802 152 811 930 594 524 36 855 367 408 496 41 171 672 555
670 884 768 254 697 309 325 452 269 889 517 125 78 160 314 619 918 177 973 772
783 168 12 998 114 519 896 554 179 353 990 88 714 768 508 222 495 104 483 818 94
762 59 288 696 963 757 776 726 271 331 295 986 309 624 61 63 723 183 788 710 707
384 989 460 839 172 19 28 443 255 646 348 905 172 780 260 810 27 287 671 516 883
292 24 234 872 522 628 927 300 900 652 301 170 888 553 966 204 347 805 474 598
708 650 906 999 847 577 771 837 784 400 938 769 633 102 429 982 603 29 707 849
526 824 851 333 650 752 180 891 257 983 813 579 882 965 553 459 674 646 445 421
990 87 434 313 898 677 418 990 528 769 135 309 384 631 263 469 872 479 71 837 960
536 330 679 580 135 773 951 590 348 954 988 511 562 255 581 602 2 399 370 707 532
99 533 200 703 632 9 815 655 842 720 171 171 919 992 73 921 632 447 279 399 180
862 CAPÍTULO 28. ANOMALÍA DE BELADY CON MATLAB
298 578 760 348 745 696 578 949 822 8 135 180 11 143 536 809 45 243 803 446 527
751 960 751 140 18 720 986 570 989 57 470 761 447 53 827 277 581 736 380 63 239
832 59 36 352 767 472 42 538 754 578 91 274 548 936 756 948 965 732 490 236 606
20 615 888 979 208 368 644 637 46 380 318 136 416 528 152 717 935 383 136 101 677
763 128 394 971 633 734 611 584 461 240 957 684 981 348 529 222 140 21 70 311 222
458 363 703 427 32 461 527 901 750 171 712 970 854 549 333 26 512 904 857 67 592
366 451 488 264 158 27 940 144 207 921 295 831 888 745 749 371 966 854 923 158
209 36 833 815 973 841 489 199 84 927 590 931 856 895 858 26 152 631 27 451 370
472 771 402 999 38 908 777 896 711 137 964 365 438 689 938 135 161 236 355 763
621 288 339 881 340 312 572 400 780 546 933 710 222 643 59 473 253 606 548 812
360 969 259 530 648 405 72 995 539 482 559 755 930 461 31 561 220 189 300 533 142
615 58 447 258 109 174 339 439 215 192 900 484 504 301 130 541 221 402 680 958
968 178 740 470 867 607 616 204 510 975 306 489 152 892 719 335 32 43 811 451 275
991 432 779 577 474 978 325 137 434 17 979 975 120 437 877 988 773 642 903 524
946 570 152 340 354 867 214 693 832 69 549 666 47 919 544 18 743 525 945 565 559
256 962 661 649 876 596 32 989 369 241 265 889 455 615 75 223 10 785 196 946 727
391 201 988 658 596 428 786 360 758 445 112 245 185 832 149 662 652 430 899 185
86 37 619 114 671 932 361 523 952 668 171 183 423 992 625 45 394 753 307 618 126
875 796 810 407 162 757 166 935 395 978 340 93 508 98 941 941 689 61 568 901 240
784 656 749 799 756 967 590 317 992 552 422 474 257 291 811 774 94 525 234 686
805 309 125 852 233 161 255 573 289 297 827 145 878 323 517 106 943 529 810 536
446 316 797 655 761 652 145 453 952 549 53 409 853 746 330 733 359 688 835 242
587 499 43 420 288 198 39 684 378 699 91 522 290 745 310 522 86 269 482 509 853
49 555 260 574 318 430 455 512 170 264 714 868 341 787 539 707 109 89 731 547 985
499 730 813 235 301 379 389 493 45 467 841 987 973 342 812 68 661 174 468 925 551
783 779 41 383 395 607 946 707 125 287 7 18 408 142 353 584 700 191 104 468 379
316 130 417 554 187 671 879 43 125 465 183 363 766 415 370 157 104 814 538 292
467 698 640 758 370 748 885 903 51 666 640 146 66 705 428 764 799 514 183 96 618
806 247 674 161 570 957 52 355 621 820 969 846 743 441 776 700 976 353 545 485
733 318 295 370 805 832 826 368 295 732 459 73 89 241 329 716 797 589 601 842 32
4 88 796 29 348 25 822 843 268 25 78 915 553 634 138 417 531 759 147 978 394 566
517 531 470 73 711 947 297 371 136 378 592 712 510 849 28 488 654 46 479 856 727
989 561 749 484 951 67 685 813 276 475
240 702
300 666
360 636
415 703 646 137 984 445 705 811 119 593 673 197 536 367 743 438 148 870 417 171 277
901 194 135 414 21 510 457 92 497 974 659 573 887 920 863 398 310 149 199 706 810
28.1. DATOS Y EJECUCIONES 863
479 59 842 770 495 985 321 370 432 258 245 140 83 769 299 670 743 35 313 326 236
308 273 273 120 567 19 428 136 739 882 76 119 344 223 88 81 609 706 813 745 963
451 406 37 949 31 52 514 767 860 653 549 43 216 75 85 293 620 264 417 830 298 920
310 434 257 992 467 102 418 601 518 188 768 68 715 936 604 314 387 640 289 110
104 182 912 716 216 148 89 519 643 115 938 827 182 304 547 321 840 54 591 409
689 891 526 409 218 138 115 117 215 280 482 379 704 342 587 325 717 639 125 345
398 207 647 146 992 369 347 653 335 753 106 295 153 65 509 231 863 902 995 438
607 639 329 710 579 896 130 807 217 685 617 519 769 419 910 173 76 242 8 982 126
820 266 368 573 81 336 752 431 691 486 740 936 253 190 403 350 342 215 621 431
33 147 592 92 117 799 537 198 532 579 828 168 348 233 940 257 340 101 838 370
645 323 401 952 73 941 63 694 634 612 770 464 110 762 296 516 292 616 821 710
920 183 382 733 526 306 848 808 720 323 720 161 72 727 792 137 638 187 619 169
397 203 263 565 946 133 618 170 772 738 65 701 699 269 585 614 29 146 722 226
799 637 938 949 194 788 385 222 531 918 299 693 383 313 34 533 161 186 55 277
687 397 587 724 349 65 735 246 535 661 73 450 745 788 606 6 755 855 329 687 502
116 971 202 540 80 325 438 469 541 743 743 30 620 724 838 454 66 518 692 418 84
935 868 922 400 28 568 229 14 227 423 471 3 889 271 929 727 55 208 360 352 331
990 326 325 93 518 576 830 575 432 620 864 108 158 641 133 509 200 425 405 519
829 473 875 680 709 22 83 362 996 360 962 92 67 256 853 831 461 719 472 195 111
88 635 244 502 923 538 101 184 347 516 804 848 84 533 992 397 588 235 565 467 87
491 122 509 551 289 807 844 26 701 278 10 200 753 124 935 84 218 631 911 917 161
69 655 193 535 221 288 182 987 802 546 651 781 613 182 599 891 734 127 826 642
600 941 476 246 691 717 47 777 808 621 400 112 659 994 48 535 881 17 823 673 205
134 539 98 176 835 870 466 110 515 215 618 333 124 234 972 889 974 331 729 628 2
617 891 570 864 118 761 19 622 947 99 640 159 782 577 119 265 87 28 662 14 555 16
451 294 338 612 752 116 642 218 3 668 839 735 103 823 775 797 111 392 197 200 948
676 731 818 433 473 204 803 813 310 197 437 811 449 621 905 453 795 932 696 881
724 259 685 293 338 731 565 666 294 342 695 824 456 599 208 783 686 93 947 262
463 144 743 408 667 987 419 60 306 514 170 192 352 904 560 210 657 165 690 666
134 445 915 826 667 618 209 969 930 637 123 311 177 764 397 802 113 787 849 863
253 899 857 660 932 705 862 508 653 894 221 336 497 667 118 907 27 888 584 580
862 744 331 511 174 822 136 976 206 89 616 522 941 418 199 420 456 340 60 102 41
120 671 732 711 608 996 449 889 342 276 53 655 943 129 226 766 772 388 874 562
579 242 324 465 441 172 241 336 607 806 155 206 550 117 944 677 220 627 592 269
801 577 847 929 198 908 880 417 499 235 500 898 459 1 166 454 507 982 342 335 8
596 175 605 211 275 530 646 396 327 668 846 991 289 961 164 830 657 46 542 61 1
887 883 895 667 760 777 340 437 148 487 300 864 296 506 568 986 752 162 475 24
368 764 857 723 95 270 569 405 131 625 706 821 39 556 78 215 709 204 132 191 318
336 625 839 507 4 606 695 788 609 851 608 648 540 696 753 652 217 383 143 87 677
680 407 773 195 539 994 576 808 963 635 611 445 77 165 457 107 503 400 948 469
84 163 193 562 620 323 131 128 299 844 698 28 28 770 571 863 491 138 957 191 419
311 160 838 677 344 206 490 422 617 550 378 892 924 514 245 353
240 711
864 CAPÍTULO 28. ANOMALÍA DE BELADY CON MATLAB
300 666
360 646
563 623 142 314 991 869 640 44 12 846 588 14 985 593 253 130 678 19 443 843 62 355 266
416 375 529 267 160 284 927 363 581 955 445 128 587 449 52 374 795 500 341 910
945 813 133 394 490 141 260 420 295 715 331 850 259 330 241 11 218 876 196 668
343 90 876 942 266 255 622 619 699 355 633 875 370 782 252 115 352 57 535 536 476
727 219 311 155 732 514 27 751 144 771 189 859 150 340 600 456 190 794 976 893
454 814 284 620 396 358 376 530 689 7 749 249 228 744 500 185 538 569 167 78 612
875 883 83 894 60 490 152 98 915 169 365 353 792 510 248 956 3 97 52 237 237 929
199 140 69 850 395 588 213 459 143 937 329 387 498 496 602 28 140 167 581 36 736
595 602 986 859 227 339 579 964 734 354 232 484 532 364 854 578 56 462 752 1 349
243 130 898 889 86 14 291 614 44 440 598 141 923 388 496 410 635 24 401 59 793 91
990 96 350 583 842 367 72 124 190 560 224 413 227 320 481 657 499 39 390 670 227
551 784 74 370 663 770 46 39 858 824 731 835 483 477 166 302 782 107 360 788 731
658 97 193 578 249 577 195 608 221 5 490 747 199 885 721 585 88 205 750 899 987
693 12 316 965 607 715 337 175 24 981 517 26 816 873 108 829 111 820 937 606 598
95 871 71 786 61 24 216 314 284 108 791 783 42 306 237 356 319 325 373 728 822
353 519 346 807 354 929 38 965 785 946 892 645 864 772 790 8 855 765 6 817 717 8
128 799 99 660 465 185 268 831 104 745 482 721 4 828 951 552 681 292 304 328 523
828 625 664 631 109 631 212 914 73 994 900 794 459 992 649 430 972 973 544 257
311 991 453 440 554 481 113 502 14 275 134 349 457 797 572 801 407 79 689 462 739
700 294 903 102 847 721 231 512 670 993 858 820 470 79 160 860 341 186 885 171
204 987 165 839 376 792 146 829 64 658 141 824 435 444 295 935 602 875 951 292
294 18 509 570 80 284 878 824 999 751 908 124 34 460 168 292 700 632 751 713 74
932 92 598 718 415 839 369 245 850 891 652 204 584 322 332 320 130 246 761 395
176 238 741 130 208 43 179 743 651 299 90 653 554 304 736 908 714 866 424 950 342
36 277 296 330 960 904 248 101 997 81 318 681 758 436 295 31 656 184 873 854 195
565 287 911 178 903 120 116 477 985 535 51 775 491 293 900 908 182 948 924 890
699 770 390 659 138 49 871 783 583 731 580 743 468 545 63 592 929 583 704 42 685
457 34 468 120 72 321 310 855 304 828 859 552 932 859 25 941 111 888 247 757 243
116 684 692 821 276 425 967 249 930 361 542 150 645 871 848 650 783 22 872 416
859 596 376 783 790 446 441 894 226 923 110 104 383 925 167 363 589 604 20 771
26 797 627 120 383 666 966 196 435 278 73 3 3 120 962 346 370 439 366 751 68 341
791 918 458 581 945 4 154 521 268 784 24 202 492 454 597 587 888 672 458 491 967
673 178 295 564 680 179 163 594 804 696 309 746 643 7 999 484 622 288 499 504 458
323 678 681 169 114 955 351 164 430 915 414 448 501 225 591 364 290 491 395 458
663 929 813 178 759 617 85 210 774 358 136 144 886 515 616 288 252 401 488 327
570 584 703 83 172 357 473 621 881 356 988 860 960 554 437 795 422 913 271 556
851 555 573 663 311 368 783 828 307 796 535 318 599 413 701 320 247 582 264 859
781 531 43 60 749 283 363 887 687 500 241 524 337 4 585 766 148 441 349 708 973
365 690 918 590 284 714 676 917 227 159 563 123 175 274 160 915 198 722 325 888
28.1. DATOS Y EJECUCIONES 865
69 736 458 623 686 571 953 758 732 1 775 784 76 489 155 798 425 404 968 460 230
375 350 199 275 56 584 540 636 191 368 120 829 307 678 804 989 599 300 671 738
121 708 661 272 159 936 919 759 768 484 820 941 52 882 957 128 465 398 110 965
708 741 867 763 690 645 591 260 707 827 271 682 378 989 967 641 957 413 621 894
451 966 685 474 457 902 911 540 688
240 703
300 679
360 651
830 266 128 559 353 864 783 456 850 860 604 821 240 11 570 992 541 752 413 918 748 48
515 924 188 474 420 659 641 133 84 930 276 276 39 280 425 663 883 279 921 7 600
454 151 809 387 682 888 825 267 670 822 883 128 469 707 573 305 65 208 245 895
696 265 429 647 126 647 916 786 961 766 585 472 656 671 521 727 740 75 521 111
528 70 564 167 762 48 562 170 82 779 142 314 902 704 54 117 300 973 914 973 47
437 805 870 207 833 975 924 543 27 799 158 414 780 916 289 366 447 114 524 859
139 448 213 182 615 261 306 848 621 582 543 403 82 535 422 314 711 155 177 93 680
733 870 16 698 509 361 823 183 612 302 706 569 126 156 787 950 475 425 917 24 853
661 566 907 661 679 581 383 919 276 967 74 308 318 336 973 296 677 293 808 826
944 233 763 7 641 546 698 841 656 278 759 146 671 596 505 885 568 890 249 136 617
28 218 209 88 135 116 498 511 418 947 856 340 9 867 983 604 14 747 147 411 952
601 828 891 893 388 52 842 45 80 7 568 527 19 47 184 466 504 496 479 243 283 819
69 73 780 212 79 650 939 656 64 706 18 799 773 937 748 377 168 117 374 87 78 849
684 765 572 54 569 84 86 76 465 835 89 464 492 14 728 748 627 151 891 828 135 625
129 611 802 845 518 256 790 534 243 741 611 309 80 568 814 196 943 188 286 388
642 183 24 724 939 977 818 518 62 802 489 501 998 114 742 305 711 863 135 62 538
701 230 485 665 429 636 381 299 472 780 347 222 673 361 826 537 393 925 514 143
751 336 324 490 714 226 266 275 346 177 394 61 817 993 642 621 571 8 640 205 150
655 766 46 556 856 166 278 78 75 742 792 713 750 836 86 29 982 808 415 930 435
741 413 44 68 181 103 403 169 125 479 783 373 610 96 649 743 509 565 98 200 715
858 655 920 768 385 714 228 694 970 325 761 561 241 799 842 111 691 549 599 9 411
92 445 853 617 173 387 184 875 911 951 637 760 29 398 471 379 747 613 279 121 620
836 333 796 51 592 425 926 776 27 722 671 410 226 455 155 531 329 721 195 421 878
229 880 805 523 540 79 266 749 636 120 357 900 790 773 678 606 930 988 96 395 923
876 334 523 122 384 570 600 433 89 922 839 789 420 340 580 101 80 86 524 411 534
124 153 166 86 602 675 44 490 644 10 578 961 974 536 534 414 292 33 162 324 675
820 424 710 32 132 794 288 156 675 763 932 501 476 253 926 794 50 383 181 822 309
785 450 355 878 114 193 441 146 721 814 588 568 861 654 32 153 657 328 695 724
810 226 835 898 66 870 343 748 878 934 468 422 815 908 484 819 879 789 906 27 383
197 752 890 956 621 691 942 969 456 407 391 243 502 106 983 419 173 906 351 383
866 CAPÍTULO 28. ANOMALÍA DE BELADY CON MATLAB
363 429 655 636 945 66 984 113 715 899 173 820 169 435 802 311 638 76 40 377 38
46 682 637 453 442 362 246 129 933 646 790 9 302 636 211 586 206 664 755 565 940
132 99 392 468 408 451 130 387 886 316 352 154 735 239 37 664 452 572 597 393 82
582 113 879 681 177 150 71 985 390 790 502 815 171 913 333 693 628 13 11 768 860
981 252 889 528 29 461 234 171 173 454 473 662 990 320 693 584 696 68 779 908 339
927 289 590 25 992 316 502 150 793 484 412 28 856 235 311 253 832 74 142 362 490
434 116 485 867 649 979 633 35 315 573 995 683 960 6 123 784 932 313 949 505 977
839 317 825 382 7 525 739 555 864 704 969 760 127 210 109 887 154 903 5 494 950
726 156 890 789 362 112 406 524 9 587 647 77 797 843 59 464 281 749 933 236 178
795 341 245 577 278 850 476 882 426 826 407 189 396 384 333 114 306 552 876 667
416 80 78 836 583 671 602 406 530 531 739 526 223 467 630 158 953 857 916 866 763
58 95 388 147 906 635 589 8 627 486 176 802 731 900 239 394 895 277 659 726 874
633 241 565 352 619 319 378 304 617 458 936 897 511 743 156 610 394 29 890 912
960 186 784
240 703
300 674
360 646
526 304 594 255 721 775 610 652 144 499 762 754 362 864 863 626 743 625 110 253 322
345 660 84 996 67 435 815 372 919 667 695 936 392 423 665 338 371 242 78 579 612
729 979 142 86 92 23 630 621 860 19 766 805 939 715 781 547 22 348 937 195 343
213 777 834 671 806 680 292 202 426 378 123 487 986 63 702 113 702 797 28 769 753
968 347 972 911 302 67 846 108 15 311 130 860 488 713 739 787 41 686 877 88 93
178 102 644 219 909 588 647 143 426 802 764 402 813 437 214 333 281 803 263 780
923 265 912 566 737 658 881 619 911 696 565 34 579 246 49 540 782 898 276 511 733
531 600 709 65 401 828 47 55 534 939 81 392 288 549 831 610 377 578 148 620 922
12 169 565 884 334 756 907 33 12 928 80 784 980 313 749 565 89 197 126 58 702 315
112 411 363 241 114 863 866 578 145 538 819 532 328 993 343 735 188 236 975 72
894 925 991 829 948 476 758 384 15 127 837 51 284 664 372 10 420 94 693 190 415
173 319 227 246 501 586 733 457 388 63 917 232 481 378 72 620 174 993 829 658 395
289 614 678 266 836 990 96 537 517 272 581 482 111 866 341 159 972 346 711 984
64 530 75 694 928 326 512 419 318 354 407 30 996 83 179 899 143 335 16 23 220 963
513 184 144 887 792 529 895 172 700 939 458 559 39 200 533 647 627 527 638 760
651 257 386 848 53 292 323 989 940 676 851 760 369 791 454 24 141 829 63 5 224
245 36 388 697 150 765 647 315 481 409 904 147 536 213 368 252 870 318 25 820 402
341 756 224 475 196 190 423 12 842 284 499 538 434 402 906 893 847 927 895 3 673
934 158 52 867 197 33 911 100 462 485 927 235 387 848 972 90 612 860 125 243 771
632 939 124 938 282 712 978 597 996 8 320 370 340 250 738 182 109 154 997 765 147
112 359 291 906 732 103 774 852 894 250 771 129 471 181 434 299 764 242 24 289
28.1. DATOS Y EJECUCIONES 867
557 693 581 221 135 953 927 533 496 757 72 609 617 221 195 426 282 533 111 133
919 18 276 40 334 693 623 130 546 988 478 593 496 849 627 129 225 291 185 983 329
929 726 806 571 113 117 257 874 164 617 709 126 328 580 97 780 873 631 607 642
399 817 260 456 681 482 566 397 302 781 401 194 189 967 181 572 348 611 52 948
339 941 844 958 916 300 659 13 558 730 516 488 132 821 195 391 895 7 324 855 695
733 491 651 982 530 997 205 465 991 77 519 480 985 446 187 106 970 67 104 37 945
162 580 724 33 996 154 24 381 919 723 774 851 659 573 226 9 268 315 776 350 239
642 615 454 17 775 405 301 73 970 97 707 427 954 253 195 507 939 518 160 608 657
56 465 856 791 917 10 219 819 376 317 102 808 135 211 379 706 689 725 784 366 579
283 717 522 178 721 576 910 474 970 911 325 367 984 343 538 340 906 610 379 944
990 324 782 772 182 159 904 777 588 615 969 558 414 390 797 176 36 993 478 549
422 781 549 84 934 582 47 917 309 373 338 289 324 460 484 621 895 960 540 706 265
610 688 24 233 978 135 28 194 734 176 928 366 557 273 315 484 639 925 328 495 46
147 929 955 890 268 332 102 808 26 88 117 699 61 546 266 555 147 841 30 486 790
200 60 47 721 61 863 803 966 249 845 179 798 938 630 523 839 374 791 568 729 273
731 862 254 278 812 335 242 576 774 244 951 155 164 701 358 645 381 396 854 995
464 199 197 833 174 125 892 506 288 934 285 838 511 954 721 36 741 208 644 53
145 709 461 660 769 788 937 278 914 103 262 30 973 13 597 106 325 805 162 535 62
121 947 138 31 78 259 425 448 421 224 742 227 918 757 792 930 459 597 750 96 470
997 264 929 333 121 568 531 490 269 756 886 14 329 303 103 831 319 519 907 294
292 333 43 406 892 130 598 467 312 641 124 870 671 878 417 78 356 895 691 12 77
40 399 639 102 323 645 560 20 917 289 172 465 777 227 45 440 869 410 366 149 161
394 957 600 287 392 874 136 115
160 767
200 741
240 719
280 111 624 597 358 333 335 725 158 400 823 165 877 326 311 373 848 451 834 412 802
696 15 643 464 250 572 692 246 765 2 219 332 62 567 275 785 974 162 739 944 159
246 850 4 500 68 803 53 975 146 217 218 463 748 855 847 674 307 645 906 539 940
707 449 934 855 811 619 580 908 193 558 978 683 181 885 833 803 127 823 580 842
85 406 585 805 74 160 127 265 251 739 918 429 985 995 808 119 871 402 58 219 272
149 658 755 5 417 688 827 31 74 454 912 905 578 122 823 810 55 933 800 709 634
87 775 618 768 816 653 923 341 971 875 311 536 847 274 47 240 425 401 863 875 12
711 931 829 416 521 988 947 4 158 415 269 582 715 845 112 494 786 959 467 72 808
95 364 963 17 197 577 980 129 921 363 474 11 650 554 513 700 698 641 896 125 180
383 167 154 684 330 716 944 625 620 778 454 520 485 901 48 41 438 621 794 723 780
360 784 512 206 74 427 582 95 482 711 967 220 248 820 903 697 643 557 854 177 878
377 153 161 178 877 665 226 227 85 676 640 680 425 487 568 67 916 348 795 602 1
868 CAPÍTULO 28. ANOMALÍA DE BELADY CON MATLAB
857 218 771 701 763 915 668 463 385 571 985 160 636 579 744 456 721 473 529 995
506 500 568 732 686 316 680 20 831 703 911 431 610 647 242 330 738 161 155 254
599 828 372 632 890 249 691 357 64 125 229 472 659 820 748 897 777 430 967 966
877 194 988 943 990 57 495 172 136 191 446 120 777 674 337 782 485 609 64 762 410
779 704 556 151 755 22 100 446 342 746 514 993 386 627 741 758 980 73 391 156 129
919 480 451 220 6 156 864 929 669 467 600 753 593 455 256 996 971 988 935 346 720
126 320 583 592 985 170 580 279 317 166 840 591 798 586 624 30 430 157 191 948
185 727 417 911 427 951 763 829 851 218 268 612 721 194 595 461 50 6 782 55 434
406 147 182 416 322 150 575 558 982 792 918 346 798 509 202 658 645 34 492 255
490 232 569 490 850 368 611 366 438 479 909 917 815 972 888 941 785 954 473 401
545 54 336 366 884 994 254 800 126 611 83 117 381 565 472 604 287 408 251 265 821
300 107 516 130 103 531 621 151 786 494 580 727 564 902 601 584 709 740 622 697
776 286 378 959 216 875 466 231 978 872 216 358 262 252 757 205 394 252 736 163
383 159 272 602 542 743 982 364 529 6 412 407 703 332 172 375 390 906 481 489 888
225 190 323 550 625 848 214 300 223 439 103 788 419 357 319 296 807 986 749 951
362 438 722 419 482 898 602 660 8 60 583 584 557 311 632 198 231 961 817 28 14
577 415 495 484 199 278 815 169 558 351 677 999 338 691 122 411 618 195 368 224
521 481 15 278 897 67 777 930 498 995 190 608 26 302 998 819 254 754 216 586 850
608 244 669 64 795 8 835 19 407 225 279 897 42 108 1000 856 782 286 56 599 939
837 934 4 626 450 841 998 945 963 937 657 592 38 175 200 672 88 812 760 845 697
163 508 830 317 184 1 124 912 666 62 496 634 94 143 534 451 607 255 833 502 815
591 559 257 545 321 236 662 429 162 952 756 494 427 419 233 684 371 142 192 327
518 303 511 693 284 87 70 595 139 7 745 113 824 163 526 765 168 917 292 907 958
817 443 174 201 675 835 165 488 291 911 616 263 826 196 298 318 273 609 836 691
419 978 612 849 43 143 574 230 967 493 182 599 90 900 847 309 324 765 78 123 116
869 334 495 351 970 873 257 966 969 621 295 95 152 604 669 365 913 376 690 476
223 643 940 660 703 955 424 120 205 352 395 424 688 495 776 159 669 216 615 960
198 525 863 575 633 87 589 176 259 460 591 698 497 73 914 102 568 14 443 866 382
97 367 213 910 22 331 223 941 134 110 166 124 353 27 551 27 350 22 711 292 364
930 265 494 366 568 650 421 292 494 506 225 454 145 603 403 440 379 352 601 247
214 127 568 400 893 996 311 220 651 681 909 648 412 608 226 439 561 260 70 854
297 584 27 833 263 757 545 803 837 464 233 562 995 395
160 772
200 749
240 722
749 359 994 706 779 545 779 794 548 560 752 180 836 79 11 132 388 942 968 451 459 499
45 885 952 636 585 69 16 23 646 875 42 873 716 238 575 526 241 359 95 369 741 801
338 642 202 232 358 787 402 958 62 514 122 484 371 261 83 97 38 840 323 757 317
28.1. DATOS Y EJECUCIONES 869
314 660 520 262 928 666 383 209 702 997 204 503 193 216 835 451 144 263 285 558
561 731 4 932 415 962 415 326 545 714 373 41 121 17 55 580 478 759 16 479 299 666
345 203 36 939 388 507 837 530 70 649 295 614 860 651 7 364 261 220 251 297 509
44 70 37 847 24 494 801 183 849 504 331 373 142 391 999 507 295 348 484 854 235
584 508 928 184 1 481 212 393 331 433 927 524 93 837 833 690 647 237 946 780 555
598 769 777 588 279 67 347 316 290 671 430 562 626 128 785 740 475 451 645 911
959 168 690 374 121 213 196 221 182 945 560 367 706 550 892 619 328 529 369 277
437 883 929 722 905 604 629 994 220 205 794 898 445 144 321 997 805 481 889 963
625 193 563 988 483 546 627 321 830 77 549 411 927 841 887 932 89 13 275 377 160
940 285 688 651 277 158 471 384 177 59 568 714 801 85 933 184 184 647 686 13 22
700 432 236 860 90 882 556 157 864 204 359 784 534 537 353 547 687 886 839 775
316 349 799 22 853 280 822 203 719 471 439 746 550 273 776 952 10 618 466 168 519
691 657 331 665 216 917 835 927 107 50 362 991 926 655 88 209 37 966 622 512 140
136 148 755 783 56 919 448 350 384 294 376 13 125 390 147 791 361 231 348 782 848
109 627 989 837 827 951 116 315 966 957 512 970 619 832 837 604 631 124 217 111
597 935 658 198 793 550 117 359 698 921 202 498 166 53 688 654 442 106 43 915 655
834 982 195 450 566 682 314 289 993 392 675 476 631 166 698 505 131 630 792 435
382 137 844 659 552 518 848 305 182 887 733 576 650 212 185 972 262 263 360 143
43 599 716 518 297 716 578 501 853 216 122 992 980 201 251 445 612 510 365 576
975 154 803 885 939 61 869 743 305 272 869 775 806 437 212 887 525 959 30 884 690
794 951 175 666 697 627 329 542 793 40 329 361 796 224 536 763 303 93 946 135 569
399 474 228 257 917 300 570 203 781 609 216 204 988 377 324 565 478 679 688 401
445 606 229 91 417 370 332 243 984 940 852 528 17 644 814 144 773 439 870 147 263
932 302 294 963 501 321 506 955 877 722 182 518 169 676 468 924 549 559 488 56
868 704 567 388 143 495 624 913 751 432 20 6 987 661 882 766 861 685 217 948 823
334 45 185 59 263 72 115 909 26 677 655 740 453 794 2 598 64 532 71 565 584 188
640 710 915 470 554 29 720 349 716 743 478 485 221 163 15 924 157 486 217 71 608
105 363 413 513 947 145 530 870 530 200 927 266 119 470 379 971 516 167 296 247
281 350 282 870 833 696 133 625 717 67 676 477 156 257 771 687 738 194 835 563
706 574 691 491 837 496 314 286 763 759 443 208 791 737 133 332 85 615 611 331
958 96 74 385 360 111 703 548 413 274 33 237 982 955 683 374 295 46 532 465 944
893 682 801 90 867 643 552 525 397 243 501 859 279 935 886 100 858 894 244 459
360 619 187 440 568 18 186 849 318 136 891 792 889 340 739 407 624 570 420 656
312 494 519 387 487 422 261 357 433 423 839 244 270 990 91 277 556 598 861 989
445 340 710 511 247 890 757 278 406 795 444 618 213 185 281 497 354 450 528 874
528 380 905 399 271 724 326 753 600 212 731 610 431 449 998 571 560 160 757 894
24 572 656 584 308 452 737 505 851 315 661 923 16 389 454 937 558 175 311 233 585
627 914 944 870 691 694 596 331 329 58 74 474 908 428 987 550 688 225 111 927 470
210 44 973 171 404 294 94 578 247 420 533 581 410 252 983 876 916 353 162 498 744
765 974 540 452 744 558 210 412 124 337 456 762 505 305 971 702 700 934 240 752
207 628 125 905 1 445 929 429 864 655 708 614 591
160 763
200 736
870 CAPÍTULO 28. ANOMALÍA DE BELADY CON MATLAB
240 709
336 335 308 711 205 808 146 984 834 111 795 975 484 936 207 534 844 937 449 609 717
213 179 239 793 595 114 530 577 475 204 126 837 40 833 677 348 264 828 404 514
92 488 766 957 160 253 15 889 939 478 188 552 654 165 234 94 105 13 623 401 538
45 651 362 679 99 650 6 204 229 400 33 853 128 396 109 32 357 302 438 975 728 50
186 529 237 791 402 63 808 580 859 884 790 457 353 272 316 463 143 841 854 841
352 288 345 359 969 557 164 293 769 967 196 876 65 273 523 937 449 940 994 201 1
551 593 942 38 402 468 642 415 568 784 42 153 795 810 861 589 947 161 480 1 676
245 843 536 561 110 856 654 499 361 761 483 283 391 266 291 792 326 602 707 784
43 787 805 795 947 157 141 94 723 267 632 889 576 224 802 791 489 425 101 446 80
673 627 385 370 784 488 488 169 139 756 714 595 255 209 186 606 260 711 428 402
981 667 959 496 781 15 855 824 680 626 8 861 865 22 850 153 636 929 415 44 961
310 461 633 140 788 846 227 580 783 695 658 186 892 354 237 321 508 460 200 270
385 142 358 333 72 859 432 529 974 482 988 369 375 276 779 858 931 573 524 562
743 108 428 317 902 726 515 251 256 546 238 514 699 191 914 605 997 787 949 417
941 434 706 136 368 956 756 107 370 946 439 482 236 775 77 269 152 210 792 190
626 950 498 394 983 621 657 48 92 939 323 529 864 643 582 905 582 446 10 362 539
21 118 135 389 616 582 655 803 379 278 422 451 569 153 804 491 286 736 580 92 814
123 919 444 428 548 123 740 135 276 650 549 76 615 202 170 649 263 935 365 135 40
223 992 53 171 255 363 228 261 119 572 410 502 888 431 502 988 590 870 255 440
763 40 927 824 919 977 569 306 881 365 440 197 835 826 873 219 968 826 598 187
75 375 672 111 630 808 580 849 430 993 800 109 69 889 667 661 0 771 765 639 728
169 742 397 545 229 113 1 95 331 81 459 149 696 969 444 262 979 990 402 961 182
25 91 745 582 511 128 459 651 413 817 825 353 834 913 930 700 426 763 618 578 580
199 183 629 482 738 577 312 745 557 749 613 357 337 678 616 954 94 731 337 526
978 312 938 162 504 838 901 352 829 195 767 154 732 195 982 53 591 731 566 973 92
403 327 786 37 423 783 113 955 245 873 552 920 740 756 746 277 528 218 766 775
503 913 577 899 906 897 749 772 250 674 51 716 472 566 630 759 522 648 107 215
737 669 799 908 796 268 65 309 652 900 211 351 397 547 775 417 180 227 954 403
968 920 538 220 492 629 658 774 913 807 650 212 767 377 418 178 95 821 384 114
945 151 865 734 170 326 775 477 11 579 953 248 298 372 839 408 78 424 50 200 571
170 946 653 213 896 265 542 181 281 11 983 999 668 427 245 867 854 338 309 820
340 607 171 921 268 494 606 694 398 967 698 286 779 725 58 265 343 525 422 121
847 668 528 97 255 462 969 915 224 519 878 686 397 419 494 163 61 144 114 82 777
610 648 903 414 544 462 776 842 607 274 600 683 521 787 832 310 404 112 10 680
89 546 339 239 719 73 300 529 370 475 80 542 670 473 546 327 80 433 149 370 20
590 885 348 895 526 811 899 766 621 898 912 615 139 420 562 255 988 15 637 982
791 753 721 895 899 553 711 180 837 451 205 471 370 88 380 488 923 359 508 531
716 912 202 166 225 612 269 634 331 296 333 919 64 686 505 503 976 931 582 426
194 506 955 969 784 580 876 69 802 498 622 60 1 191 428 335 62 123 516 278 757
839 141 166 746 756 59 858 998 215 69 366 756 324 882 591 464 832 471 702 781 797
711 17 402 853 966 91 593 730 65 71 565 23 893 618 578 840 136 958 185 561 407
28.1. DATOS Y EJECUCIONES 871
528 297 651 470 263 428 54 507 994 965 555 1 945 901 94 918 886 939 262 677 843
349 45 835 646 238 856 146 798 328 53 892 227 835 612 459 165 146 456 304 430 55
153 741 508 419 995 943 727 704 763 195 252 781 118 46 387 871 107
160 769
200 750
240 730
658 983 823 502 827 213 287 329 36 699 963 536 157 598 217 885 452 436 392 903 334
378 226 374 498 546 279 246 458 384 689 413 423 581 137 451 806 878 910 127 808
70 316 540 292 279 65 128 951 446 838 12 926 269 918 802 348 260 247 231 890 883
435 543 662 872 306 98 342 541 352 347 209 33 453 572 579 127 868 830 715 275 562
369 736 146 111 592 884 82 552 225 733 507 186 500 676 673 553 938 438 998 172
499 839 775 587 618 241 783 518 264 144 779 606 804 520 792 675 457 536 993 765
609 727 379 54 289 833 741 603 773 762 490 802 916 111 527 176 176 567 29 482 838
446 148 165 528 77 420 139 631 641 321 421 353 251 96 327 226 625 539 804 217 612
722 957 227 602 251 353 460 101 689 84 378 900 67 853 519 522 866 526 970 573 879
221 499 517 480 147 699 150 660 858 894 363 391 229 89 471 410 44 223 168 462 119
179 826 606 801 613 322 97 509 370 885 52 545 470 359 968 81 963 837 915 328 693
551 223 447 427 353 678 812 232 198 339 984 87 901 371 542 129 264 618 81 932 516
331 780 671 856 289 863 769 704 771 72 505 995 712 551 772 936 633 714 714 117
466 854 470 596 130 281 337 551 664 690 392 715 130 793 931 739 439 309 331 540
461 332 889 818 802 573 785 967 992 735 550 981 228 652 359 431 199 204 986 967
196 717 52 394 188 340 208 703 896 270 218 603 496 397 301 422 286 876 141 852
298 360 231 727 888 982 123 241 939 475 28 788 465 820 623 784 249 376 27 633 307
453 229 157 931 142 521 439 677 872 112 175 134 918 50 953 334 310 190 593 458
819 989 412 729 98 237 205 714 228 992 314 589 736 280 620 197 621 960 119 618
449 587 308 512 841 618 215 779 5 122 472 36 900 416 183 204 766 5 815 817 386
64 113 236 569 190 230 70 899 276 102 743 944 874 432 985 70 42 334 935 327 831
235 251 304 8 987 800 514 69 908 291 431 911 308 403 502 588 405 992 181 388 285
413 180 3 398 598 213 893 37 604 221 974 189 866 896 74 846 505 728 443 572 750
525 984 249 552 583 315 332 446 543 136 19 193 74 328 291 531 915 237 935 527 243
373 647 518 299 405 734 317 735 393 495 340 12 8 484 389 240 457 464 883 398 166
586 925 403 551 404 18 975 807 781 321 424 475 372 305 265 946 916 737 637 920
43 209 715 573 326 719 477 807 102 74 154 298 723 11 167 623 162 320 322 885 531
565 217 858 977 233 657 117 146 73 756 941 131 598 167 272 106 187 134 979 19 60
765 653 784 148 778 697 145 85 41 717 909 223 16 971 243 264 672 291 311 712 977
314 322 65 71 346 390 418 913 327 132 986 424 794 448 702 861 478 380 343 169 609
773 433 454 220 835 363 73 434 28 165 605 496 454 272 233 231 900 920 484 86 485
570 761 599 819 651 750 173 430 691 412 504 911 556 768 20 599 746 677 358 523
872 CAPÍTULO 28. ANOMALÍA DE BELADY CON MATLAB
524 404 643 320 937 663 47 67 364 151 558 970 655 468 968 497 260 841 857 477 380
214 314 773 304 900 270 632 430 384 888 846 24 773 291 744 912 660 816 646 122
192 264 157 332 636 43 305 26 72 670 109 12 809 378 645 162 951 365 801 194 330
935 967 741 478 351 31 485 657 780 469 438 67 462 305 859 26 489 584 320 316 899
499 509 53 898 992 745 83 694 24 270 697 78 873 627 775 290 526 748 356 454 399
426 729 133 282 950 635 261 230 695 608 229 747 446 500 635 395 395 146 876 822
142 451 938 523 776 227 677 484 804 14 13 714 411 569 65 367 907 504 418 442 361
407 715 954 491 746 675 945 108 106 223 679 608 673 239 662 307 280 527 105 165
938 289 742 500 148 830 162 341 953 826 625 286 988 567 224 862 575 421 979 961
812 482 942 930 989 556 617 737 734 255 634 531 604 464 198 406 485 832 149 400
633 434 691 96 754 511 144 218 255 45 257 126 70 783 536 438 265 992 760 926 752
989 76 413 70 788 633 352 136 894 531 924 383 580
160 777
200 745
240 713
314 49 201 904 960 607 848 218 210 590 829 482 142 779 426 41 126 112 327 70 819 439
213 377 105 355 224 41 798 746 943 129 873 244 537 732 965 243 184 362 476 861
772 761 195 86 687 45 94 734 913 956 59 426 42 781 80 988 237 304 938 990 390 865
596 107 550 403 322 672 706 879 427 202 315 594 572 324 954 594 45 665 127 635
367 212 693 321 619 467 958 49 632 221 147 337 554 376 60 315 548 321 924 744 413
763 356 477 704 802 238 241 107 702 671 790 430 176 412 844 653 673 914 782 187
833 768 302 235 195 257 28 255 129 44 430 696 981 140 516 457 565 378 893 747 153
931 614 558 116 212 917 655 658 445 861 860 977 776 601 893 241 243 214 109 58
970 768 536 752 762 450 414 603 916 73 789 206 419 3 338 686 68 883 269 796 436
850 265 832 282 945 948 388 28 286 544 213 438 818 506 724 544 11 156 976 787 69
706 638 651 284 542 516 169 667 122 909 693 168 309 85 659 53 762 802 743 56 629
506 394 597 185 961 949 707 99 973 886 183 606 826 331 755 405 360 249 150 86 283
603 357 148 674 842 570 137 943 675 185 321 118 734 949 426 956 323 34 410 978
165 519 735 879 47 813 506 637 709 350 365 562 383 462 645 810 968 504 588 503
320 184 584 64 666 342 37 952 255 806 91 888 814 304 94 794 744 104 708 168 703
683 752 480 332 175 440 281 63 971 590 337 434 744 496 201 439 422 601 456 496
488 65 358 62 982 388 225 279 504 707 494 350 467 265 922 607 209 885 511 933 753
702 514 532 425 456 320 723 203 656 20 661 904 413 491 40 546 259 100 558 492 170
520 770 197 58 366 667 43 464 956 817 532 629 169 990 723 860 101 136 715 113 649
223 999 20 349 608 614 626 352 482 346 786 460 272 676 77 907 593 658 961 585 777
28 324 744 860 833 931 317 778 809 579 774 290 536 406 503 213 312 178 784 625
255 715 608 471 929 513 87 57 882 637 109 651 515 184 462 287 300 888 347 384 117
595 462 161 739 285 739 572 626 818 464 939 622 830 300 256 707 525 495 9 210 844
28.1. DATOS Y EJECUCIONES 873
558 610 324 273 187 774 809 146 480 648 823 293 358 714 10 54 788 176 581 55 103
293 410 513 25 913 20 174 421 992 638 922 875 216 168 206 57 143 664 99 874 288
994 188 938 424 271 623 719 697 727 180 674 969 800 837 313 354 622 28 710 492
334 26 30 319 625 206 984 703 104 889 562 532 204 677 75 818 256 861 816 787 114
306 900 773 678 796 201 70 832 913 24 748 478 470 713 838 9 280 23 686 165 941
34 689 338 20 204 125 574 174 106 805 499 581 939 447 577 996 418 172 54 321 975
881 616 404 441 255 882 688 434 720 348 432 919 75 533 454 174 282 198 726 103
908 702 788 931 37 334 5 831 528 334 761 579 322 926 895 959 644 32 94 122 442 88
306 857 40 987 694 828 924 537 18 82 14 324 303 552 913 131 606 532 141 666 492
876 843 352 510 618 403 602 401 63 442 470 524 152 197 372 966 927 464 911 945
441 904 105 991 915 477 66 900 12 56 227 117 198 560 348 515 454 846 100 986 516
992 872 934 765 199 193 589 311 413 988 891 292 643 864 240 791 951 274 188 513
908 469 90 719 769 87 470 935 101 8 817 417 678 211 474 187 147 667 24 90 787 55
64 916 806 547 98 867 704 73 65 352 855 589 445 510 468 738 26 494 612 59 416 838
58 701 437 531 244 409 306 992 6 171 864 3 322 241 410 596 481 177 148 538 964
582 694 580 571 115 185 958 665 151 328 894 952 265 666 424 309 93 585 454 834
226 811 565 768 810 356 111 380 459 255 220 559 933 575 955 981 324 905 697 961
193 851 523 581 899 780 828 132 302 555 110 627 763 851 718 124 478 207 374 981
703 226 976 337 287 202 716 834 5 931 9 18 951 86 129 680 871 648 271 396 751 917
394 63 129 502 105 463 900 432 601 605 633 991 56 910 139 946 366 425 505 301 992
229 776 644 405 962 219
80 830
100 813
120 801
[6] E. Castillo; M. Reyes Ruiz Cobo. Preparación de Documentos con Latex. Maestría
en Informática y Computación - FACENA - UNNE, Argentina, 1998.
[12] Borland International. Turbo C++ - Getting Started. Borland International, USA,
1990.
[13] A. Kvitca. Resolución de Problemas con Inteligencia Arti…cial. EBAI, Brasil, 1988.
875
876 BIBLIOGRAFÍA
[16] R. Penrose. La Nueva Mente del Emperador. Mondadori España S. A., España, 1991.
[18] A. C. Shaw. The Logical Design Of Operating Systems. Prentice Hall, NJ-USA, 1974.
[21] W. Stallings. Data and Computer Communications - Fifth Edition. Prentice Hall,
NJ-USA, 1997.
877
878 ÍNDICE DE MATERIAS
de descifrado, 387
uniprocesador
virtual, 233
unitransmisión, 280, 284
UNIX, 227, 271, 278, 333, 336
esquema de protección de, 230
semántica de, 337
User Interface, 445
ESB, 433
usuario
autenti…cación del, 147
imágenes de, 78
UTC, 294, 297
repector de, 295
utilización, 354
wait, 251
WAN, 227, 245, 271
working sets, 109