You are on page 1of 168

SISTEMAS OPERATIVOS

1

SISTEMAS OPERATIVOS
RESUMEN

El texto presenta la evolución de los sistemas operativos a lo largo de la historia, introduciendo los conceptos fundamentales relativos a éstos, como podrían ser la administración de procesos. Así mismo, se ha tratado de dar todas las referencias posibles sobre Sistemas Operativos desconocidos para la mayoría y que han jugado un papel más o menos determinante en la historia. Se han incluido algunos que no han pasado de vigencia, pero lo citamos como simple curiosidad. De cualquier manera, la lista proporcionada es muy incompleta dado el gran número de Sistemas Operativos que existen o que han existido.

2

INDICE GENERAL
RESUMEN …………………………………………………………………………. v INTRODUCCIÓN ………………………………………………………………….. xi CAPÍTULO 1 PANORAMA GENERAL ……………………………………………….. 1

1.1. ¿Qué Es Un Sistema Operativo? ……………………………………………… 1 1.2. Tipos De Sistemas Operativos ………………………………………………………. 6 1.3. Historia De Los Sistemas Operativos – Generaciones ……………………………. 9 CAPÍTULO 2 ADMINISTRACIÓN DEL PROCESADOR ………………...................... 12 2.1. Introducción Y Definiciones Sobre Procesos ……………………………………….. 12 2.2. Estados De Procesos …………………………………………………………………. 15 2.3. Procesamiento De Interrupciones ……………………………………………………. 17 2.4. El Núcleo Del Sistema Operativo ……………………………………. ……………… 20 2.5. Políticas De Planificación De Procesos ………………………….. ………………… 21 2.6. Niveles De Planificación Del Procesador ……………………….. …………………. 22 2.7. Objetivos De La Planificación ………………………………………………………… 24 2.8. Criterios De Planificación ……………………………………………......................... 25 2.9. Planificación Apropiativa Versus No Apropiativa ………….………………………… 27 2.10. Algoritmos De Planificación De Procesos ………………………………………….. 29 2.10.1. Planificación Primero En Entrar, Primero En Servirse ………………………….. 29 2.10.2. Planificación Sigue El Trabajo Más Corto ………………………………………. 31 2.10.3. Planificación Por Prioridad ………………………………………………………… 33 2.10.4. Planificación Tiempo Restante Más Breve ………………………………………. 33 2.10.5. Planificación Round Robin …………………………………………………………. 36 2.10.6. Planificación De Colas De Multiples Niveles …………………………………….. 39

3

. Procesos Concurrentes Asincrónicos ………………………………………………….. Sincronización De Procesos Con Semáforos …………………………………….12.14.6.. Protección …………………………………………………………………………….1. 61 3.8. 41 3.2.. Reubicación …………………………………………………………………………… 91 3. 51 3. 49 3. Requisitos Para La Administración De La Memoria ………………………………… 91 4..12.1. Bloqueos Mutuos Y Bloqueos Indefinidos ……………………………………. La Relación Productor – Consumidor ……………………………………………….. Algoritmo De Dekker …………………………………………………….1. 41 3.8. 71 3....CAPITULO 3 ADMINISTRACIÓN DE PROCESOS CONCURRENTES …………... Algoritmo De Lamport ……………………………………………………………….. 78 3..2. Algoritmo De Peterson ………………………………………………………………… 65 3. 80 3.4..11.. Implementación De Las Primitivas De Exclusion Mutua ……………………………. Introducción Al Almacenamiento Real ………………………………………………… 90 4. 52 3... Secciones Críticas ………………………………………………………….11. 44 3..10.2.. 85 3.12.2.13. Algoritmos De Exclusión Mutua ……………………………………..... ………………… 52 3.11. 89 CAPÍTULO 4 ADMINISTRACIÓN DE LA MEMORIA …………………………………… 90 4. 4 ... Semáforos ………………………………………………………………………………. Exclusion Mutua De N-Procesos ……………………………………………………… 68 3. 41 3.1. Primitivas De Exclusión Mutua ………………………………………………………….1.. 48 3... ……………. Compartición …………………………………………………………………………..2.2. Semáforos Contadores ………………………………………………………………... Procesamiento En Paralelo ……………………………………………………………. 75 3. Algoritmo De Dijkstra ………………………………………………………………… 68 3... 93 4..7.3. Desarrollo Intuitivo ……………………………………………………………………..9.2...1... Exclusión Mutua ………………………………………………………………………….3. 42 3.. Una Estructura Para Indicar El Paralelismo: Cobegin/Coend ………………………..2...5.

1. 115 5. Carga De Programas En Memoria Principal ………………………………………….1.3.. 114 5.4.93 4. Operaciones Con Archivos …………………………………………………………… 117 5. 95 4.3. Partición Fija …………………………………………………………………………… 96 4. Algoritmos De Reemplazo ………………………………………………………….4. Memoria Virtual …………………………………………………………………………..7. Protección De Memoria ………………………………………………………………… 109 CAPÍTULO 5 ADMINISTRACÓN DE LOS ARCHIVOS ………………………………… 110 5.5.5.3. 114 5.3. Nombre De Los Archivos ……………………………………………………………..6. 96 4.. Archivos Mapeados A Memoria ……………………………………………………… 118 5 .4. Algoritmo De Ubicación ……………………………………………………………..3. 101 4.2.. .1.4. Tamaños De Partición ……………………………………………………………… 96 4.4..1. Partición Dinámica ………………………………………………………………….1.3.4..4. El Sistema De Archivos ………………………………………………………………… 112 5. 99 4. 111 5.4.4. Organización Lógica ………………………………………………………………….1.1. Tipos De Archivos ………………………………………………………………….3.4.3.4. Estructura De Un Archivo ……………………………………………………………. Atributos De Archivo …………………………………………………………………. Algoritmo De Ubicación …………………………………………………………….1. 116 5. 106 4. Introducción ……………………………………………………………………………… 110 5. 105 4.3.5. 114 5. Funciones Del Administrador De Archivos …………………………………………. Reubicación ………………………………………………………………………….2.1.5.6.3. Acceso A Un Archivo ………………………………………………………………… 115 5.3. 103 4.4.1. Espacio De Direccionamiento Y Espacio De Memoria …………………………… 107 4.2. Archivos ………………………………………………………………………………….1. Organización Física …………………………………………………………………… 95 4.4.2. 105 4.2..

3.3.. Operaciones Con Directorios …………………………………………………….1.. Directorios …………………………………………………………….6. 120 5.3. Acceso Directo A Memoria (Dma) …………………………………………………. 134 6... 144 6.. 144 6.. 130 5. Operación De Almacenamiento De Disco De Cabeza Móvil ……………………… 145 6. Dispositivos De E/S ………………………………………………………………….. Introducción ……………………………………………………………………………… 134 6.1.6..5... Objetivos Del Software De E/S ……………………………………………………… 141 6. Algoritmos De Programación Del Brazo Del Disco …………………………………..3.. Principios Del Hardware De E/S ……………………………………………………… 134 6. 119 5.5. Archivos Compartidos ………………………………………………………………… 130 CAPÍTULO 6 ENTRADA / SALIDA ……………………….1.. 147 6. 142 6.. Implantación Del Sistema De Archivos Y Sus Relaciones Con La Asignación Y Liberación De Espacio ………………………………………………….6. 138 6.4...4.. Implantación De Archivos ………………………………………………………..7. 119 5.…… 123 5..4..3. 140 6.2.2. Discos ………………………………………………………………………………….3. 147 6. 144 6.2.Hardware Para Discos ………………………………………………………. 143 6...8.2.…….2. Implantación De Directorios …………………………………………………………. Discos . Porqué Es Necesaria La Planificación De Discos ………………………………….. Manejadores De Dispositivos ……………………………………………………….2....5....2.5.2. 121 5. 148 6 .1..5.. Sistemas Jerárquicos De Directorios ……………………………………….6. Hardware Para Discos ……………………………………………………………….6.3...…………………………….2. Nombre De Las Rutas De Acceso ………………………………………………….3..5. Manejadores De Interrupciones ……………………………………………………..1. Características Deseables De Las Políticas De Planificación De Discos ………. Principios Del Software De E/S ……………………………………………………….. 135 6....1. 122 5. Controladores De Dispositivos ……………………………………………………… 136 6.

.………… 151 6. 152 7 ..... Esquema Eschenbach ……………………………………………………. Conclusiones ………………………………………………………………..9....... Planificación Fcfs (Primero En Llegar..9.......... Optimización De La Búsqueda En Discos …………………………………………..3............6.... 150 6...4.9. 149 6...............…......9..9.... Planificación C ....5. 149 6.1...7.....9.2.6.. Planificación Scan De N – Pasos ………………………………………………...…… 151 6.9........ Planificación Sstf (Menor Tiempo De Búsqueda Primero) ……………………… 149 6......9..Scan (Búsqueda Circular) …………………………………..………… 151 BIBLIOGRAFIA . Primero En Ser Servido) ………………............ Planificación Scan …………………………………………………………………… 150 6......

. 102 4..C que utiliza el algoritmo FCFS …………………………………………………………………. D.6: Transformación de archivos orientada hacia bloques ………………………..4: Esquema de un disco de cabeza móvil ……………………………………….11: Cambios de contexto de el trabajo A con tres quantum de tiempo ……… 39 4.1: Requisitos de direccionamiento para un proceso …………………………… 92 4.D con el algoritmo apropiante SRT ……………………………………………………… 34 2. 28 2..5: Encadenamiento de bloques de índice ……………………………………….1: Componentes de un sistema de cómputo …………………………………… 2 1. 120 5.C. 6 2.D.B. con el algoritmo SJN no apropiativa ………………………………………………….7: Esquema de un nodo-i ………………………………………………………….. C.4: Hardware del sistema de cómputo ………………………………………….1: Multiprogramación de 4 programas ………………………………………….4: Efectos de la participación dinámica ………………………………………..2: Ejemplo de participación estática de una memoria de 4Mb ……………… 98 4.3: Niveles de planificación del procesador …………………………………….INDICE DE FIGURAS 1. 5 1.. 15 2. 32 2.3: Asignación de memoria con participación fija ………………………………..6: Relación entre espacios de dirección y de memoria en un sistema de memoria virtual …………………………………………………………………… 108 4. separación simple y separación doble ……………………………………………………………………………….2: Factores de separación: sin separación. 100 4.2: Un proceso puede estar en ejecución. A. 14 2.C.2: Un directorio por usuario ………………………………………………………. 129 5. 37 2.2: Modelo del sistema operativo para un solo usuario ……………………….3: Un árbol arbitrario por usuario ………………………………………………….D con el algoritmo de round robin apropiativo ……………………………………….7: Tabla de memoria para mapear una dirección virtual ……………………….10: Diagrama de tiempo para la secuencia de trabajos A. 23 2....…. 139 6. 131 6. 120 5.3: Capas del sistema de entrada / salida y las principales funciones de cada capa ……………………………………………………………………………….B. 2 1.. bloqueado o listo ………………….B.1: Un controlador realiza completamente una transferencia DMA …………….. 126 5. 30 2.B.B. 35 2..4: Encadenamiento de bloques o lista ligada de bloques ……………………… 125 5.5: Diagrama de secuencia para los trabajos de A.5: Componentes del acceso a un disco ………………………………………….A con el algoritmo FCFS . 146 8 . 119 5. 141 6.1: Un solo directorio compartido por todos los usuarios ………………………. 140 6. con el algoritmo SJN ……………………………………………………………………. 30 2.. 109 5.5: Ejemplo de una configuración de memoria antes y después de asignar un bloque de 16 Kb ……………………………………………………………… 103 4. 145 6.7: Diagrama de tiempo de la secuencia de tareas B.6: Diagrama de secuencia para los trabajos C.C.4: Tipos de planificación del procesador ……………………………………….3: Sistemas Operativos para Red ……………………………………………….8: Diagrama de tiempo de la secuencia de trabajos A.9: Línea de tiempo para la misma secuencia de trabajos A.

1: Controladores de E/S.INDICE DE TABLAS 2..2. Técnicas de administración de memoria ……………………………………… 98 6. direcciones de E/S y vector de interrupciones ……. 18 2. 40 4. Disciplinas de planificación del procesador …………………………………. 28 2.1..1: Tipos de interrupciones …………………………………………………………. 137 9 ..3: Comparación de los algoritmos de planificación …………………………….

puso en evidencia la problemática del trabajo en equipos de análisis. En la cuarta generación la electrónica avanza hacia la integración a gran escala. Surge también en la tercera generación de computadoras el concepto de la multiprogramación. porque debido al alto costo de las computadoras era necesario idear un esquema de trabajo que mantuviese a la unidad central de procesamiento más tiempo ocupada. etc. pudiendo crear circuitos con miles de transistores en un centímetro cuadrado de silicón y ya es posible hablar de las computadoras personales y las estaciones de trabajo. y no existían los sistemas operativos. Sin embargo. es decir. Así. Surgen los conceptos de interfaces amigables intentando así atraer al público en general al uso de las computadoras como 10 . al otro o ambos. diseño e implantación de sistemas grandes. En su lugar. ligadores. se puede afirmar que los sistemas durante la tercera generación siguieron siendo básicamente sistemas de lote. se comenzó a ver que las tareas mismas del operador podían plasmarse en un programa. debía examinar los valores de los registros y páneles de luces indicadoras del estado de la computadora para determinar la causa del fallo y poder corregir su programa. enfrentaba el problema del procesamiento serial. así como el encolado (spooling ) de trabajos para su lectura hacia los lugares libres de memoria o la escritura de resultados. Es decir. el cual a través del tiempo y por su enorme complejidad se le llamó "Sistema Operativo".INTRODUCCION A finales de los 40's el uso de computadoras estaba restringido a aquellas empresas o instituciones que podían pagar su alto precio. y en el infortunado caso de que su programa fallara. tenemos entre los primeros sistemas operativos al Fortran Monitor System ( FMS ) e IBSYS [Tan92]. además de enfrentarse nuevamente a los procedimientos de apartar tiempo del sistema y poner a punto los compiladores. para volver a correr su programa. Al tratar de crear un solo sistema operativo para computadoras que podían dedicarse a un propósito. el programador debía tener un conocimiento y contacto profundo con el hardware.

La red mundial Internet se va haciendo accesible a toda clase de instituciones y se comienzan a dar muchas soluciones (y problemas) al querer hacer convivir recursos residentes en computadoras con sistemas operativos diferentes. las concisiones y las decisiones que acarrean el diseño de un sistema operativo y el contexto en que este opera. ejecutar una simulación en una máquina con UNIX y ver los resultados en otra con DOS). Capitulo 3 Administración De Procesos Concurrentes. También es común encontrar clones de computadoras personales y una multitud de empresas pequeñas ensamblándolas por todo el mundo. Para mediados de los 80's. Capítulo 5 Administración De Los Archivos Y Capítulo 6 Entrada / Salida. El objetivo principal de este texto es proporcionar al lector una comprensión sólida de los mecanismos clave de los sistemas operativos modernos. Los Autores 11 . en estos capítulos se examinan los desarrollos recientes más importantes que se han alcanzado en el diseño de los sistemas operativos. Para los 90's el paradigma de la programación orientada a objetos cobra auge. así como el manejo de objetos desde los sistemas operativos. Los niveles de interacción se van haciendo cada vez más profundos. Capítulo 4 Administración De La Memoria. En este libro ofrece una cobertura a los fundamentos de sistemas operativos: Capítulo 1 Panorama General. Las aplicaciones intentan crearse para ser ejecutadas en una plataforma específica y poder ver sus resultados en la pantalla o monitor de otra diferente (por ejemplo. Capítulo 2 Administración Del Procesador.herramientas cotidianas. comienza el auge de las redes de computadoras y la necesidad de sistemas operativos en red y sistemas operativos distribuidos. Se hacen populares el MS-DOS y UNIX en estas máquinas.

SISTEMAS OPERATIVOS 12 .

Es preciso señalar además que este libro esta destinado a los alumnos de una carrera de grado en sistemas e informática. en tanto que para aquellos que deseen un conocimiento más profundo. pudiendo ser de utilidad según la profundidad del curso. 13 .(Revés de la Carátula) Este libro trata sobre los aspectos referidos a los Sistemas Operativos. así mismo. que aborda el mencionado texto. si además se desea incursionar aspectos complementarios más importantes se sugiere la lectura del mencionado texto en su forma total. será suficiente con la lectura de la primera parte. será necesario avanzar en la lectura del primer grupo de temas. teniendo presente la problemática de los sistemas operativos modernos. Para aquellos lectores que solo deseen adquirir o refrescar conocimientos relacionados con los sistemas operativos en general. Los Autores. que deban hacer un curso de sistemas operativos.

el sistema operativo. por el usuario y el objetivo secundario es usar el hardware de la computadora de la forma eficiente. es un grupo de programas de proceso con las rutinas de control Necesarias para mantener continuamente operativos dichos programas”. 14 . El esquema típico de un sistema de cómputos se muestre en la figura 1. programas de aplicación y los usuarios. el Sistema Operativo es el programa fundamental de todos los programas de sistema. protege y libera a los programadores de la complejidad del hardware. En este contexto. Utilizable de manera cómoda. colocándose un nivel de software sobre el hardware para poder controlar todas las partes del sistema. ¿QUÉ ES UN SISTEMA OPERATIVO? Una de las definiciones más comúnmente aceptadas expresa: Es un programa que actúa como intermediario entre el usuario de una computadora y el hardware. El objetivo primario de un Sistema Operativo es: Optimizar todos los recursos del sistema para soportar los requerimientos y hacer de un sistema de cómputo. presentar al usuario una interfaz o máquina virtual. Los programas de sistema controlan la operación de la computadora en sí y los programas de aplicación resuelven problemas para los usuarios. El S.1. Un S. éste puede dividirse en 4 componentes.CAPÍTULO 1 PANORAMA GENERAL 1. O. O.1. el hardware.

se muestra una pirámide. desde asegurarse que se ejecute y caso contrario indica el error que no permita su ejecución.. Por la tanto. Interfaz del comando del usuario Administrador de procesador Administrador de archivos Administrador de medidas Administrador de archivos Figura 1.O. el S. La base de la pirámide muestra los 4 “administradores” esenciales del todo el 15 .2. que nos permitirá extender mejor la función del sistema operativo. procesador y dispositivos. En términos mas simples. cuando en usuario envía un comando el S.2: Modelo del sistema operativo para un solo usuario.. lo que es lo mismo administrar los archivos.1: Componentes de un sistema de cómputo. En la figura 1.O. memoria. así mismo controla quien puede utilizar el sistema y de que manera (interfaz de comando del usuario). es el gerente ejecutivo del sistema de computo que se encarga de la administración del hardware y el software. Usuario n sistema de base de datos Sistema Programas de sistema Operativo y de aplicación Hardware de la computadora Figura 1.Usuario 1 Compilador Usuario 2 ensamblador .

inicia su operación y lo libera. incluyendo archivos de datos ensambladores. le asigna un porción que todavía no este en uso. lleva el control de todo el archivo en el sistema.O.etc. compiladores y programas de aplicación. Liberar el recurso – recuperarlo – cuando es conveniente.. Comprueba la validez de cada solicitud de espacio de memoria y. etc. otra función es proteger el espacio en la memoria principal que ocupa el sistema operativo. El administrador de archivo. La interfaz de comando del usuario es desde el cual las usuario. obliga a cada archivo a cumplir las restricciones de acceso. Sin importar el tamaño o configuración del sistema. Obligar al cumplimiento de las políticas que determinan. El administrador de dispositivos vigila todos los dispositivos. quien obtiene. Etc.. dispositivos y archivos. estos administradores son la base de todos los sistemas operativos. Asignar los recursos cuando es apropiada.etc. es desde el cual los usuarios emiten los comandos especifico en cada sistema operativo. El administrador del procesador decide estado de cada proceso. cada uno de los administradores deben realizar las siguientes tareas: Monitoreo constante de sus recursos. mediante el uso de políticas de acceso predeterminadas... si se trata de una solicitud legal. este es un componente Citaremos algunas funciones relevantes de los administradores. al S. cuando y cuanto tiempo. otra función también es de controlar el 16 . El administrador de memoria esta a cargo de la memoria principal o RAM. cuales y unidades del sistema (periféricos).sistema operativo: administrador de memoria procesador. este administrador dispositivo. asigna el como asignar la unidad de procesamiento central (CPU).

El administrador de dispositivos recibe impulsos eléctricos del teclado. éste manda un mensaje de “terminado” de regreso al administrador del procesador. Una vez que el programa se halla en la memoria. Si el programa está almacenado. donde el administrador del procesador lo valida.Estos administradores no solo cumplen sus tareas individuales. ilustra la increíble precisión requerida por el sistema operativo. de manera que quien escribió sepa que se envió el comando. Cuando el administrador del procesador recibe el comando. 1. después el cual notifica al administrador mostraremos los pasos que se presentan al ejecutar un . 7. Recuerde. el administrador de ésta debe controlar su localización y progreso conforme lo ejecuta el administrador del procesador. 4. codifica el tecleo para formar el comando y envía el comando a la interfaz de comando del usuario. A continuación programa. ningún administrador por sí solo puede llevar cooperación activa de las demás partes. Aunque ésta es una demostración simplificada de una operación complicada. determina si hay que traer el programa correspondiente de donde esté almacenado o si ya está apropiado. Los sistemas operativos con capacidad de red tiene un quinto administrador 17 a cabo sus tareas sin la en la memoria. 6. 2. el administrador del procesador manda el mensaje de “terminado” de vuelta al administrador de dispositivos. el administrador de archivos debe calcular su localización exacta en el disco y pasar el mismo y registrar su ubicación exacta en la memoria. Luego. el administrador del procesador manda un mensaje de reconocimiento para que aparezca en el monitor de video. 5. 3. Por último. que lo muestra en el monitor para que lo vea el usuario. También deben ser capaces de trabajar en armonía con los otros administradores. Cuando termina la ejecución del programa.

dispositivos de cinta magnética. controlar su acceso a los mismos. Para apreciar la función del sistema operativo. a continuación se muestra la figura 1.3. 1. unidades de CD. La memoria principal es donde se almacena los datos y las instrucciones para ser procesados. unidad de discos. de compartir recursos y al mismo tiempo.3: Sistemas Operativos para Red. donde se observa una pirámide de cinco lados (base). los dispositivos de entrada/salida. es necesario definir los aspectos esenciales del hardware del sistema de la computadora. ADMINISTRADOR DE PROCESADOR ADMINISTRADOR DE MEMORIA ADMINISTRADOR DE DISPOSITIVOS ADMINISTRADOR DE RED ADMINISTRADOR DE ARCHIVOS Figura 1. En esencia controla la operación de la totalidad de sistemas de cómputo. conocido como administrador de red que proporciona una forma conveniente para los usuarios. Controla la interpretación y ejecución de las instrucciones. así como se ilustra en la figura. 18 . etc. incluyen toda la unidad periférico del sistema. El CPU es el “cerebro” que apoyado en la circuitería electrónica.esencial. Los dispositivos de entrada/salida. la maquina física y sus componentes electrónicos. como impresora.4. los dispositivos de almacenamiento y la unidad de procesamiento central. incluyendo los chips de memoria. Estos recursos incluyen hardware y software.

Pantalla de video

Interfaz de video
Memoria principal Controlad or de disco Interfaz serial Accionador de discos
Discos

Unidad aritmética y lógica Registros Bus de Control

módem

Control Interno

CPU

Interfaz paralela
Impresora

Interfaz de teclado

teclado

Figura 1.4: Hardware del sistema de cómputo.

1.2. TIPOS DE SISTEMAS OPERATIVOS Los sistemas operativos para las computadoras grandes y pequeñas se por su tiempo de

clasifican en cuatro clases, los cuales se distinguen

respuesta y la forma en que se introducen los datos en el sistema; estas son: Sistemas por lotes. Sistemas interactivos. Sistemas en tiempo real. Sistemas híbridos.

Los Sistemas Por Lotes (Batch).- Existen desde las primeras computadoras

19

que se apoyan en tarjetas perforadas o en cinta, los cuales es introducida una tarea mediante la agrupación de las tarjetas en un paquete y se corría todo el paquete a través de un lector de tarjetas como un grupo (lote); la eficiencia del sistemas se media en producción (cantidad de tareas completadas en un tiempo determinado (30 tareas / hora) este sistema no es común actualmente Los Sistemas Interactivos (Sistemas de Tiempo Compartido).- Dan un tiempo de retorno más rápido que los Sistemas de tiempo real, de los cuales hablaremos más adelante. Se introdujeron para satisfacer las demandas de usuarios que necesitaban un tiempo de retorno rápido al eliminar los errores de sus programas, el S. O. requería el desarrollo de software de tiempo compartido, lo que permitiría a cada usuario interactuar directamente con el sistema del computo vía comandos introducidos a partir de una terminal de tipo máquina de escribir. El sistema operativo proporciona una retroalimentación al usuario y el tiempo de respuesta se puede medir en minutos o en segundos, según la cantidad de usuarios activos. Los Sistemas de Tiempo real, son lo más rápido de l os cuatro y se le utiliza en entornos de “tiempo critico”, donde los datos se deben procesar con suma rapidez porque la salida afecta decisiones inmediatas. Los sistemas de tiempo real se utilizan para vuelos espaciales, control de trafico en aeropuertos, aeronaves de alta velocidad, procesos industriales, equipo médico complicado, distribución de electricidad y conmutación telefónica. Un sistema de tiempo rela debe ser 100% sensible. El tiempo de respuesta se mide en fracciones de segundo, aunque esto en la práctica es un ideal que no se logra a menudo. Los sistemas hídricos, son una combinación de sistemas en lotes e

interactivos. Parecen interactivos porque los usuarios individuales pueden tener acceso al sistema mediante terminales y obtener una respuesta rápida,; pero cuando la carga interactiva es ligera, este tipo de sistemas acepta y opera programas en lotes en un segundo plano. Un sistema hídrico aprovecha el tiempo libre entre las demandas de

procedimiento para ejecutar programas que no necesitan ayuda significativa

20

del operador. Muchos sistemas de cómputo grandes son híbridos Por lo tanto podemos concluir con las principales funciones del S. O: Es ocultar toda esta complejidad y brindar al programador un conjunto más conveniente de instrucciones para trabajar. El S. O. ejecuta en modo central o modo de supervisión, con máxima prioridad y generalmente con protección por hardware. Los compiladores, editores y demás programas se ejecutan en modo usuario. El S. O. es la serie de programas, dispuestos ya sea en el software o en la memoria (microcódigo), que hacen al hardware utilizable. Los S. O. ponen el “poder computacional básico” del hardware

convenientemente a disposición del usuario, pero consumen parte de ese poder computacional para funcionar. Los S. O. son, en primer lugar, administradores de recursos, siendo el recurso primario el hardware del sistema. Las principales características de los S. O. son: Definir la “Interfaz del Usuario”. Compartir el hardware entre usuarios. Permitir a los usuarios compartir los datos entre ellos. Planificar recursos entre usuarios. Facilitar la entrada / salida. Recuperarse de los errores.

Los principales recursos administrados por los S. O. son: Procesadores. Almacenamiento. Dispositivos de E/S. Datos.

Los S. O. es una interfaz con:

21

Los Programas. HISTORIA DE LOS SISTEMAS OPERATIVOS . Carencia de S. razón por la cual su historia puede analizarse según las siguientes generaciones y sus principales características: Generación Cero (década de 1940): Carencia total de S. O. El Hardware. En los años cincuenta comienzan como transición entre trabajos. O.- Los Operadores. O. O. Los Usuarios. para sistemas compartidos con:  Multiprogramación: varios programas de usuarios se encuentran al mismo tiempo en el almacenamiento principal.  Multiprocesamiento: varios procesadores se utilizan en un mismo 22 . cambiando el procesador rápidamente de un trabajo a otro. han estado relacionados históricamente con la arquitectura de las computadoras en las cuales se ejecutan. O. O.). 1. Completo acceso al lenguaje de máquina. Los Programadores de aplicaciones. Los Programadores de sistemas (administradores del S.3. Primera generación (1945-1955): tubos de vació y conexiones. Segunda Generación (1955-1965): transistores y sistemas de procesamiento por lotes (batch): En los años sesenta aparecen los S. El S. haciendo la misma más simple. debe presentar al usuario el equivalente de una máquina extendida o máquina virtual que sea más fácil de programar que el hardware subyacente.GENERACIONES Los S.

 El S. Protección por hardware del contenido de cada partición de 23 .  Almacenamiento de trabajos de entrada y de salida en dispositivos transitorios rápidos (discos). memoria. para disminuir el impacto de los periféricos más lentos. Posteriormente aparece la independencia de dispositivo:  El programa del usuario especifica las características de los dispositivos que requieren los archivos. Soportan timesharing (tiempo compartido). O. con trabajos distintos en cada una de ellas. es decir que deben soportar sistemas de propósitos generales. variante de la multiprogramación con usuarios conectados mediante terminales en línea. Tercera Generación (1965-1980): circuitos integrados y multiprogramación: Difusión de la multiprogramación:  Partición de la memoria en porciones.sistema para incrementar el poder de procesamiento. son grandes y complejos pero muy poderosos. Son sistemas de modos múltiples.  Aprovechamiento del tiempo de espera consecuencia de operaciones de E/S. asigna los dispositivos correspondientes según los requerimientos y las disponibilidades. para utilizar la CPU para otros procesos. Aparición de técnicas de spooling:  Simultaneous Peripheral Operation On Line: operación simultánea y en línea de periféricos. necesarios para especificar el trabajo y los recursos requeridos. Interponen una capa de software entre el usuario y el hardware. Aparecen los lenguajes de control de trabajos.

Gran énfasis en la seguridad. local. aún cuando de soporte a varios procesadores. especialmente para usos industriales o militares. O.  Deben permitir que un programa se ejecute mediante varios procesadores a la vez. Cuarta Generación (1980-1990): computadoras personales: Aparición de software amigable con el usuario. ya que lo debe administrar el S.  Cada máquina ejecuta su propio S.permitiendo la operación en modo interactivo o conversacional. b) Software para conexión y acceso a archivos remotos. Se difunden las computadoras de rango medio. Aparecen los sistemas de tiempo real. de un solo procesador pero con el agregado de: a) Controlador de interfaz de la red y su software de bajo nivel. maximizando el paralelismo. que requieren tiempos de respuesta muy exigentes. Aparición de emuladores de terminal para el acceso a equipos remotos desde computadoras personales (PC). 24 .  Los usuarios no son conscientes del lugar donde se ejecutan sus programas donde se encuentran sus archivos. O.  Sistemas operativos distribuidos: Aparece ante los usuarios como un S. Sistemas operativos de red:  Los usuarios están conscientes de la existencia de varias computadoras conectadas. Desarrollo de sistemas operativos de red y sistemas operativos distribuidos. etc. destinado a usuarios no profesionales y con una interfase gráfica muy desarrollada. de un solo procesador. automáticamente. en especial por el desarrollo de los sistemas de comunicaciones de datos. O.O.  Son similares a los S.

es una instancia de un programa ejecutable. El emplazamiento del control de un procedimiento que está siendo ejecutado. O. accesibles mediante redes de comunicación. INTRODUCCIÓN Y DEFINICIONES SOBRE PROCESOS El concepto central de cualquier Sistema Operativo es el de proceso: una abstracción de un programa en ejecución también llamada tarea. No hay un acuerdo universal sobre una definición de proceso. Desea una serie de imágenes 25 . si su sistema permite que los procesos tengan una sola hebra de control y Ud.1. entre ellos un procesador y registros especiales. crea un ambiente de trabajo según el concepto de máquina virtual. Por ejemplo. Aquella que se manifiesta por la existencia en el Sistema Operativo de un bloque de control de proceso. Una actividad asincrónica. La unidad despachable. que lo aísla del funcionamiento interno de la máquina. Es conocida como una tarea. - Proliferación de sistemas de bases de datos.- El S. CAPÍTULO 2 ADMINISTRACIÓN DEL PROCESADOR 2. Aquella entidad a la cual son asignados los procesadores. Es una entidad activa que requiere un conjunto de recursos para llevar acabo su función. pero sí algunas definiciones aceptadas tales como: Un programa que se está ejecutando. Una hebra de control es una porción de un proceso que se puede ejecutar de manera independientemente.

puede instruir al navegador (Brouser). El objetivo es aumentar el paralelismo en la ejecución. Si la cpu alterna entre los procesos. Con la superposición de ejecución de instrucciones de programa con la ejecución de una o más operaciones de entrada / salida. es la parte de la maquina que lleva a caso los cálculos y ejecuta los programas. El procesador. inclusive el Sistema Operativo. es decir que la cpu ejecuta en cierto instante un solo programa. para que establezca una conexión entre ambos sitios y descargar una imagen a la vez. si su sistema permite que sus procesos tengan múltiples hebras de control. Sin embargo. registros y variables del mismo. se organiza en varios procesos secuenciales o procesos. intercambiando muy rápidamente entre uno y otro.en el sitio web de un amigo. también conocido como CPU (central unit processor). Conceptualmente cada proceso tiene su propia cpu virtual. por lo que es necesario aclarar lo siguiente:  Que los procesos no deben programarse con hipótesis implícitas acerca del tiempo. Un proceso incluye al programa en ejecución y a los valores activos del contador. la velocidad a la que ejecuta un proceso no será uniforme. En sistemas de multiprogramación la cpu alterna de programa en programa.  Que normalmente la mayoría de los procesos no son afectados por la multiprogramación subyacente de la cpu o las velocidades 26 . El paralelismo real de hardware se da en las siguientes situaciones: En ejecución de instrucciones de programa con más de un procesador de instrucciones en uso simultáneamente. El modelo de procesos posee las siguientes características: Todo el software ejecutable. en un esquema de seudoparalelismo. puede solicitar varias imágenes al mismo tiempo y el navegador o explorador establecerá múltiples conexiones y descargará varias imágenes a la vez.

teniendo además presente que los procesos pueden generar procesos hijos mediante llamadas al Sistema Operativo.2. Respecto de los estados del proceso deben efectuarse las siguientes consideraciones: Cada proceso es una entidad independiente pero frecuentemente debe interactuar con otros procesos.1. En cuanto a las jerarquías de procesos es necesario señalar que los Sistemas Operativos deben disponer de una forma de crear y destruir procesos cuando se requiera durante la operación. se detiene en forma temporal para que se ejecute otro proceso. salida y estado. pudiendo darse ejecución en paralelo. Figura 2.  Un solo procesador puede ser compartido entre varios procesos con cierto “algoritmo de planificación”. el cual determina cuándo detener el trabajo en un proceso y dar servicio a otro distinto.  Un proceso es una actividad de un cierto tipo.2. UN CONTADOR DE PROGRAMA A B C D ALTERNADOR DE PROCESOS MODELO CONCEPTUAL DE CUATRO 27 PROCESOS SECUENCIALES INDEPENDIENTES CUATRO CONTADORES DE PROGRAMA A C D B . y 2. Los estados que puede tener un proceso son: En ejecución: utiliza la cpu en el instante dado. entrada. Son posibles cuatro transiciones entre estos estados. tal como se muestra en la figura 2.relativas de procesos distintos. 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.1. Listo: ejecutable.    El Sistema Operativo asignó la cpu a otro proceso.  Bloqueado: no se puede ejecutar debido a la ocurrencia de algún evento externo. que tiene un programa. y 2.

2: Un proceso puede estar en ejecución. Al admitirse un trabajo entre el sistema se crea un proceso equivalente y es insertado en la última parte de la “Lista de Listos”. siendo varias las circunstancias que pueden hacer que el mismo cambie de estado. La “Lista de Listos” se mantiene en orden prioritario y la “ Lista de Bloqueados” está desordenada. Los datos están disponibles.1: Multiprogramación de 4 programas.2. 3. que es ejecutado por una entidad del Sistema Operativo llamada 28 .Figura 2. 4 BLOQUEAD O LISTO Figura 2. La asignación de la cpu al primer proceso de la “ Lista de Listos” se denomina “Despacho”. ya que los procesos se desbloquean en el orden en que tienen lugar los eventos que están esperando. El proceso se bloquea en espera de datos. 4. TRANSACCIONES ENTRE LOS ESTADOS EN 1. bloqueado o listo. ESTADOS DE PROCESOS Durante su existencia un proceso pasa por una serie de estados discretos. Debido a ello se puede establecer una “Lista de Listos” para los procesos “listos” y una “Lista de Bloqueados” para los “bloqueados”. El planificador elige otro proceso. El planificador elige este proceso. 2. 1 EJECUCIÓN 2 3 2.

Insertar un proceso en la lista del sistema de procesos conocidos. suspender. Cuando el Sistema Operativo cambia la atención de la cpu entre los procesos. Apuntadores para localizar la memoria del proceso. Área para preservar registros. destruir. Prioridad del proceso. Apuntadores para asignar recursos. reanudar.“Despachador”. Asignar los recursos iniciales del proceso. La “creación” de un proceso significa: Dar nombre al proceso. despertar y despachar un proceso. El “Bloqueo” es la única transición de estado iniciada por el propio proceso del usuario. Identificación única del proceso. bloquear. en cuyo caso el proceso creador se denomina “proceso padre” y el proceso creado “proceso hijo” y se obtiene una “estructura jerárquica de procesos”. La manifestación de un proceso en un Sistema Operativo es un “Bloque de Control de Proceso” (PCB) con información que incluye: Estado actual del proceso. puesto que las otras transiciones son iniciadas por entidades ajenas al proceso. Determinar la prioridad inicial del proceso. Crear el bloque de control del proceso. 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. La “destrucción” de un proceso implica: 29 . cambiar la prioridad. Los sistemas que administran los procesos deben poder crear. Un proceso puede “crear un nuevo proceso”.

La “destrucción” de un proceso puede o no significar la destrucción de los procesos hijos. Borrar su bloque de control de procesos. 2. el Sistema Operativo: Obtiene el control.- Borrarlo del sistema. Analiza la interrupción. Cuando ocurre una interrupción. Purgarlo de todas las listas o tablas del sistema. Devolver sus recursos al sistema. Generalmente se denomina “Tabla de Procesos” al conjunto de información de control sobre los distintos procesos. PROCESAMIENTO DE INTERRUPCIONES Una “interrupción” es un evento que altera la secuencia en que el procesador ejecuta las instrucciones.3. 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. según el Sistema Operativo. Salva el estado del proceso interrumpido. Generalmente las interrupciones se pueden clasificar por tipos según el siguiente Detalle: “SVC (llamada al supervisor)”: es una petición generada por el usuario 30 . Un proceso “suspendido” no puede proseguir hasta que otro proceso lo reanude. Reanudar (reactivar) un proceso implica reiniciarlo en el punto donde fue suspendido. generalmente en su bloque de control de procesos. es un hecho generado por el hardware del computador. Transfiere el control a la rutina apropiada para la manipulación de la interrupción.

- “De verificación de programa”: son causadas por errores producidos durante la ejecución de procesos. 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. Un intento de un proceso de usuario de ejecutar una instrucción privilegiada. realización de Entrada / Salida u obtención de más memoria.para un servicio particular del sistema. por ejemplo. Tipo de Interrupción SVC Entrada / Salida Externa De Reinicio De Verificación de Programa De Verificación de Máquina Descripción Llamada al Sistema Operativo Cambio de estado de un canal o dispositivo Evento externo al sistema De Reinicio del procesamiento Errores de procesos Errores de hardware Tabla 2. verificación de máquina”: son ocasionadas por un mal - “De funcionamiento del hardware. en la tabla 2.1: Tipos de interrupciones. indicando a la cpu que ha cambiado el estado de un canal o dispositivo. - “Externas”: son causadas por distintos eventos. por ejemplo.1. finalización de Entrada / Salida u ocurrencia de un error.  Un intento de ejecutar un código de operación inválido. se puede observar los diferentes tipos de interrupciones. “Entrada / Salida”: son iniciadas por el hardware de Entrada / Salida. 31 . - “De reinicio”: ocurren al presionar la “tecla de reinicio” o cuando llega una instrucción de reinicio de otro procesador en un sistema multiprocesador. por ejemplo:   Un intento de dividir por cero. por ejemplo.

Los Sistemas Operativos instrumentan información de control que puede aparecer como las “Palabras de Estado de Programa (PSW)”. para este tipo de interrupción. que son la “actual”. Dirige el control al manipulador de interrupciones adecuado. 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”.  Al almacenar la PSW nueva en la PSW actual. En un sistema uniprocesador existe: Solo una PSW actual. Cuando se produce una interrupción el Sistema Operativo efectúa las siguientes acciones: Salva el estado del proceso interrumpido.El Sistema Operativo incluye rutinas llamadas “Manipuladores de Interrupciones(IH)” para procesar cada tipo diferente de interrupción. Se aplica la técnica de “Cambio de Contexto”. la “nueva” y la “vieja”. ocurren las siguientes acciones: El hardware cambia las PSW en los casos siguientes:  Al almacenar la PSW actual en la PSW vieja. para este tipo de 32 . Seis PSW viejas (una para cada tipo de interrupción). La PSW nueva para un tipo de interrupción dado contiene la dirección en el hardware donde reside el manipulador de interrupciones para este tipo específico. Existen tres tipos de PSW. Cuando ocurre una interrupción para la cual el procesador no está inhabilitado. las cuales controlan el orden de ejecución de las instrucciones y contienen información sobre el estado del proceso. Seis PSW nuevas (una para cada tipo de interrupción).

EL NÚCLEO DEL SISTEMA OPERATIVO El “núcleo” del Sistema Operativo controla todas las operaciones que implican procesos y representa solo una pequeña porción del código de todo el Sistema Operativo pero es de amplio uso. la cpu es enviada al: a) Proceso que estaba en ejecución en el momento de la interrupción. b) Proceso de listo de más alta prioridad. Luego de este “intercambio de PSW”:  La PSW actual contiene la dirección del manipulador de interrupción adecuado. Generalmente permanece en el almacenamiento primario.interrupción. Luego de procesar la interrupción. El proceso de interrupciones se incluye en el núcleo ya que debe ser rápido (especialmente en sistemas multiusuario).   El manipulador de interrupciones procesa la interrupción. para optimizar el uso de los recursos del sistema y proveer tiempos de respuesta aceptables a los usuarios interactivos. El núcleo inhabilita las interrupciones mientras responde a una interrupción.  La acción precedente depende de si el proceso de interrupción es: a) “Apropiativo” : obtiene la cpu solo si no hay procesos de listos. Creación y destrucción de procesos. El núcleo del Sistema Operativo generalmente realiza las siguientes funciones: Manipulación de interrupciones. Las interrupciones son habilitadas de nuevo después de completar el proceso de una interrupción. 33 . b) “No apropiativo” : obtiene de nuevo la cpu. 2.4.

pero note que en la lista siguiente algunas se contradicen. 3) Algunos recursos requieren la intervención del operador – esto es. Antes que el sistema operativo pueda planificarlos. Manipulación de bloques de control de proceso. Soporte de la asignación y designación de almacenamiento. Suspensión y reanudación de procesos. 2) Algunos recursos. impresoras y unidades de cinta).- Cambio de estados de procesos. Soporte de ciertas funciones contables (estadísticas) del sistema. una vez asignados. Soporte de un mecanismo de llamada / regreso al procedimiento. Maximizar la Producción ejecutando tanto trabajos como sea posible en 34 . Soporte de las actividades de Entrada / Salida. necesita resolver tres limitaciones del sistema: 1) Existe un número finito de recursos (como unidades de disco. 2. Despacho. Sincronización de procesos. Soporte del sistema de archivos.5. Comunicación entre procesos. no se pueden reasignar de manera automática de un trabajo a otro (como las unidades de cinta). POLÍTICAS DE PLANIFICACIÓN DE PROCESOS En un entorno de multiprogramación existen por lo general más trabajos por ejecutar de los que se pueden correr en un momento dado. no pueden recibir otro trabajo (como las impresoras). ¿Cuál es una “buena” política de planificación de procesos? Se presentan a la mente varias opciones.

que debe definir qué criterios son de mayor importancia para dicho sistema. Para esto se corren primero los trabajos por lotes (porque estos se pueden agrupar para ejecutarse con mayor eficiencia que los trabajos interactivos). seleccionaría la política de planificación que satisfaga con mayor precisión sus criterios. si el sistema da preferencia a un tipo de usuario. minimizar el tiempo de respuesta y equilibrar el uso de los componentes de sistema a través de una mezcla de procesos limitados por entradas y salida y CPU”. Por lo tanto. esto sería factible ejecutando nada más trabajos interactivos y dejando que los trabajos por lotes esperen hasta que la carga interactiva desaparezca. NIVELES DE PLANIFICACIÓN DEL PROCESADOR 35 . Minimizar el Tiempo de Retorno. Minimizar el Tiempo de Espera sacando los trabajos de cola de LISTO tan rápido como sea posible. de manera que el CPU esté disponible cada que un trabajo entre en cola de LISTOS. Asegurar la Justicia para todos los Trabajos dando a todos una cantidad igual de tiempo de CPU y de E/S. Esto sólo es posible reduciendo en número de usuarios permitidos en el sistema. Como podemos ver. Esto es posible sin dar tratamiento especial alguno a los trabajos.6. Minimizar el Tiempo de Respuesta. sean cuales sean sus características de procesamiento o prioridad. Esto solo es viable ejecutando trabajos limitados por el CPU (no por entradas y salidas). Introduciendo y sacando con rapidez trabajo completo del sistema. perjudica a otro y no utiliza sus recursos con eficiencia. Contestando rápidamente solicitudes interactivas. Maximizar la Eficiencia de la CPU manteniendo al CPU ocupado al 100 por ciento del tiempo.un tiempo dado. usted podría decidir “Maximizar la utilización del CPU. 2. Por ejemplo. Esto es fácil si se ejecuta trabajos breves o sin interrupciones. La decisión final es del diseñador del sistema.

ESPERANDO ACTIVAC. los que se detallan a continuación: Planificación de alto nivel:   También se denomina Planificación de trabajos. Planificación de bajo nivel:  Determina a qué proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo. tal como se muestra en la figura 2. lo cual se denomina Planificación de admisión.  Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema. TRABAJOS ESPERANDO ENTRADA ENTRADA DE TRABAJOS TRABAJOS ESPERANDO INICIACION INICIACIÓN DE TRABAJOS TRABAJOS SUSPEND. el que opera muchas veces por segundo y reside siempre en el almacenamiento primario.  Responde a fluctuaciones a corto plazo en la carga del sistema y efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos. Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema. Los distintos Sistemas Operativos utilizan varias Políticas de Planificación.Se consideran tres niveles importantes de planificación. SUSPENDER PROCESOS ACTIVOS PLANIFICACIÓN DE BAJO NIVEL PLANIFICACIÓN DE NIVEL INTERMEDIO PLANIFICACIÓN DE ALTO NIVEL Determina a qué procesos se les puede permitir competir por la ACTIVAR PROCESOS EN EJECUCIÓN DESPACHO 36 TERMINAR TERMINADO .  La efectúa el Despachador del Sistema Operativo. es decir que “despacha” la cpu al proceso. que se instrumentan mediante Mecanismos de Planificación. Planificación de nivel intermedio:  cpu.3.

Maximizar la capacidad de ejecución:  Maximizar el número de procesos servidos por unidad de tiempo.    Minimizar la sobrecarga: No suele considerarse un objetivo muy importante. Ningún proceso es postergado indefinidamente. Equilibrar respuesta y utilización: La mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientes cuando se necesitan. OBJETIVOS DE LA PLANIFICACIÓN Los objetivos de la planificación del procesador son los siguientes e involucran a los conceptos detallados seguidamente: Ser justa:   Todos los procesos son tratados de igual manera. pero la 37 .Figura 2. 2.3: Niveles de planificación del procesador. Equilibrar el uso de recursos: Favorecer a los procesos que utilizarán recursos infrautilizados.7. - Maximizar el número de usuarios interactivos que reciban unos tiempos de respuesta aceptables:  En un máximo de unos segundos. - Ser predecible:  Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema.

  Evitar la postergación indefinida: Se utiliza la estrategia del “envejecimiento”. el mecanismo de planificación debe otorgar al proceso un tratamiento mejor del que le correspondería normalmente. que puede ser requerido por un proceso de más alta prioridad.  Asegurar la prioridad: Los mecanismos de planificación deben favorecer a los procesos con prioridades más altas.  Se debe evitar una carga excesiva mediante las siguientes acciones: a) No permitiendo que se creen nuevos procesos cuando la carga ya es pesada. puesto que es necesario liberar rápidamente el recurso clave.  Dar preferencia a los procesos que mantienen recursos claves: Un proceso de baja prioridad podría mantener un recurso clave.  Si el recurso es no apropiativo. así la prioridad llegará a ser tan alta que el proceso recibirá el recurso esperado. Mientras un proceso espera por un recurso su prioridad debe aumentar. Dar mejor tratamiento a los procesos que muestren un “comportamiento deseable”:  Un ejemplo de comportamiento deseable es una tasa baja de paginación.  Degradarse suavemente con cargas pesadas: Un mecanismo de planificación no debe colapsar con el peso de una exigente carga del sistema.utilización total de recursos podrá ser pobre. b) Dando servicio a la carga más pesada al proporcionar un nivel 38 .

¿Qué urgencia tiene una respuesta rápida?: Por ejemplo un proceso de tiempo real de un sistema de control que supervise una refinería de combustible requiere una respuesta rápida. más rápida que la respuesta requerida. un mecanismo de planificación debe considerar lo siguiente. 39 .8. por lo que la planificación se convierte en un problema complejo. ¿tiende a usarla hasta que expira su tiempo?. La limitación de un proceso a la cpu: cuando un proceso obtiene la cpu. Frecuentemente un proceso genera fallas (carencias) de página: Probablemente los procesos que generan pocos fallos de página hallan acumulado sus “Conjuntos de trabajo” en el almacenamiento principal.  Un criterio indica favorecer a los procesos que han establecido sus conjuntos de trabajos.  La prioridad de un proceso: A mayor prioridad mejor tratamiento. La limitación de un proceso a las operaciones de Entrada / Salida: cuando un proceso consigue la cpu.  Los procesos que experimentan gran cantidad de fallos de página aún no han establecido sus conjuntos de trabajo. ¿la utiliza solo brevemente antes de generar una petición de Entrada/ Salida?. por un proceso en lotes (batch) que deberá entregarse al día siguiente. Muchas de estas metas se encuentran en conflicto entre sí.Moderadamente reducido de servicio a todos los procesos. 2. CRITERIOS DE PLANIFICACIÓN Para realizar los objetivos de la planificación. Si un proceso es por lote (batch) o interactivo: los usuarios interactivos deben recibir inmediato servicio para garantizar buenos tiempos de respuesta.

el corto tiempo de ejecución antes de la apropiación no justifica la sobrecarga de hacer ejecutar al proceso en primer lugar. rápida. - ¿Cuánto tiempo adicional va a necesitar el proceso para terminar?: los tiempos promedio de espera pueden reducirse priorizando los procesos que requieren de un tiempo de ejecución mínimo para su terminación.  Cada vez que el Sistema Operativo asume la sobrecarga para hacer ejecutar este proceso. ya que el intercambio de contexto implica sobrecarga y además requiere mantener muchos procesos en el Es útil cuando los procesos de alta prioridad requieren atención 40 . Las principales características de la planificación apropiativa son las siguientes. Es importante para garantizar buenos tiempos de respuesta en sistemas interactivos de tiempo compartido. ver figura 2. 2. - Frecuentemente un proceso ha sido apropiado por otro de más alta prioridad. Tiene un costo en recursos.4. Otro criterio indican favorecer a los procesos con una taza alta de fallos de página ya que rápidamente generaran una petición de E/S. - ¿Cuánto tiempo de ejecución real ha recibido el proceso?: un criterio considera que debe ser favorecido un proceso que ha recibido muy poco tiempo de cpu. lo cual significa los siguiente:  A menudo los procesos apropiados deben recibir un tratamiento menos favorable.9. PLANIFICACIÓN APROPIATIVA VERSUS NO APROPIATIVA Las Disciplinas de Planificación pueden ser Apropiativas o No Apropiativas. pero pocas veces es posible conocer la cantidad de tiempo adicional que cada proceso necesita para terminar.

Logra más equidad en el tratamiento de los procesos.2: Disciplinas de planificación del procesador. en razón de que muchas veces las propias prioridades no son asignadas en forma significativa. Signifique los trabajos “largos” hacen esperar a los trabajos Disciplina “Apropiativa” “No Apropiativa” Descripción Una vez que se le ha otorgado la cpu a un proceso.2. a continuación se muestra la tabla 2. 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.almacenamiento principal. Las principales características de la planificación no apropiativa son las siguientes: “cortos”. Una vez que se le ha otorgado la cpu a un proceso. en espera de la cpu. no le puede ser retirada Tabla 2. 41 . le puede ser retirada. lo que también implica sobrecarga. donde se describe los conceptos de apropiativa y no apropiativa. El mecanismo debería ser sencillo pero efectivo y significativo. El diseño de un mecanismo apropiativo hace necesario considerar las arbitrariedades de casi cualquier esquema de prioridades.

10. Es un algoritmo muy simple de implementar. con su énfasis en el uso interactivo del tiempo de respuesta.10. PRIMERO EN SERVIRSE Primero en entrar. 2. basado en una política especifica para asignar al CPU y mover los diseñadas para mover los trabajos por lotes a través del sistema con tanta eficiencia como era posible. Los primeros sistemas operativos utilizaban políticas no apropiativas. porque utiliza un tipo de cola FIFO. Este algoritmo está bien 42 . 2. en un algoritmo de planificación de procesos.Figura 2. ALGORITMOS DE PLANIFICACIÓN DE PROCESOS El planificador de procesos se apoya trabajos por el sistema. Aquí presentamos seis algoritmos de planificación de procesos de uso muy difundido.4: Tipos de planificación del procesador. La mayor parte de los sistemas actuales. utilizan un algoritmo que se ocupa de las solicitudes inmediatas de usuarios interactivos. primero en ervirse (FCFS) es un algoritmo de planificación no apropiativa que maneja los trabajos de acuerdo con su tiempo de arribo: conforme entran son servicios. PLANIFICACIÓN PRIMERO EN ENTRAR.1.

después que ha procesado todos los trabajos que existían en la cola.5: Diagrama de secuencia para los trabajos de A. C. el ciclo CPU contiene tanto el uso real del CPU como las solicitudes de E/S: el tiempo de ejecución total. Los ejemplos que siguen suponen un entorno FCFS por completo (sin multiprogramación) El tiempo de retorno es impredecible con la FCFS.para la mayor parte de los sistemas por lotes. no existen colas de BLOQUEADO (cada trabajo se ejecuta hasta su terminación).C que utiliza el algoritmo FCFS. conforme un nuevo trabajo entra en el sistema su PCB queda vinculado con el final de la cola de LISTO y es eliminado de la parte delantera de la cola cuando el procesador queda disponible – esto es. En un sistema FCFS ciento por ciento. Trabajo A 0 18 17 15 Trabajo B Trabajo C Figura 2. Con los FCFS. aunque pueden haber sistemas en que el control (“contexto”) pasa a una espera natural (solicitud de E/S). 43 . La línea de tiempo (diagrama de Gantt) ilustrada en la figura 2.B. pero es inaceptable para los sistemas interactivos porque cortos de respuesta. luego de lo cual el trabajo se reanuda al terminar la operación de E/S. B. usa un algoritmo FCFS con una secuencia de llegada A.5. considere las siguientes tres tareas: política los usuarios interactivos deben tener tiempos TRABAJO CICLO DE CPU A B C 15 2 1 Para cada trabajo.

3 Esto es una verdadera mejoría sobre la primera secuencia. los resultados serían según se muestra en la figura 2. Con cuatro trabajos las oportunidades pasan a una en 24 y así sucesivamente.B.67 Sin embargo.A). Es un algoritmo de planificación no apropiada (también conocido como trabajo más corto primero o SJF ) que maneja los trabajos con base en la duración de su ciclo de CPU.el tiempo promedio total es: (18 +3 +1) 3 = 7. para el trabajo B. el sistema sólo tiene una oportunidad en seis de ejecutar los trabajos en la secuencia más ventajosa (C. y para C es 1. Por desgracia.6: Diagrama de secuencia para los trabajos C. 17 y para C. B es 3.10. en caso de usar el mismo algoritmo FCFS. PLANIFICACIÓN SIGUE EL TRABAJO MÁS CORTO Sigue el trabajo más corto (SJN). B. Es muy fácil de implementar en entornos por lotes. digamos C. estos dos ejemplos ilustran la desventaja principal del uso del concepto FCFS: los tiempos promedio de retorno varían de una manera muy amplia y rara vez se minimizan. 18.A con el algoritmo FCFS. 2.Si los tres trabajos llegan prácticamente de manera simultánea. porque los usuarios 44 .B. De hecho. no funciona en sistemas interactivos. podemos calcular que el tiempo de retorno para el trabajo A es 15. A. Sin embargo.2.6. cuando hay tres trabajos en la cola de LISTO. En este ejemplo el tiempo de retorno para el trabajo A es 18. Trabajo 0 C 1 Trabajo B 3 Trabajo A 18 Figura 2. Por lo que el tiempo de retorno promedio es: (15 + 17 + 18) 3 = 16. donde casa usuario da por adelantado el tiempo estimado de CPU requerido par ejecutar el trabajo al inicio del mismo. si los trabajos llegasen en un orden diferente.

el trabajo A finaliza en su tiempo dado más los tiempos de D mas B (5+4+2) y el trabajo C termina en su tiempo dado más de los tres anteriores (6+5+4+2). o tiempo de ejecución. El tiempo de retorno promedio es: ( 2 + 6 +11 +17) ) 4 = 9. En la figura 2. Por ejemplo. por lo que al calcular el promedio 45 . todos en la cola de LISTO.0 Tomémonos un minuto para ver por qué este algoritmo puede demostrar ser óptimo y dar el tiempo de retorno promedio mínimo. Podemos ver que el trabajo B termina en su tiempo dado (2). A. Usaremos el ejemplo de arriba para deducir una formula de tipo general.7. D. con el algoritmo SJN.no prevén el tiempo de CPU requerido para ejecutar sus trabajos.7.7: Diagrama de tiempo de la secuencia de tareas B. A. a continuación hay cuatro trabajos pro lotes. más el tiempo que tuvo que esperar para que se ejecutara B (4+2). la línea de tiempo aparecen en la Trabajo 0 B 2 Trabajo D 6 Trabajo A 11 Trabajo C 17 Figura 2. D. se estima como sigue: Trabajo A B C D Ciclado de CPU 5 2 6 4 El algoritmo SJN figura 2. revisaría los cuatro trabajos y los programaría para procesamiento en este orden B. para la cual el ciclo de CPU. C. C. el trabajo D acaba en su tiempo dado.

0 4 para el primer trabajo aparece cuatro veces en la ecuación tiene cuatro veces más efecto sobre el tiempo promedio que la duración del cuarto trabajo. PLANIFICACIÓN POR PRIORIDAD La planificación por Prioridad. primero en servirse dentro de la prioridad). y el tiempo del cuarto. el tiempo para el segundo trabajo aparece 3 veces (número de trabajos menos uno).0 4 Como puede ver el tiempo para el primer trabajo aparece en la ecuación cuatro veces – una para cada trabajo – en forma similar. aun cuando para algunos usuarios pueden dar un tiempo de retorno más lento. ordenadas desde el lapso mas corto hasta el más largo. el procesador se asigna a la que llegó primero (primero en entrar. 2. Este algoritmo da tratamiento preferencial a los trabajos importantes. que sólo figura una vez. Permite procesar primero y en forma interrumpida los programas con la prioridad más elevada hasta que sus ciclos CPU (tiempo de ejecución se hayan completado o hasta que ocurra una espera natural.4. PLANIFICACIÓN TIEMPO RESTANTE MÁS BREVE El tiempo restante más breve (SRT) es la versión apropiativa del algoritmo 46 . una (cantidad de trabajos menos 3).10. Si hay dos o más trabajos con prioridad igual en la cola de LISTOS.3. Así pues. el resultado será el promedio más pequeño posible. el tiempo del tercero. Así pues la ecuación anterior se puede escribir de la forma: ( Dado que el tiempo 4 * 2 + 3 * 4 + 2 * 5 + 1* 6 ) =9.10. 2. seguido en orden por los demás trabajos. es un algoritmo no apropiativo y uno de los algoritmos de planificación más comunes en sistemas por lotes. en el primer trabajo requiere el tiempo de calculo más breve.tenemos: [ ( 2) + ( 4 + 2) + ( 5 + 4 + 2) + ( 6 + 5 + 4 + 2) ] = 9. dos (trabajos menos dos).

Este algoritmo no es implementable en un sistema interactivo.8. El trabajo D es el siguiente en correr ya que necesita menos tiempo de CPU para terminar que el trabajo A. Un ejemplo de la figura 2. aunque esto también puede ocurrir). A menudo se utiliza en entornos por lotes. El procesador se asigna al trabajo que esté por terminar – pero incluso este trabajo se puede hacer a un lado si un trabajo más reciente en la cola de LISTO tiene un tiempo de terminación más breve. muestra la forma en que funciona el algoritmo SRT con cuatro trabajos que han llegado en rápida sucesión (con una diferencia de un ciclo de CPU).SJN. Aquí el trabajo A se le permite terminar Trabajo Trabajo A 0 1 B 2 Trabajo C 3 Trabajo B 5 Trabajo D 9 Trabajo A 14 47 . aun cuando el SRT supone más carga general que el SJN. porque requiere saber por adelantado cuánto tiempo del CPU representa la terminación de ada trabajo. TRABAJO A B C D TIEMPO DE LLEGADA 0 1 2 3 CICLO DE CPU 6 3 1 4 Aquí el trabajo A es desplazado por el trabajo B ya que éste tiene menos tiempo de CPU restante Aquí el trabajo B es desplazado por el trabajo C ya que éste tiene menos tiempo de CPU restante Ahora el trabajo B puede continuar ya que el trabajo C ha terminado Ahora el trabajo B puede continuar ya que el trabajo C ha terminado. cuando es deseable dar preferencia a trabajos breves. porque el sistema operativo tiene que vigilar con frecuencia el tiempo del CPU de todos los trabajos en la cola de LISTO y debe efectuar “cambios de contexto” para los trabajos que se están intercambiando (“conmutando”) en el momento de la apropiación (no necesariamente hacia el disco.

9 utiliza la misma situación con SJN. El sigueinte trabajo que se va a 48 .B.75 Note en la figura 2.D. con el algoritmo SJN no apropiativa.9: Línea de tiempo para la misma secuencia de trabajos A.25 4 ¿Comó se compara lo anterior con el problema que utiliza la política SJN no apropiativa? La figura 2. Trabajo 0 A 7 10 14 6 Trabajo Trabajo C B Trabajo D Figura 2.C. Este caso el tiempo de retorno es: Trabajo: Tiempo de retorno A 6 B 9 C 5 D 11 Por lo que el tiempo promedio de retorno es: ( 6 + 9 + 5 + 11) 4 = 7.Figura 2.B. menos su tiempo de llegada: Trabajo: Tiempo de retorno A 14 B 4 C 1 D 6 Por lo que el tiempo promedio de retorno es: (14 + 4 + 1 + 6) = 6.9.C. por lo que se ejecuta primero y continúa hasta que está temrinando porque SJN es un algoritmo no apropiatio.8: Diagrama de tiempo de la secuencia de trabajos A. que inicialmente A es el único trabajo en la cola de LISTO. En ete caso el tiempo de retorno es el tiempo de teminación de cada trabajo.D con el algoritmo apropiante SRT.

ejecutar es C, porque cuando termina A (en el tiempo 6) han llagado los demás trabajos (B, C, y D) de estos tres C tiene un ciclo de CPU más breve, por lo que es el siguiente que se atiende, después B y por último D. Por lo tanto, con este ejemplo , SRT en 6.25 es mas rápido que SJN en 7.75 sin embargo, no incluimos el tiempo requerido por el algoritmo SRT para efectuar el cambio de contexto, el cual se requiere en todas los algoritmos preferentes. Cuando se opta por el trabajo A, procesamiento toda su información de posterior, cuando se debe guardar en su PCB para uso

prosiga su ejecución y el contenido del PCB del trabajo B se cargue en los registros apropiados de manera que pueda volver a ejecutarse; esto es un cambio de contexto. Luego, cuando el trabajo A es reasiganado al procesador, ocurre otro cambio de contexto; cada vez la información del trabajo desplazado se almacena en su PCB y el contenido del PCB del trabajo A se carga en los registros apropiados.

2.10.5. PLANIFICACIÓN ROUND ROBIN Round Robin. Es un logaritmo de planificación de procesos apropiante muy difundido en sistemas interactivos, ya que es fácil de implementar y no se basa en las caracteristicas del trabajo sino en una fracción predeterminada de tiempo que se da a cada trabajo, para asegurar que los procesos activos compartan por igual el CPU y que ningún trabajo lo monopolice. Esta fracción de tiempo se conoce como quatum de tiempo y su tamaño es vital para el desempeño del sistema. Por lo general varían de 100 milisegundos a 1 0 2 segundos. Los trabajos se colocan en la cola de LISTO utilizando el esquema de primero en entrar, primero en servirse, y el planificador de procesos selecciona el primero en la parte delantera de cola, pone en marcha el reloj en el quantum de tiempo y asignar el CPU a este trabajo. Si elprocesamiento no ha terminado cuando expira el tiempo, se retira el trabajo, se coloca al final de la cola de LISTO y su información se guarda en su PCB. En caso que le ciclo de CPU del trabajo sea más breve que el quantum de 49

trabajo, ocurrirá una de dos situaciones: 1) si se trata del último ciclo CPU del trabajo y éste ha terminado, todos los recursos asignados al mismos se liberan y el trabajo completando se devuelve al usuario. 2) su una solicitud de E/S ha interrumpido el ciclo del CPU, la información de la tarea se guarda en su PCB y queda vinculada al final de la cola apropiada de entradas y salidas. Luego una vez satisfecha la solicitud de E/S, se devuelve al final de la cola de LISTO para esperar asignación de CPU. El ejemplo de la figura 2.10. ilustra un logaritmo de round robin con una fracción de tiempo de 4 milisegundos (se ignora las solicitudes de E/S):

TRABAJO A B C D

TIEMPO DE LLEGADA 0 1 2 3

CICLO DE CPU 8 4 9 5

Trabajo 0 A 8 12 16 20 24 25 4 93

Trabajo B

Trabajo C

Trabajo D

Trabajo A

Trabajo C

Trabajo D

Trabajo C

Figura 2.10: Diagrama de tiempo para la secuencia de trabajos A,B,C,D con el algoritmo de round robin apropiativo.

El tiempo de retorno en el lapso en que se termina, menos al tiempo de llegada. Trabajo: Tiempo de retorno 20 A 7 B 24 C 22 D

Por lo que el tiempo promedio de retorno es:

( 20 + 7 + 24 + 22)
4

= 18.25

50

Note que la figura 2.10,

el trabajo A se hizo

de lado una vez porque

necesitaba 8 milesegundos para completar su ciclo de CPU, en tanto que el trabajo B termino en un tiempo de quantum. El trabajo C se retiró dos veces porque necesitaba 9 milesegundos para completar su ciclo de CPU y el trabajo D se retiró una vez porque requeria 5 milesesundos. En su última ejecución o intercambio en la memoria, los tranajos D y C utilizaron el CPU durante un 1 milesegundo y terminaron antes que expirara su tiempo de quantum, con lo que libraron el CPU más aprisa. La eficiencia de round robin depende del tamaño de quantum en relación con el ciclo promedio del CPU. Si dicho quantum es demasiado grande – esto es mayor que la generalidad de los ciclos CPU - el algoritmo se reduce a un sistema FCFS. Si es demasiado pequeño, la cantidad de cambios de contexto disminuyen la velocidad de ejecución de los trabajos y la carga general se inrementa en forma dramática, como lo demuestran los tres ejemplos de la figura 2.11. El trabajo A tiene un ciclo de CPU de 8 milisegunods. La cantidad de cambios de contexto se incrementa conforme se reduce de tamaño el tiempo de quantum. En la figura 2.11. El primer caso: a) Tiene un tiempo de quantum de 10 milesegundos y no hay cambio de contexto (sin carga general), el ciclo del CPU termina antes que expire el tiempo de quantum y el trabajo se ejecuta hasta terminarse. Para ese trabajo con este quantum no hay diferencia entre los algoritmos de round robin y de FCFS. b) Con un tiempo de quantum de 5 milesegundos, existe un cambio de contexto. El tranajo se retira una vez cuando el quantum expira, por lo que existe algo base en la cantidad de otros trabajos en el sistema. c) Con un tiempo de quantum de 5 milesegundo existe un cambios de contexto, el trabajo se retira una vez cuando el quantum expira por lo que existe algo de carga general por cambio de contexto, y habra un tiempo de retorno retrasado con base en la cantidad de otros trabajos en el sistema. d) Con un tiempo de quantum de 1 milisegundo hay siete cambios de

51

el tiempo de respuesta no es un factor (el tiempo de retorno lo es) y la carga general adquiere importancia.contexto. 52 . porque el trabajo se retira cada que expira el tiempo de quantum. 2) Debe ser por lo menos cien veces mas largo que el tiempo requerido para llevar a cabo un cambio de contexto. Si se trata de un sistema por lotes. Si se trata de un entorno interactivo.11: Cambios de contexto de el trabajo A con tres quantum de tiempo. pero no son inflexibles. Existen dos reglas prácticas generales para seleccionar el quantum “correcto”: 1) Deben ser lo bastante largo para permitir que 80 por ciento de los ciclos CPU se ejecutan hasta su terminación. ¿Cuál es el tamaño más adecuado del tiempo de quantum? La respuesta debe ser predecible en este momento: depende del sistema. Trabajo A 0 Tiempo de quantum = 10 Trabajo A 0 Tiempo de quantum = 5 Trabajo 0 A 4 3 7 6 5 8 2 1 Trabajo A Trabajo A Trabajo A Trabajo A Trabajo A Trabajo A Trabajo A 5 Trabajo A 8 8 Tiempo de quantum = 1 Figura 2. Estas reglas se utulizan en algunos sistemas. en especial cuando hacen solicitudes simples. y por consiguiente el tiempo de retorno sufre. En a) el trabajo termina antes que expire el tiempo de quantum en b) y c) el quantum expira primero e interrupmpe el trabajo. se espera que el sistema responda con rapidez a sus usuarios. la carga general se vuelve costosa.

el planificador de procesos seleccionaria de manera alterna trabajos de cada cola.3.10.6. que acepta trabajos por lotes e interactivos. ver tabla 2. Los primeros se ponen en una cola llamada cola de “segundo plano” en tanto que los segundos se hubican en una cola de ”primer plano” y se tratan mas favorablemente que los correspondientes a las colas de segundo plano.2. Otro tipo de sistema puede reunir los trabajos limitados por CPU en una cola y los trabajos restringidos por entradas y salidas en otra. Luego. los trabajos se asignan de manera FCFS. que da un tratamiento especial a los trabajos de cada cola. Todos estos ejemplos tienen algo en común: la política de planificación se basa en algún esquema predeterminado. Un tercer ejemplo común es el utilizado en un entorno hibrido. A continuación se compara los diferentes algoritmos presentados en este capitulo. En cada cola. PLANIFICACIÓN DE COLAS DE MULTIPLES NIVELES Las colas de multiples niveles no son en realidad un algoritmo de planificación por separado. Ya hemos presentado por lo menos un tipo de cola de multiples niveles: la de un sistema basado en prioridades con diferentes colas por cada nivel de importancia. para mantener el sistema equilibrado. Algoritmo FCFS SJN Planificación por prioridad SRT Tipo de Política No aporpiativo No aporpiativo No aporpiativo Aporpiativo Mejor para Lotes Lotes Desventajas Impredecible tiempo de retorno Aplazamiento indefinido de algunos trabajos Aplazamiento indefinido de algunos trabajos Sobrecarga incurrida por conmutación de 53 Ventajas Facil de implementar Minimiza el tiempo promedio de espera Asegura la rápida terminación de trabajos importantes Asegura la rápida terminación de trabajos cortos Lotes Lotes . pero funcionan junto con varios de los esquemas ya analizados y se encuentran en sistemas con trabajos que se pueden agrupar de acuerdo con una carácteristica común.

El asincronismo es un tópico complejo. o pueden ser asincrónicos. Davies (Pascal-FC). lo cual significa que requieren una sincronización y cooperación ocasionales. da un tratamiento adecuado a los trabajos asignados al CPU por incremento de quantum sobre colas de baja prioridad u otro tipo de colas Colas de múltiples niveles Apropiativo No apropiativo Lotes/ interactivo Sobrecarga incurrida por revisión constante de colas Tabla 2. Sus soluciones se presentan como programas concurrentes codificados utilizando el lenguaje Pascal concurrente desarrollado inicialmente por Wirth (Pascal-S). Provee tiempos de respuesta razonables para usuarios interactivos.L. asi como asignación adecuada de CPU Esquema flexible. Los procesos concurrentes pueden funcionar con total independencia unos de otros. Se presentan muchos problemas importantes de asincronismo. en este trabajo se exponen la organización y administración de sistemas que soportan procesos concurrentes asincrónicos.contexto Round Robin Aporpiativo Interactivo Requiere seleccionar un buen tiempo de quantum.3: Comparación de los algoritmos de planificación. PROCESOS CONCURRENTES ASINCRÓNICOS Los procesos son concurrentes si existen al mismo tiempo. se opone al aplazamiento indefinido con el envejecimiento u otro movimiento en cola. CAPITULO 3 ADMINISTRACIÓN DE PROCESOS CONCURRENTES 3. 54 . extendido por Ben Ari y modificado en la Universidad de Bradford (UK) por G.1.

tal vez. una línea del otro. Trataremos varios ejemplos de interacción de procesos en este trabajo. Si ciertas operaciones pueden ser ejecutadas en paralelo de forma lógica. la segunda línea del primero. leyendo una línea de un libro. Por ello. 3. Los programas en paralelo son mucho más difíciles de depurar que los programas secuenciales. La gente parece más capaz de centrar su atención en una sola actividad a la vez que de pensar en paralelo. entonces las computadoras con múltiples procesadores las ejecutarán físicamente en paralelo.2. millones de actividades concurrentes. PROCESAMIENTO EN PARALELO A medida que disminuyen tanto el tamaño como el precio del hardware de las computadoras se irá produciendo una tendencia hacia el multiprocesamiento y la masificación del paralelismo. UNA ESTRUCTURA PARA INDICAR EL PARALELISMO: COBEGIN/COEND Son muchas las construcciones de lenguajes de programación para indicar paralelismo que han aparecido en la literatura.3. Los procesos asincrónicos deben interactuar ocasionalmente entre sí. puede resultar imposible reconstruir la secuencia de eventos que han ocacionado el error. (Intente leer dos libros al mismo tiempo. después de haber arreglado supuestamente un error.3. y así sucesivamente). sería en cierto modo inapropiado asegurar que se ha corregido el error. y esas interacciones pueden ser complejas. Una proposición indicando que la ejecución secuencial debe ser dividida entre varias secuencias de ejecución en paralelo ( trayectoria de 55 . Es difícil determinar cuáles actividades pueden ejecutarse o no en paralelo. aunque en el nivel de paralelismo se den miles o. El procesamiento en paralelo es interesante por varias razones. Estas implican pares de proposiciones como las siguientes: control).

considérese el siguiente cálculo de una raíz de la ecuación cuadrática: x := ( -b + (b**2 . Esto determina que la trayectoria de control simple se divida en n trayectorias separadas de control. Cuando todas las trayectorias de control paralelas llegan al final. llamadas a procedimientos. o cobegin/coend (para comenzar o finalizar una ejecución concurrente). proposición 2. En este trabajo emplearemos cobegin/coend de acuerdo a la sintaxis del Pascal-FC. una por cada proposición de la construcción cobegin/coend.5) / (2*a) Esta asignación puede ser evaluada en un procesador secuencial (poseedor de una instrucción de exponenciación) de la siguiente manera: 56 . o combinaciones de éstos. bloques de proposiciones secuénciales delineados por begin/end. coend Supóngase que un programa está ejecutando una sola secuencia de instrucciones cuando se encuentra con la construcción cobegin anterior. Su forma general es: cobegin proposición 1. Como ejemplo.4*a*c) ** 0.- Una proposición indicando que ciertas secuencias de ejecución en paralelo están a punto de producirse y se reanudará la ejecución secuencial. : . Cada una de las trayectorias de control individuales acaba por alcanzar y terminar al coend. Estas proposiciones ocurren en pares y suelen denominarse parbegin/parend (para comenzar y finalizar una ejecución en paralelo). Estas pueden ser proposiciones simples. se reanuda una trayectoria de control simple y el sistema prosigue más allá del coend. proposición n.

1 2 3 4 5 6 7 8 9 b**2 4*a (4*a)*c (b**2) .5)/(2*a) Aquí se ejecutan de una en una cada una de las nueve operaciones en una secuencia determinada por las reglas de un sistema de precedencia de operadores. 57 . las cinco operaciones restantes deben ser ejecutadas de forma secuencial. t5:= t1 + t5. t4:= 2 * a. la expresión puede evaluarse de la manera siguiente: 1 cobegin t1:= -b.(4*a*c) (b**2 .5 ) 2*a (-b+(b**2-4*a*c)**0. Al ejecutar los cálculos en paralelo se reduce en gran medida el tiempo real de ejecución. t5:= t2 .5 -b (-b) + ( (b**2 . coend 2 3 4 5 6 t5:= t3 * c. Aquí se evalúan en paralelo las cuatro operaciones contenidas dentro de la construcción cobegin/coend.t5.4*a*c) ** 0. t2:= b ** 2. En un sistema que soporte procesamientos en paralelo. x:= t5 / t4. t3:= 4 * a.5. t5:= t5 ** 0.4*a*c)**0.

3. A continuación. Suponga ahora que el primer proceso ejecuta las instrucciones LOAD y ADD. El proceso uno mete 60 líneas mientras que el proceso dos mete 40. Por supuesto.2 58 . el cual continúa con la ejecución de la instrucción STORE. dejando así el valor de 2346 en un acumulador. colocando también el valor 2346 en NOLINEAS. Debido al acceso incontrolado a la variable compartida NOLINEAS el sistema ha perdido la pista de una de las líneas. Pierde el procesador y lo obtiene de nuevo el primer proceso. Supóngase que los usuarios acaban cada línea.4. se muestra el programa pro00 que simula este concepto así como diferentes corridas del mismo. Supóngase que se desea supervisar continuamente el número total de líneas que los usuarios han introducido al sistema desde el comienzo del día. Considérese lo que pasaría si dos procesos intentaran incrementar NOLINEAS simultáneamente. Cada vez que uno de estos procesos recibe una línea de la terminal de un usuario incrementa en 1 la variable global compartida NOLINEAS. que teclean al sistema con un retorno de carro. la suma total de líneas debería ser 100. pero observe lo que pasa. y que cada terminal está supervisada por un proceso diferente.Pascal-FC for IBM PC compatibles . Supóngase que cada proceso tiene su propia copia del código: LOAD ADD NOLINEAS 1 STORE NOLINEAS Suponga que NOLINEAS tiene un valor de 2345. Este último ejecuta ahora las tres instrucciones. Entonces el proceso pierde el procesador (debido a la terminación de un quantum) en beneficio del segundo proceso.Compiler Version P5. ajustando así NOLINEAS con el valor 2346. el total correcto debería ser 2347. . EXCLUSIÓN MUTUA Considérese un sistema con varias terminales de tiempo compartido.

nolineas: integer. (* dos *) 59 .G L Davies & A Burns. (* uno *) 20 end. 0 0 var 0 0 0 (* El proceso uno contará 60 lineas *) 0 process uno. for lin := 1 to 60 do begin nolineas := nolineas + 1 end lin: integer. 11 var 11 11 11 begin 11 15 15 18 22 for lin := 1 to 40 do begin nolineas := nolineas + 1 end lin: integer. 9 end. University of Bradford Compiler listing 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 0 0 program pro00. 0 var 0 0 0 begin 0 4 4 7 11 11 (* El proceso dos contará 40 líneas *) 11 process dos.

execution begins . 78 Program terminated normally Type r and RETURN to rerun Program pro00 .. cobegin uno. 57 Program terminated normally Type r and RETURN to rerun Program pro00 Total de líneas = ...Interpreter Version P5.3 Program pro00 Total de líneas = .nolineas) 39 end. writeln('Total de líneas ='. 60 ...31 32 33 34 35 36 37 38 39 22 (* Programa principal *) 22 begin 22 25 26 30 30 35 nolineas := 0..... execution begins .. execution begins .. 74 Program terminated normally Type r and RETURN to rerun Program pro00 Total de líneas = . execution begins ... ... dos coend..

Total de líneas =

76

Program terminated normally Type r and RETURN to rerun Program pro00 Total de líneas = ... execution begins ... 69

Program terminated normally

Este problema puede solucionarse dándole a cada proceso acceso exclusivo a NOLINEAS. Mientras un proceso incrementa la variable compartida, los demás procesos que deseen hacer lo mismo al mismo tiempo deben permanecer a la espera; cuando ese proceso termine de accesar la variable deseada, le será permitido proceder a uno de los procesos. De esta manera, cada proceso que esté accesando el dato compartido impide a todos los demás hacer lo mismo al mismo tiempo. Esto se denomina exclusión mutua.

3.5. SECCIONES CRÍTICAS La exclusión mutua necesita ser aplicada sólo cuando un proceso accesa a datos compartidos; cuando los procesos ejecutan operaciones que no estén en conflicto entre sí, debe permitirseles proceder de forma concurrente. Cuando un proceso está accesando da tos compartidos se dice que el proceso se encuentra en su sección crítica (o región crítica). Esta claro que para prevenir el tipo de problema experimentado en la sección anterior debe asegurarse que, cuando un proceso esté en su sección crítica, todos los demás procesos (o al menos aquellos que tengan acceso a los mismos datos compartidos) sean excluidos de sus propias secciones críticas. Mientras un proceso se encuentre en su sección crítica, los demás procesos pueden continuar su ejecución fuera de sus secciones críticas. Cuando un proceso abandona su sección crítica, entonces debe permitírsele proceder a 61

otros procesos que esperan entra r en su propia sección crítica (si hubiera un proceso en espera). La aplicación de la exclusión mutua es uno de los problemas clave de la programación concurrente. Se han diseñado muchas soluciones para esto: algunas de software y algunas de hardware, más de bajo nivel y otras de alto nivel; algunas que requieren de cooperación voluntaria entre los procesos, y algunas que demandan una adherencia rígida a protocolos estrictos. Estar dentro de una sección crítica es un estado muy especial asignado a un proceso. El proceso tiene acceso exclusivo a los datos compartidos, y todos los demás procesos que necesitan accesar a esos datos permanecen en espera. Por tanto, las secciones c ríticas deben ser ejecutadas lo más rápido posible, un programa no debe bloquearse dentro de su sección crítica, y las secciones críticas deben ser codificadas con todo cuidado (para evitar, por ejemplo, la posibilidad de incurrir en ciclos infinitos). Si un proceso dentro de una sección crítica termina, tanto de forma voluntaria como involuntaria, entonces, al realizar su limpieza de terminación, el sistema operativo debe liberar la exclusión mutua para que otros procesos puedan entrar en sus secciones críticas.

3.6. PRIMITIVAS DE EXCLUSIÓN MUTUA El programa concurrente que se muestra a continuación implementa correctamente el mecanismo contador de líneas de la sección anterior. Por simplicidad, trataremos tan sólo dos procesos concurrentes en los programas presentados en esta y en las próximas secciones. El ma nejo de n procesos concurrentes es mucho más complejo. Las construcciones entraexcluisionmutua y saledeexclusionmutua introducidas en el programa encapsulan el código en cada proceso que accesa la variable compartida NOLINEAS, es decir, estas construcciones demarcan las secciones crítica s. Estas operaciones se llaman, a veces, primitivas de exclusión mutua; o sea, que invocan las operaciones más fundamentales inherentes a la exclusión mutua.

62

program exclusionmutua; var nolineas: integer; process uno; var lin: integer; begin for lin := 1 to 60 do begin entraexclusionmutua; nolineas := nolineas + 1; saledeexclusionmutua end end; (* uno *) process dos; var lin: integer; begin for lin := 1 to 40 do begin entraexclusionmutua; nolineas := nolineas + 1; saledeexclusionmutua end end; (* dos *) begin nolineas := 0; cobegin uno; dos

63

se hace que las referencias sucedan una a la vez. end. Si el proceso dos está en su sección crítica cuando el proceso uno se ejecuta entra a exclusión mutua. ésta se termina sin interrupción. Si procesadores múltiples tratan de accesar el mismo dato. si el proceso dos no está en su sección crítica. entre el código de entrada a exclusión mutua y sale de exclusión mutua código de salida de exclusión mutua que satisfaga las cuatro restricciones siguientes: La solución se implementa sólo en software en una máquina que no tenga instrucciones de exclusión mutua especialmente diseñadas.coend. permaneciendo el otro en espera.7. una vez iniciada una instrucción. estas primitivas operan como sigue: cuando el proceso uno se ejecuta. entonces el proceso uno entra a su sección crítica. sale de exclusión mutua para indicar que ha abandonado su sección crítica. esto es. IMPLEMENTACIÓN DE LAS PRIMITIVAS DE EXCLUSION MUTUA Se busca una implementación que permite la exclusión mutua. 3. proceder a entrar en su sección crítica. accesa a la variable deseada y después se ejecuta. Se da por supuesto que las referencias separadas son servidas en orden aleatorio. En el caso de los dos procesos. entonces le será permitido proceder a alguno. entra la exclusión mutua. es decir. Si proceso uno y proceso dos se ejecutan entra la exclusión mutua simultáneamente. 64 . entonces. Cada instrucción de lenguaje de máquina se ejecuta de forma indivisible. entonces el proceso uno entra en espera hasta que proceso dos se ejecute sale de la exclusión mutua. debemos suponer que una característica del hardware llamada interbloqueo de almacenamiento resuelve todos los conflictos. El interbloqueo de almacenamiento secuencializa las referencias en conflicto por medio de procesadores separados. Proceso uno puede.

- No deben postergarse indefinidamente la entrada de los procesos en sus secciones críticas. En el programa pro01 entra a exclusión mutua. 3. se implementa por un ciclo 'while' simple. que mantiene el ciclo hasta que pnumero iguala al número del proceso.8. Cada uno de estos procesos entra en un ciclo. En la siguiente sección seguimos el desarrollo de Dijkstra del algoritmo de Dekker. 65 . program pro01.1. sale de exclusión mutua a implementarse por una instrucción simple que ajusta pnumero al número del otro proceso.- No deberá hacerse ninguna suposición en relación con las velocidades relativas de procesos concurrentes asincrónicos. - Los procesos que se encuentren operando fuera de sus secciones críticas no pueden evitar que entren otros procesos en sus propias secciones críticas. entrando repetidamente en su sección crítica. process uno. La construcción cobegin/coend hace que el proceso uno y el proceso dos operen como procesos concurrentes. ALGORITMOS DE EXCLUSIÓN MUTUA 3. Una implementación elegante de software de la exclusión mutua fue la presentada por primera vez por el matemático holandés Dekker.8. nolineas: integer. dentro del contexto de un programa concurrente con dos procesos. DESARROLLO INTUITIVO El programa pro01 muestra un primer intento de especificar el código para forzar la aplicación de la exclusión mutua. (* primera version de las primitivas de exclusión mutua *) var pnumero: integer.

begin for lin := 1 to 50 do begin while pnumero = 1 do null. pnumero := 2 end end. nolineas := 0. nolineas := nolineas + 1. var lin: integer. begin for lin := 1 to 50 do begin while pnumero = 2 do null. pnumero := 1 end end. (* dos *) begin pnumero := 1. cobegin uno. (* uno *) process dos. nolineas := nolineas + 1. dos coend.var lin: integer. 66 .

simplemente permanece en el ciclo en espera de que pnumero se ajuste a 2. por lo menos puede proceder un proceso. El proceso uno acaba por terminar la ejecución dentro de su sección crítica (ha de suponerse que no hay ciclos infinitos) y ajusta pnumero a 2. si ambos intentan entrar simultáneamente en sus secciones críticas.writeln('Total de líneas ='. pero el precio es alto. Como pnumero es inicialmente 1. Después de que el proceso uno entre y salga de su sección crítica. deberá tardar bastante. La exclusión mutua está garantizada. aun cuando el proceso uno desee reentrar y el proceso dos no esté listo. El proceso dos acaba abandonando su sección crítica y realiza su propio código de salida de exclusión mutua. la cual es verdadera si el proceso uno está dentro de su sección crítica. así es que si el proceso dos está listo para entrar en su sección crítica. permitiendo así que el proceso dos entre en su sección crítica. Así es que. está restringido a operar a una velocidad más lenta de la que requiere. entonces el otro no podrá continuar. El proceso uno debe de entrar primero. y p2dentro. el proceso uno entra a su sección crítica. mientras p2dentro sea verdadera. El proceso dos encuentra pnumero igual a 1 y permanece encerrado en su ciclo de while-do. se usan dos variables: p1dentro. en la segunda versión (pro02). Cuando el proceso dos obtiene el procesador. Entonces. ajustando p2dentro en falso.nolineas) end. los procesos deberán entrar y salir de sus secciones críticas en estricta alternancia. En la primera solución existe solamente una variable global simple. el proceso uno permanece encerrado en una espera. El proceso 67 . Si uno de los proceso termina. El sistema no debe interbloquearse completamente. así que proceso dos no entra en su sección crítica y la exclusión mutua queda garantizada. Ahora. que es verdadera si proceso dos está dentro de su sección crítica. y esto forzaba la aparición del problema de sincronización bloqueada. El proceso uno ejecuta el while-do. Si un proceso requiere hacer esto muchas más veces que el otro. entonces el proceso dos deberá seguir.

p1dentro := false end end. begin 68 . begin for lin := 1 to 50 do begin while p2dentro do null. Como quiera que el proceso uno y el proceso dos son concurrentes. proceso dos no podrá entrar en su sección crítica. p2dentro: boolean. Mientras p1dentro sea verdadera. ambos podrían intentar en forma simultánea sus secuencias de código de entrada de exclusión mutua. A continuación se muestra el listado del programa pro02. nolineas := nolineas + 1. nolineas: integer. La sutileza de la programación concurrente vuelve a salir a la superficie. var lin: integer. p1dentro := true.uno ajusta entonces p1dentro en verdadero y entra en su sección crítica. program pro02. (* segunda version de las primitivas de exclusión mutua *) var p1dentro. process uno. (* uno *) process dos. var lin: integer.

Ambos procesos se encuentran en sus secciones críticas al mismo tiempo. antes de que el proceso uno pueda ajustar p1dentro en verdadero. En principio.Interpreter Version P5. y el proceso dos ajusta p2dentro en verdadero y entra a su sección crítica. el proceso uno coloca p1dentro en verdadero y entra a su sección crítica.. cobegin uno. . p2dentro := false end end. así es que la segunda versión ni siquiera garantiza la exclusión mutua. A continuación se muestra la corrida del programa pro02. execution begins . 91 69 . p2dentro := true. el proceso dos podría probar p1dentro y encontrarla falsa.nolineas) end.for lin := 1 to 50 do begin while p1dentro do null. nolineas := nolineas + 1. El proceso uno podría probar p2dentro y encontrarla falsa. writeln('Total de líneas = '.. entonces. En este punto.. nolineas := 0.. (* dos *) begin p1dentro := false.3 Program pro02 Total de líneas = . p2dentro := false. tanto p1dentro como p2dentro son falsas. dos coend.

var lin: integer. debe tener la seguridad de que el otro proceso no puede ir más allá de su propia prueba del while.program terminating En la segunda versión existe una dificultad. una vez que el proceso intenta la prueba del while. nolineas: integer.. begin 70 . (* tercer version de primitivas de exclusion mutua *) var p1quiere..Program terminated normally Type r and RETURN to rerun r Program pro02 Total de líneas = . La tercer versión intenta resolver esto haciendo que cada proceso ajuste su bandera antes de la ejecución del while. hay tiempo suficiente para que el otro proceso pruebe su bandera y entre en su sección crítica. program pro03. process uno. Por tanto. execution begins .. p2quiere: boolean. pues entre el tiempo en que un proceso determina (en la prueba del while) que puede seguir adelante y el tiempo en que el proceso ajusta una bandera para indicar que está en su sección crítica.. 94 Program terminated normally Type r and RETURN to rerun ^Z End of data file .

nolineas) end. begin for lin := 1 to 20 do begin p2quiere := true. var lin: integer. dos coend. writeln('Total de líneas ='. (* dos *) begin nolineas := 0. while p1quiere do null. nolineas := nolineas + 1. Si cada proceso ajusta 71 . while p2quiere do null. p1quiere :=false end end. nolineas := nolineas + 1. (* uno *) process dos. Se ha solucionado un problema pero se ha creado otro. p2quiere := false end end.for lin := 1 to 20 do begin p1quiere := true. cobegin uno.

begin for lin := 1 to 20 do begin p1quiere := true. (* cuarta version de primitivas de exclusion mutua*) var p1quiere... Este es un ejemplo de un interbloqueo de dos procesos (la corrida de este programa causa que la máquina quede bloqueada).Interpreter Version P5. con su bandera todavía conectada. entonces. esto permitirá al otro proceso proceder más allá de su prueba del while. while p2quiere do begin p1quiere := false.3 Program pro03 .. deberá dar reset) El problema de la tercera versión es que todos los procesos pueden encerrarse en su ciclo while-do respectivo. Es necesaria una manera de "romper" estos ciclos. . process uno. program pro04. execution begins .. La cuarta versión logra esto al forzar cada proceso de ciclo a ajustar su bandera en falso repetidamente en períodos breves. var lin: integer. nolineas: integer. p2quiere: boolean. cada proceso se encontrará con la bandera del otro ajustada y entrarán para siempre en el ciclo while-do. sleep(random(10)).su bandera antes de proceder con la prueba del while. p1quiere := true 72 . (El programa bloquea la computadora.

p2quiere := false end end.end. writeln('Total de líneas ='.nolineas) end. (* uno *) process dos. cobegin uno. nolineas := nolineas + 1. (* dos *) begin nolineas := 0. var lin: integer. while p1quiere do begin p2quiere := false. A continuación se muestra una corrida para este programa. p1quiere := false end end. nolineas := nolineas + 1. begin for lin := 1 to 30 do begin p2quiere := true. 73 . sleep(random(10)). dos coend. p2quiere := true end.

habrá que considerar todas las secuencias de ejecución posibles. ajustar su bandera en verdadero y. Desde luego que la probabilidad de que tal operación ocurra es muy baja. Veamos como. retardarse. las condiciones de prueba permanecerán verdaderas.. ajustar su bandera en falso..program terminating La exclusión mutua queda garantizada y no puede ocurrir el interbloqueo. proceder en tándem. la posibilidad de que ocurra una 74 . hacer la prueba del while. 50 Program terminated normally Type r and RETURN to rerun ^Z End of data file . por ejemplo. entrar en el cuerpo del ciclo while. el de postergación indefinida.2 G L Davies & A Burns. execution begins . El proceso podría... Cada proceso puede seguir la siguiente secuencia: ajustar su bandera en verdadero.3 Program pro04 Total de líneas = . University of Bradford Compiling pro04 . Si un sistema que utiliza este sistema de exclusión mutua estuviera controlando un vuelo espacial. Por lo tanto. pero puede presentarse otro problema devastador en potencia. En tanto hacen esto..Pascal-FC for IBM PC compatibles .. Compilation complete . la cuarta versión es inaceptable. Debido a que no pueden hacerse suposiciones acerca de las velocidades relativas de los procesos concurrentes asincrónicos.Compiler Version P5.Interpreter Version P5. comenzando con la prueba del while. pero puede ocurrir. luego. repetir la secuencia. un marcapasos cardíaco o un sistema de control de tráfico aéreo..

(Luego veremos que el proceso dos debe acabar haciendo eso. El 75 . Veamos como. el proceso uno permite al proceso dos entrar en su sección crítica. ALGORITMO DE DEKKER En sólo unas cuantas líneas de código. donde desconecta su propia bandera. entra al ciclo del próximo while y permanece allí en tanto el proceso dos siga siendo el proceso favorecido. esperando a que el proceso dos desconecte su bandera. El proceso uno indica su deseo de entrar en su sección crítica. Si la bandera del proceso dos está desconectada (ajustada en falso). que se utiliza para resolver los conflictos que surgen cuando ambos procesos desean entrar al mismo tiempo en sus secciones críticas.9. Supóngase. Esto obliga al proceso uno a entrar al cuerpo del ciclo while. salta el cuerpo del if y ejecuta repetidamente la prueba del while. entonces el proceso uno es forzado a entrar en el cuerpo del if. Si el proceso uno es el favorecido. Aquí busca la variable favorecido. El proceso dos acabará abandonando su sección crítica y ejecutará su código de salida de exclusión mutua. El algoritmo de Dekker resuelve la posibilidad de la postergación indefinida experimentada en la cuarta versión.postergación indefinida con el consecuente fallo del sistema no es admisible. Estas instrucciones ajustan el proceso favorecido de vuelta al proceso uno y desconectan la bandera del proceso dos. que cuando el proceso uno realice la prueba del while.) Si el proceso uno determina que el proceso favorecido es el proceso dos. descubre que la bandera del proceso dos está conectada. Al desconectar su propia bandera. al conectar su bandera (ajustarla en verdadero). sin embargo. Entonces proced e con la prueba del while donde verifica si el proceso dos también quiere entrar. El proceso uno puede entrar ahora al while interno y conectar su propia bandera. 3. el algoritmo de Dekker (Programa dekker) maneja de manera elegante la exclusión mutua de dos procesos sin necesidad de ninguna instrucción especial de hardware. entonces el proceso uno salta el cuerpo del ciclo while y entra en su sección crítica.

debido a que ahora es el proceso favorecido (recuerde que cuando el proceso dos abandonó su sección crítica. nolineas: integer. A continuación se muestra el listado del programa que utiliza el algoritmo de Dekker para la exclusión mutua. while p2quiere do begin 76 . process uno. begin for lin := 1 to 20 do begin p1quiere := true. program dekker. (* solución de Dekker al problema de la exclusion mutua *) var favorecido: integer. Así es que el proceso un o salta el cuerpo del if y ejecuta de forma repetida la prueba del while externo. Si la bandera del proceso dos (que acaba de desconectarse) sigue aún desconectada. sin embargo. entonces el proceso uno entra en su sección crítica. hasta que el proceso dos "humildemente". ajustó favorecido al primero). Sin embargo.proceso uno realiza ahora el while externo. var lin: integer. entonces la bandera del proceso dos estará conectada y el proceso uno será obligado de nuevo a entrar en el cuerpo del while externo. si el pro ceso dos intentó reentrar rápidamente en su sección crítica. desconecte su bandera. permitiendo entrar en su sección crítica. el proceso uno está "sentado en el asiento del conductor". p1quiere. En esta ocasión. p2quiere: boolean.

nolineas := nolineas + 1. p2quiere := true end. begin for lin := 1 to 20 do begin p2quiere := true. (* uno *) process dos. favorecido := 2.p1quiere := false. (* dos *) begin nolineas := 0. favorecido := 1. while p1quiere do begin p2quiere := false. p1quiere := true end. var lin: integer. nolineas := nolineas + 1. while favorecido = 1 do null. favorecido := 1. p1quiere := false end end. p2quiere := false end end. cobegin 77 . while favorecido = 2 do null.

A continuación se tiene la corrida del programa anterior.. del cual presentamos el siguiente listado y corrida..Interpreter Version P5.uno.. y el proceso uno podrá entrar en su sección crítica. Compiling dekker . este truco no dará como resultado una postergación indefinida.. execution begins .. Como será el turno del proceso uno. ALGORITMO DE PETERSON Otro interesante algoritmo para manejar la exclusión mutua entre dos procesos. program peterson. es posible que pierda el procesador. Total de líneas = 40 Program terminated normally Considere la siguiente posibilidad interesante. Al salir el proceso uno del ciclo interno de espera. es el algoritmo de Peterson (programa ptrson). (* Algoritmo de Peterson para la exclusión mutua de dos 78 procesos . El proceso dos conectará entonces su bandera primero y entrará en su sección crítica. Compilation complete .nolineas) end. Cuando el proceso uno obtenga de nuevo el procesador. De esta manera.. 3. desconectará su propia bandera y será obligado a entrar al ciclo interno de espera. conectará su bandera. si el proceso dos intenta entrar. writeln('Total de líneas = '.10.3 Program dekker . y que el proceso dos complete el ciclo e intente entrar de nuevo en su sección crítica. dos coend.

turno : integer. band2: boolean. band2:= false (* anuncia el intento de entrar *) (* le da prioridad al otro proceso *) (* anuncia el intento de entrar *) (* le da prioridad al otro proceso *) while band2 and (turno = 2) do while band1 and (turno = 1) do 79 . nolineas := nolineas + 1. band1. band1:= false end end. begin for lin := 1 to 20 do begin band1:= true. null.*) var nolineas. begin for lin := 1 to 30 do begin band2:= true. nolineas := nolineas + 1. process dos. var lin: integer. turno:= 2. process uno. var lin: integer. turno:= 1. null.

Compilation complete .nolineas) end. cobegin uno.Pascal-FC for IBM PC compatibles ...end end.program terminating 80 . dos coend. band2 := false.. execution begins .pfc .3 Program peterson . writeln('Total de Líneas: '. C:\PASFC>pfc ptrson.Compiler Version P5. University of Bradford Compiling peterson . turno := 1. begin nolineas := 0. band1 := false...2 G L Davies & A Burns. Total de Líneas: 50 Program terminated normally Type r and RETURN to rerun ^Z End of data file ..Interpreter Version P5.

Inicialmente band1 = band2 = false. digamos uno. se asignará turno como 1 y 2 aproximadamente al mismo tiempo. Si uno ha establecido band1 = true y 81 . entonces band1= false. se puede apreciar que para entrar en la sección crítica. y dos puede entrar en su sección crítica. uno de los procesos. la otra ocurrirá. éste es el único ciclo. pero será reemplazada de inmediato. mientras que dos tuvo que ejecutar por lo menos un enunciado adicional ("turno=2"). Si uno no está listo para entrar en la sección crítica. Sólo una de estas asignaciones durará. y el valor de turno no tiene relevancia (pero debe ser 1 o 2). Para demostrar la propiedad (1) observamos que cada proceso entra en su sección crítica únicamente cuando band2 = false o turno = 1 para el proceso uno (band1 = false o turno = 2 para el proceso dos). Para comprobar las propiedades (2) y (3) observamos que se puede evitar que el proceso dos entre en su sección crítica únicamente cuando se queda en el ciclo while con la condición band1=true y turno = 1. debió ejecutar con éxito la condición while.Los procesos comparten las variables band1. Observe también que. S in embargo. band2 y turno. El valor eventual de turno decide a cual de los dos procesos se le permitirá entrar primero en su sección crítica. entonces band1 = band2 = true. ya que el valor de turno puede ser 1 o 2. Ahora demostraremos que esta solución es correcta. el proceso uno primero asigna true a band1 y luego afirma que es el turno del proceso dos para entrar si así lo desea (turno=2). En el listado de los procesos. Necesitamos demostrar: (1) que se conserva la exclusión mutua. pero no los dos. Estas dos observaciones representan que uno y dos no pueden haber cumplido con éxito la condición del while aproximadamente al mismo tiempo. se concluye que se conserva la exclusión mutua. si ambos procesos pueden estar en ejecución en sus secciones críticas al mismo tiempo. y esta condición persistirá mientras uno se encuentre en su sección crítica. Si ambos procesos tratan de entrar a la vez. Por consiguiente. como en ese momento band1=true y turno=2. (2) que se respeta el requisito de progreso y (3) que se cumple el requisito de espera limitada.

3.11. una entrada de uno ( espera limitada). dos entrará en la sección crítica (progreso) des pués de. 82 . como máximo. también deberá establecer turno=2. permitiendo que dos entre en su sección crítica. Si turno = 2. Por lo tanto. var ok: boolean. Empero.. una vez que uno sale de su sección crítica. entonces turno = 1 o turno = 2.11. (* algoritmo de dijkstra para la exclusión mutua *) const nprocs=3. A continuación se muestra un programa que utiliza el algoritmo de Dijkstra para la exclusión mutua. turno: integer. volverá a establecer band1=false. procedure lock(pnum: integer). j: integer.nprocs] of boolean. entonces uno entrará en la sección crítica. ALGORITMO DE DIJKSTRA Dijkstra fue el primero en presentar una solución de software para la implementación de primitivas de exclusión mutua de n-procesos.también está ejecutando su enunciado while. c: array[0. i. var b. EXCLUSION MUTUA DE n-PROCESOS 3.1. Si uno vue lve a establecer band1 como true. como dos no cambia el valor de la variable turno mientras ejecuta el ciclo while. nolineas : integer. program dijkstra.

if b[turno] then turno := pnum end. b[pnum] := true. var loop: integer. repeat while turno <> pnum do begin c[pnum] := true. (* unlock *) process type terminal(n: integer). (* while *) c[pnum] := false. for j := 1 to nprocs do if j <> pnum then ok := ok and c[j] until ok end. nolineas := nolineas + 1. turno := 0 end. begin c[pnum] := true. begin for loop := 1 to 20 do begin lock(n). unlock(n) 83 . (* lock *) procedure unlock(pnum: integer). ok := true.begin b[pnum] := false.

University of Bradford Compiling dijkstra . c[turno] := true end.. begin nolineas := 0.. execution begins . Compilation complete .. cobegin for i := 0 to nprocs do p[i](i) coend.2 G L Davies & A Burns. (* terminal *) var p: array[0. Total de Líneas: 80 84 ..Compiler Version P5.. A continuación se muestran los resultados de la corrida del programa (obsérvese que son 4 procesos que meten 20 líneas cada uno): . turno := 0..3 Program dijkstra .Interpreter Version P5..end end.nolineas) end.nprocs] of terminal. for turno := 0 to nprocs do begin b[turno] := true. writeln('Total de Líneas: '.Pascal-FC for IBM PC compatibles .

definimos la siguiente notación: n (a.11. En el caso de un empate. nuestro algoritmo es completamente determinista. Como los nombres de procesos son únicos y ordenados...Program terminated normally Type r and RETURN to rerun ^Z End of data file . El algoritmo usa un sistema de "toma de boleto".nprocs] of integer. el algoritmo de la panadería no puede garantizar que dos procesos (clientes) no reciban el mismo número.d) si (a < c) o si (a = c) y b < d Condición que determina si el proceso b con el boleto a es favorecido o no para 85 .nprocs] of boolean. respectivamente. prim ero se atiende el proceso con el nombre menor. Nos centraremos únicamente en los aspectos del algoritmo relacionados con un entorno centralizado. como el usado en las panaderías muy concurridas. y ha sido apodado el algoritmo de la panade ría de Lamport . Al principio. eleccion: array[1.2. Por conveniencia. Al entrar en la tienda cada cliente recibe un número. y se atiende primero al que tenga el número menor. Las estructuras de datos comunes son: var boleto: array[1. Es decir.b) < (c. Por desgracia. a estas estructuras se les asigna un valor inicial 0 y false.program terminating 3. entonces primero se servirá a Pi. si Pi y Pj reciben el mismo número y si i < j. ALGORITMO DE LAMPORT Lamport desarrolló una solución que es particularmente aplicable a los sistemas de procesamiento distribuido.

program bakery. lp: integer. an) es (esto un se número. var otroproc. lp: integer. eleccion: array[1.. process type Entrada(esteproc: integer). var i.n max) programa mediante A continuación se muestra un listado del programa para resolver el mismo problema de exclusión mutua (conteo de líneas) mediante el algoritmo de la panadería de Lamport.. largo: integer. (en el programa bakery esta condición se implementa por medio de la función favorecido). (* Exclusión mutua con el algoritmo de la panadería de Lamport *) const nprocs = 5.nprocs] of boolean.nprocs] of integer.. function max: integer.entrar a la sección crítica con respecto al proceso d con el boleto c... .. nolineas: integer. implementa k. begin 86 .. . n max(a1 . función . var boleto: array[1. en tal el que k > ai para la i=1.

end. boleto[esteproc] := max. boleto[esteproc] := 0 end 87 . for i := 1 to nprocs do if boleto[i] > largo then largo := boleto[i]. begin if (boleto[i] = 0) or (boleto[i] > boleto[j]) then favorecido := false else if boleto[i] < boleto[j] then favorecido := true else favorecido := (i < j) end. for otroproc := 1 to nprocs do begin while eleccion[otroproc] do null. nolineas := nolineas + 1. while favorecido(otroproc. esteproc) do null. (* max *) function favorecido(i. max := largo + 1 end. eleccion[esteproc] := false. j: integer): boolean.largo := 0. (* favorecido *) begin for lp := 1 to 20 do begin eleccion[esteproc] := true.

eleccion[lp] := false. Compilation complete .. cobegin for lp := 1 to nprocs do turnos[lp](lp) coend. University of Bradford Compiling bakery .. writeln('Total de Líneas: '. end.Compiler Version P5.end. Total de Líneas: 100 Program terminated normally 88 .nprocs] of Entrada. A continuación se muestran los resultados de la corrida del programa: .Pascal-FC for IBM PC compatibles .nolineas:4) end..Interpreter Version P5. for lp := 1 to nprocs do begin boleto[lp] := 0. execution begins .2 G L Davies & A Burns... (* Entrada *) var turnos: array[1...3 Program bakery . begin nolineas := 0.

Type r and RETURN to rerun ^Z End of data file . Los semáforos y las operaciones de semáforos pueden implementarse en software o hardware. se implementan en el núcleo del sistema operativo. La operación wait en el semáforo S. escrito wait(S). Los semáforos contadores pueden tomar valores enteros no negativos. opera de la siguiente manera: if (uno o más procesos están en espera en S) then (deja proseguir a uno de estos procesos) else S:=S+1 Supondremos que hay una disciplina de colas del primero en entrar . Si varios procesos intentan ejecutar wait(S) al mismo tiempo. los otros permanecerán en espera.primero en salir para los procesos que esperan a completar un wait(S).program terminating 3. SEMÁFOROS Dijkstra extractó las nociones clave de la exclusión mutua en su concepto de semáforo. signal y una operación de ini cialización del semáforo initial.1 else (espera en S) La operación signal en el semáforo S. escrito signal(S). es aplicada en wait(S) y signal(S).12. Los semáforos binarios sólo pueden tomar los valores 0 y 1. La exclusión mutua en el semáforo. sólo uno podrá proseguir. donde se controlan los cambios de estado de 89 . En general. opera de la siguiente manera: if S > 0 then S:=S . Un semáforo es una variable protegida cuyo valor puede ser accesado y alterado tan sólo por las operaciones wait. S. La ejecución de las instrucciones wait y signal son indivisibles.

muestra como pueden utilizarse los semáforos para aplicar la exclusión mutua. (* solución por semáforos al problema de la exclusión mutua *) var nolineas: integer.un proceso. (* declaración del semáforo *) process uno. var lin: integer. signal(mutex) end 90 (* Espera por el semáforo *) (* libera el semáforo *) nolineas := nolineas + 1. signal(mutex) end end. program sem01. begin for lin := 1 to 20 do begin wait(mutex). begin for lin := 1 to 20 do begin wait(mutex). (* sección crítica *) . El programa sem01 que se lista a continuación. var lin: integer. (* uno *) process dos. mutex: semaphore. nolineas := nolineas + 1.

Interpreter Version P5..3 Program sem01 Total de Líneas = . SINCRONIZACIÓN DE PROCESOS CON SEMÁFOROS 91 .Compiler Version P5. ..2 G L Davies & A Burns.nolineas) end. University of Bradford Compiling sem01 . writeln('Total de Líneas = '..1.12. execution begins . dos coend.Pascal-FC for IBM PC compatibles . (* se inicializa el semáforo *) cobegin uno. initial(mutex...1). A continuación se muestran los resultados de la corrida del programa. Compilation complete .program terminating 3. 40 Program terminated normally Type r and RETURN to rerun ^Z End of data file .end. (* dos *) begin nolineas := 0..

92 . end. supóngase que un proceso desee ser informado de la ocurrencia de un evento.'). Algunos procesos deben despertar al proceso bloqueado. begin writeln('Cosas preliminares de Uno'). (* Proceso de sincronización de bloqueo/despertar con semáforos *) var mutex: semaphore. El siguiente programa ( sem02) muestra cómo pueden utilizarse la s operaciones de semáforos para implementar un mecanismo simple de sincronización de bloqueo/despertar de dos procesos. wait(mutex). begin writeln('Cosas preliminares del Dos'). se bloquea a sí mismo para esperar a que termine esta operación. program sem02. Supóngase que otro proceso es capaz de detectar que ese acontecimiento ya ha ocurrido. (* uno *) process dos. (* dos *) begin (* Espera por el semáforo *) writeln('Otras cosas del Uno'). (* declaración del semáforo *) process uno.Cuando un proceso emite una petición de entrada/salida. end. signal(mutex). Tal interacción es un ejemplo de un protocolo de bloqueo/despertar. En forma más general. writeln('Otras cosas del Dos.

end.. y proceso uno proseguirá sin tener que esperar a que ocurra el evento. execution begins ... 3.. Obsérvese que este mecanismo trabaja incluso cuando proceso dos detecta y señala el evento antes de que el proceso uno ejecute wait(mutex). Otras cosas del Uno Program terminated normally Type r and RETURN to rerun ^Z End of data file . El semáforo ha sido inicializado a cero.12. El proceso dos ejecuta signal(mutex) para señalar que el evento ha ocurrido. Cosas preliminares de Uno Cosas preliminares del Dos Otras cosas del Dos. así es que wait(mutex). Compiling sem01 . dos coend. cobegin uno. decrementa el semáforo de 1 a 0. BLOQUEOS MUTUOS Y BLOQUEOS INDEFINIDOS 93 .initial(mutex.3 Program sem01 ..0). el semáforo habrá sido incrementado de 0 a 1. Esto permite proceder al proceso uno. de modo que el proceso debe esperar.Interpreter Version P5. Compilation complete .program terminating El proceso uno ejecuta algunas cosas preliminares y después ejecuta wait(mutex).2..

Decimos que un conjunto de procesos está en un estado de bloqueo mutuo cuando cada uno de los procesos del conjunto está esperando un suceso que únicamente puede ser provocado por otro proceso del conjunto.La implantación de un semáforo con una cola de espera puede dar como resultado una situación donde dos o más procesos esperen indefinidamente un suceso que sólo puede ocasionar uno de los procesos en espera. cada uno con acceso a dos semáforos. debe esperar a que Uno ejecute signal( S). El suceso en cuestión consiste en la ejecución de una operación signal. Cuando se llega a este estado. Cuando Uno ejecuta wait(Q). El bloqueo indefinido se puede presentar si añadimos y eliminamos procesos de la lista aso ciada con un semáforo en orden LIFO. corresponde a la dirección de memoria de esa instrucción en lenguaje de máquina. con valor inicial 1: Uno wait(S) wait(Q) . el punto 94 . signal(S) signal(Q) Dos wait(Q) wait(S) . consideremos un sistema que consta de dos procesos. cuando Dos ejecuta wait(S). . se dice que los procesos están en bloqueo mutuo. De manera parecida. Para ilustrarlo. debe esperar a que Dos ejecute signal(Q). Este tipo de listado se presenta para determinar. Como estas operaciones de signal no pueden ejecutarse. A continuación se muestra el listado de un programa sencillo que ilustra el concepto de bloqueo mutuo. Otro problema relacionado con el bloqueo mutuo es el bloqueo indefinido o inanición. La segunda columna de números en el listado del compilador. Uno y Dos. . . S y Q. Uno y Dos están en bloqueo mutuo. . signal(Q) signal(S) Suponga que Uno ejecuta wait(S) y luego Dos ejecuta wait(Q). en que los procesos pueden esperar indefinidamente dentro del semáforo.

(* declaración de los semáforos *) 0 0 process Uno. 0 begin 0 3 5 8 10 10 13 13 15 18 18 18 process Dos.Compiler Version P5. . wait(S). 18 begin 95 signal(S).Pascal-FC for IBM PC compatibles . (* uno *) . signal(Q).2 G L Davies & A Burns. writeln('Entramos al Uno'). wait(Q).exacto. de cada proceso en el programa fuente. (* Espera por el semáforo *) writeln('El Uno toma S y espera por Q'). 17 end. donde ocurre el bloqueo. writeln('Uno entra a la sección crítica '). 0 (* 0 Proceso de sincronización de bloqueo/despertar 0 con semáforos 0 *) 0 0 var 0 S. Q: semaphore. University of Bradford Compiler listing Line PC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 program sem03.

Compilation complete A continuación se muestran diferentes corridas del programa hasta obtener un bloqueo mutuo.1). writeln('Dos entra a la sección crítica ').1). . execution begins . (* dos *) 36 begin 36 initial(S. 44 cobegin 45 49 Uno. 54 end. 35 end. (* Espera por el semáforo *) writeln('El Dos toma Q y espera por S'). .3 Program sem03 Entramos al Uno Entramos al Dos El Uno toma S y espera por Q Uno entra a la sección crítica El Dos toma Q y espera por S 96 .26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 18 21 23 26 28 28 31 31 33 36 36 writeln('Entramos al Dos').. wait(S). signal(Q).. 40 initial(Q... signal(S).Interpreter Version P5. Dos 49 coend. wait(Q).

Interpreter Version P5.3 Abnormal halt in process dos with pc = 28 97 .Dos entra a la sección crítica Program terminated normally Type r and RETURN to rerun r Entramos al UnoEntramos al Dos El Dos toma Q y espera por S Dos entra a la sección crítica El Uno toma S y espera por Q Uno entra a la sección crítica Program terminated normally Type r and RETURN to rerun r Entramos al Uno El Uno toma S y espera por Q Entramos al Dos El Dos toma Q y espera por S Abnormal halt in process dos with pc = 28 Reason: deadlock See pmdfile for post-mortem report En estas condiciones se obtiene el bloqueo mutuo antes mencionado. El intérprete ofrece un diagnóstico de esta condición de la siguiente forma: Pascal-FC post-mortem report on sem03 .

LA RELACIÓN PRODUCTOR .CONSUMIDOR En un programa secuencial.Reason: deadlock ---------Main program Status: awaiting process termination ---------Process uno Status: active pc = 10 Process suspended on: q (semaphore) ---------Process dos Status: active pc = 28 Process suspended on: s (semaphore) ========== Global variables q s = = 0 0 3.13. Pero cuando un proceso transmite datos a otro. cuando un procedimiento llama a otro y le trasmite datos. los problemas son 98 . los procedimientos son parte de un proceso simple y no operan de forma concurrente.

Suponga que se comunican por medio de la variable compartida. el consumidor lee los datos de buffer y los imprime. Tal transmisión es un ejemplo de comunicación interprocesos. 99 . un consumidor. un productor. Como es evidente. entonces la salida impresa representará fielmente la corriente de números generada por el productor. un productor muy veloz podría hacer esto muchas veces. está generando información que utiliza un segundo proceso. El productor agrega datos en el arreglo buffer. listos controla la sincronización de los procesos para determinar si existen datos en el buffer. buffer< /I>. Considérese la siguiente relación productor consumidor. Es posible que los procesos productor y consumidor trabajen bien en tándem. Si el productor está operando más rápido que el consumidor.mucho más complejo s. Aquí hemos utilizado tres semáforos: mutex se utiliza para aplicar el acceso de exclusión mutua a la variable compart ida buffer. La aplicación de tal comportamiento se conoce como sincronización de procesos. o que sus velocidades de ejecución sean muy parecidas. Suponga que un proceso. el consumidor puede leer e imprimir datos antes de que el productor los deposite.consumidor. Pero supóngase que las velocidades de los procesos son dispares. El productor va poniendo en el arreglo los números del 65 al 90 (código ASCII de las letras A-Z) mientras que el consumidor los va tomando e imprimiendo. El siguiente programa (pcsem) muestra un programa concurrente que utiliza las operaciones de semáforos para implementar una relación productor . el comportamiento que deseamos aquí es que el productor y el consumidor cooperen de forma tal que los datos escritos en buffer no se dupliquen ni se pierdan. con lo cual muchos resultados se perderían. espacios controla en la sincronización la existencia de espacio en el buffer. Si cada vez que el productor deposita un dato en buffer. el consumidor lo lee y lo imprime de inmediato. el productor podría sobre escribir los datos previos antes de que el consumidor tenga la oportunidad de leerlos e imprimirlos. Si el consumidor está operando con más rapidez que el productor. Los procesos utilizan la variable compartida buffer.

begin ch := buffer[sigsale].buffmax] of integer. listos: semaphore. sigsale: integer. begin 100 . procedure pon(ch: integer). sigentra. (* pon *) procedure toma(var ch: integer).. var buffer: array[0. sigentra := (sigentra + 1) mod (buffmax + 1) end. begin (* el buffer es una cola circular *) buffer[sigentra] := ch. (* toma *) process productor. mutex: semaphore. var local: integer. (* apuntadores a buffer para el manejo de la cola*) espacios.Consumidor mediante el uso de semáforos *) const buffmax = 5. sigsale := (sigsale + 1) mod (buffmax + 1) end.program pcsem. (* Solución al problema del Productor .

for local := 65 to 90 do begin wait(espacios). 101 . writeln end. pon(local). begin repeat begin wait(listos). end until local = 90. (* Avisa que hay un espacio *) write(chr(local+32)). sigentra := 0. (* productor *) process consumidor. initial(listos.0). (* Entra en la sección crítica *) (* Sección crítica *) write(chr(local)). (* Sale de sección crítica *) (* Avisa que ya hay un dato listo *) (* Espera que haya espacio *) (* Entrada a la sección crítica *) (* Sección crítica *) signal(mutex). (* Espera que haya datos listos *) wait(mutex).1). signal(mutex). (* consumidor *) begin initial(espacios.buffmax + 1). wait(mutex). (* sale de la sección crítica *) signal(espacios). initial(mutex. toma(local). var local: integer. signal(listos) end end.

El semáforo se inicializa para el número de recursos de la bolsa. University of Bradford Compiling pcsem . y puede ser 102 . SEMÁFOROS CONTADORES Los semáforos contadores son particularmente útiles cuando un recurso va a ser asignado desde una bolsa de recursos idénticos.3 Program pcsem .Interpreter Version P5. A continuación se muestran diferentes corridas de este programa. indicando que un proceso ha devuelto un recurso a la bolsa. Las letras minúsculas indican el dato y el momento en que el consumidor tomó el dato.sigsale := 0.Pascal-FC for IBM PC compatibles .2 G L Davies & A Burns. indicando que ha extraído otro recurso de la bolsa y está siendo usado por un proceso.Compiler Version P5. AaBCbDcEFdGeHfIgJhKiLjMkNlmOnPoQpRqSrTsUtVuWvXwYxZyz AaBbCcDEdFeGfHgIhJiKjLkMlNmOnPoQpRSqTrUsVtWuXYvwZxyz ABaCbDcEdFeGfHgIhJiKjLkMlNmOnPoQpRqSrTsUtVuWvXYwZxyz AaBCbDcEdFeGfHgIhJKLijMNkOlPmQnRoSpTqUrVWsXtYuZvwxyz 3.... execution begins . Cada operación wait decrementa el semáforo en 1.. consumidor coend end. cobegin productor. Compilation complete . Las letras mayúsculas corresponden al dato y el momento en que el productor pone en el buffer el dato.14... Cada operación signal incrementa el semáforo en 1. .

asignado a otro proceso. el proceso debe esperar hasta que se devuelva algún recurso a la bolsa por medio de una operación signal. Si se intenta una operación wait cuando el semáforo ha sido decrementado hasta cero. 103 .

CAPÍTULO 4 ADMINISTRACIÓN DE LA MEMORIA En un sistema monoprogramado. INTRODUCCIÓN AL ALMACENAMIENTO REAL La organización y administración de la “memoria principal”. En un sistema multiprogramado resulta vital una gestión efectiva de la memoria. Se considera “almacenamiento secundario” o “almacenamiento auxiliar” al que generalmente es soportado en discos. si solo hay unos pocos procesos en memoria.1. En un sistema multiprogramado. hace falta repartir eficientemente la memoria para meter tantos procesos como sea posible. Referenciarlos directamente. La tarea de subdivisión la lleva a cabo dinámicamente el sistema operativo y se conoce como administración de memoria. Los términos “memoria” y “almacenamiento” se consideran equivalentes. Por ello. 4. “memoria primaria” o “memoria real” de un sistema ha sido y es uno de los factores más importantes en el diseño de los sistemas operativos. la memoria principal se divide en dos partes: para el sistema operativo (monitor residente. núcleo) y otra para el programa que se ejecuta en ese instante. la parte de “usuario” de la memoria debe subdividirse aún más para hacer sitio a varios procesos. entonces la mayor parte del tiempo estarán esperando a la E/S y el procesador estará desocupado. Los programas y datos deben estar en el almacenamiento principal para: Poderlos ejecutar. Los hechos demuestran que generalmente los programas crecen en requerimientos de memoria tan rápido como las memorias: 104 .

1. Libera espacio de memoria asignada a procesos que han terminado. la memoria disponible se encuentra normalmente compartida por varios procesos. Organización física. manteniendo una gran reserva de procesos listos para 105 . 4. Compartición. REQUISITOS PARA LA ADMINISTRACIÓN DE LA MEMORIA Al realizar un estudio de los diversos mecanismos y políticas relacionadas con la adminsitración de memoria. Además. Protección. REUBICACIÓN En un sistema multiprogramado.2. Asigna espacio en memoria a los procesos cuando estos la necesitan. vale la pena trener en mente los requisitos que se intentan satisfacer: Se propone cinco requisitos: Reubicación. La parte del sistema operativo que administra la memoria se llama “administrador de la memoria”: Lleva un registro de las partes de memoria que se están utilizando y de aquellas que no.- “Ley de Parkinson parafraseada”: Los programas se desarrollan para ocupar toda la memoria disponible para ellos. Organización lógica. el programador no puede conocer por adelantado qué otros programas residirán en memoria en el momento de la ejecución del programa. se busca poder cargar y descargar los proceso activos en la memoria principal para maximizar el uso del procesador.2. 4. En general.

se limitará a declarar que. que representa la imagen de un proceso.O. Las instrucciones de bifurcación deben tener la dirección que haga referencia a la instrucción que se vaya a ejecutar a continucaión. De algún modo.ejecutar. Además. Información de Control del Proceso Punto de entrada al Programa Bloque De Control De Proceso Instrucciones de salto Referencia a Datos Código Cima Actual de la Pila Pila datos 106 . Esta situacion plantea algunos asuntos técnicos relativos al direccionamiento. estas direcciones deben ser fásiles de conocer. debe situarse en la misma región de memoria principal que antes. De este modo. el hardware del procesador y el software del sistema operativo deben ser capaces de traducir las referencias a memorias encontrados en el código del programa a las direcciones físicas reales que reflejen la posición actual del programa en memoria principal. se sopundra que la imagen del proceso ocupa una región contigua a la memoria principal. Sin duda el S. tiene que conocer la ubicación de la información del control del proceso y la pila de ejecución.O. administra la memoria y es responsable en traer el proceso en memoria principal. tal como se muestra en la figura 4. Las instrucciones que hagan referencia a datos deben contener la dirección del byte o de la palabra de datos referenciados..1. se sabe antes de tiempo donde debe dsituarse un programa y hay que pérmitir que el programa debe moverse en la memoria principal como resultado de un intercambio. Puesto que el S. Por simplicidad. así como el punto de partida para comenzar la ejecución del programa para dicho proceso. Una vez que el programa haya sido descargado al disco. el procesador debe ocuparse de las referencias a memoria dentro del programa. cuando vuelva a ser cargado.

por ejemplo. Afortunadamente.2. PROTECCIÓN Cada proceso debe protegerse contra interferencias no deaseadas de otros procesos. un índice de un vector o un puntero a una estructura de datos. generando. las exigencias de protección de memoria pueden ser satisfechas por el procesador (hardware) en vez de que por el sistema operativo (software). Hasta cierto punto. sin permiso. Por tanto. la mayoría de los lenguajes de programación permiten el cálculo dinámico de direcciones durante la ejecución. sin un acuerdo especial. es imposible comprobar las direcciones absolutas durante la compilación para asegurar la protección. el programa de un proceso no puede en general bifurcar hacia una instrucción de otro proceso. mecanismos que respaldan la reubicación también forman parte básica del cumplimiento de las necesidades 107 .1. tanto programa como datos. todas las referencias de memoria generadas por un proceso deben comprobarse durante la ejecución para asegurar que sólo hacen referencia al espacio de memoria destinado a dicho proceso. como se verá. satisfacer las exigencias de reubicación aumenta la dificultad de satisfacción de las exigencias de protección. 3. tanto accidentales como intencionales. los de protección. La imagen del proceso de la figura 4. Así pues. Normalmente.1: Requisitos de direccionamiento para un proceso. un proceso de usuario no puede acceder a ninguna parte del sistema operativo. El procesador debe ser capaz de abandonar tales instrumentos en el momento de la ejecución.2. el programa de un proceso no puede acceder el área de datos de otro proceso. Además. Es más. en los términos del ejemplo. el código de un proceso no puede hacer referencia a posiciones de memoria de otros procesos.Figura 4. De nuevo. con fines de lectura o escritura. Puesto que se desconoce la ubicación de un programa en memoria principal. Nótese que. ilustra las necesidades de proteción.

4.2. El sistema de administración de memoria debe. Los módulos pueden escribirse y compilarse independientemente. De nuevo.4. 108 . sólo ejecución) a los distintos módulos. Con un escaso coste adicional. a nivel físico. COMPARTICIÓN Cualquier mecanismo de protección que se implemente debe tener la flexibilidad de permitir el acceso a varios procesos a la misma zona de la memoria principal. Si bien esta organización refleja fielmente el hardware de la máquina. por tanto. sólo ejecución) y otros contienen datos que se pueden modificar. pueden otorgarse varios grados de protección (sólo lectura. algunos de los cuales no son modificables (sólo lectura. se conseguirá una serie de ventajas. ORGANIZACIÓN LÓGICA De forma casi invariable. 2. La memoria secundaria. resultaría beneficioso permitir a cada proceso que acceda a la misma copia del programa. 4.2. Si el sistema operativo. no se corresponde con la forma en la que los programas están construidos habitualmente. se verá que los mecanismos empleados para respaldar la reubicación forman parte básica de las capacidades de comparticición. tales como: 1.3. Por ejemplo. Los procesos que cooperan en una tarea pueden necesitar acceso copartido a la misma estructura de datos. mientras que el sistema resuelve durante la ejecución todas las referencias de un módulo a otro. hardware y los datos se organizaran en forma de módulos de algún tipo. La mayoría de los programados se organizan en módulos. en lugar de tener cada uno su propia copia aparte. se organiza de forma similar. la memoria principal de un sistema informático se organiza como un espacio de direcciones lineal o unidimensionales que consta de una secuencia de bytes o palabras. sin comprometer la protección básica. permitir acceso controlado a las áreas compartidas de la memoria. si una serie de procesos están ejecutando en un mismo programa.

dos niveles: memoria principal y memoria secundaria. por tanto. En este esquema a dos niveles. es fácil.5. la memoria principal es volátil. 2. la organización del flujo de información entre la memoria principal y la secundaria tiene un gran interés en el sistema. La memoria principal ofrece un acceso rápido con un costo relativamente alto. además. en el cual el programa y los datos se organicen de tal forma que puede haber varios módulos asignados a la misma región de memoria. pero esto es impracticable e indeseable. La ventaja de ofrecer compartición a nivel de módulo es que esto se corresponde con la visión del problema que tiene el usuario y. el programador debe emplear una práctica que se conoce como superposición (overlaying). al tiempo que una memoria principal pequeña mantiene los programas y datos de uso actual. estará este espacio. 4. ORGANIZACIÓN FÍSICA En la memoria del computador se organiza. una memoria secundaria de gran capacidad puede permitir un almacenamiento a largo plazo de programas y datos. Es imposible introducir mecanismo por medio de los cuales los procesos puedan compartir módulos. La memoria principal disponible para un programa y sus datos pueden ser insuficiente. en este caso. La memoria secundaria es más lenta y barata que la memoria principal y normalmente no es volátil. no proporciona almacenamiento permanente. la programación superpuesta malgasta el tiempo del programador. para el usuario especificar la comparación que desea. De este modo. esto es.2. con un programa principal responsable del intercambio de los módulos según se necesiten. debido a dos razones: 1.3. el programador no conoce durante la codificación cuanto espacio habrá disponible o donde . al menos. Incluso con la ayuda de herramientas de compilación. la responsabilidad de este flujo podría asignase al programador. Resulta claro entonces que la tarea de mover información entre los dos niveles 109 En un entorno multiprogramado.

3. En casi todos los sistemas multiprogramados modernos. En este caso.de memoria debe ser responsabilidad del sistema. No obstante.2 se ofrecen ejemplos de dos alternativas de partición fija.1. se debe preparar el terreno considerando técnicas más simples que no requieren el uso de memoria virtual. Una de estas técnicas. a su vez.1. la partición. administración de memoria. se ha venido usando con distintas variantes en algunos sistemas operativos ahora obsoletos. 4. Esta tarea es la esencia de la administración de memoria. el estudio de la memoria virtual resultará más sencillo si se consideran en primer lugar estas dos técnicas. CARGA DE PROGRAMAS EN MEMORIA PRINCIPAL La tarea central de cualquier sistema de administración de memoria es traer los programas a memoria principal para su ejecución en el procesador. La memoria virtual está.1. El esquema más sencillo de administración de memoria disponible es dividirla en regiones con límites fijos. basado en el uso de una de dos técnicas básicas: segmentación y/o paginación. sin tener en cuenta la memoria virtual. TAMAÑOS DE PARTICIÓN En la figura 4.3. 4. PARTICIÓN FIJA En la mayoría de los esquemas de gestión de memoria. Una posibilidad es emplear particiones de igual tamaño.1. esta tarea supone un esquema sofisticado conocido como memoria virtual. La tabla 4. se puede suponer que el sistema operativo ocupa una parte fija de memoria principal y que el resto de la memoria esta disponible para ser usado por varios procesos. cualquier proceso cuyo tamaño sea menor o igual que el tamaño de la partición puede 110 . adelanta los mecanismos cubiertos en la 4. Antes de ver estas técnicas de memoria virtual. Las otras dos técnicas la paginación simple y la segmentación simple.3. no se usan en solitario.

Cuando se necesita un módulo que no esta presente. aún así. TÉCNICA Partición fija DESCRIPCIÓN La memoria principal de divide en un conjunto de particiones fijas durante la generación del sistema. Cualquier programa. el programa de usuario debe cargar dicho módulo en la partición del programa. No hay fragmentación interna. Las particiones se crean dinámicamente. Este fenómeno. En este caso. Cada proceso se fragmentación interna. superponiéndose a los programas y datos que se encuentren en ella. 111 . Partición dinámica Paginación La memoria principal se divide No tiene fragmentación Hay una pequeña en un conjunto de marcos de externa cantidad de igual tamaño. de forma que cada proceso se carga en una partición de exactamente el mismo tamaño que el proceso. el sistema operativo puede sacar un proceso de algunas de las particiones y cargar otro proceso de forma que haya trabajo para el procesador. VENTAJAS DESVENTAJAS Sencilla de Empleo ineficiente de implementar. poca la memoria debido a la sobre carga del sistema fragmentación interna. En el ejemplo. en la siguiente tabla 4. uso más eficiente de la memoria principal. en el que se malgasta el espacio interno de una participación cuando el bloque de datos cargados sea más pequeños que la participación.cargarse en cualquier partición libre. para que solo una parte del programa este en memoria principal en cada instante.1 se podrá observar las diversas técnicas de administración de memoria. Las particiones fijas de igual tamaño plantean dos dificultades: Un programa puede ser demasiado grande para caber en la partición. Puede haber un programa que ocupa menos de 128 kb de memoria y. ocupará una participación completa. operativo. ocuparía una participación de 512 Kb cada vez que se cargase. El uso de memoria principal es extremadamente ineficiente. Un proceso se puede cargar en una partición de mayor o igual tamaño. Si todas las particiones están ocupadas y no hay procesos residentes en estado Listo o Ejecutando. sin importar lo pequeño que sea. el programador debe diseñar el programa mediante superposiciones. Uso ineficiente del procesador debido a la necesidad de compactación para contrarrestar la fragmentación externa. el número de procesos activos es fijo. se denomina fragmentación interna.

Sistema operativo 512 K Sistema operativo 512 K 512 K 128 K 256 K 512 K 512 K 512K 576K 512 K 768 K 512 K 1M 512 K 512 K 112 . gran espacio virtual para el proceso.simple divide en una seria de páginas del mismo tamaño que los marcos.1: Técnicas de administración de memoria. Memoria virtual segmentado Tabla 4. excepto que no hace falta cargar todas las páginas de un proceso. Las páginas no residentes que se necesiten se traerán mas tarde de manera automática. No hay fragmentación Sobrecarga por gestión interna alto grado de compleja de memoria. Cada proceso se divide en una No tiene fragmentación Necesita compactación seria de segmentos. Un proceso interna Segmentación de carga situando todos sus simple segmentos en particiones dinámicas que no tiene porque ser contiguas. multiprogramación. Como la segmentación simple excepto que no es necesario cargar todos lo segmentos de un proceso. Memoria virtual paginada Como la paginación simple. Los segmentos no residentes que se necesiten se traerán mas tarde de forma automática No hay fragmentación Sobre carga por gestión externa. gran espacio virtual para el proceso. alto grado de compleja de memoria. soporte de protección y compartición. Un proceso se carga situando todas sus páginas en marcos libre pero no necesariamente contiguos. multiprogramación.

no importa la participación que se use. no lo es desde el punto de vista del sistema global. hay dos maneras posibles de proceso. por ejemplo. Con participaciones de distintos tamaños.(a) Participaciones del mismo tamaño (b) Participaciones de distintos tamaños. que albergue los proceso expulsados cuyo destinado es dicha participación (figura 4. por medio del empleo de particiones de tamaños distintos.2: Ejemplo de participación estática de una memoria de 4Mb. los programas de hasta 1Mb pueden alojarse sin superposición. En este caso. así pues. La ventaja de este enfoque es que los procesos están siempre asignados de forma que se minimiza la memoria desperdiciada dentro de cada participación. uno de esos procesos debe sacarse y hacer sitio a un nuevo decisión de planificación. Pueden reducirse. En este caso. aunque no solventarse. En este ejemplo. la ubicación de un proceso en memoria es trivial.2b. Las participaciones menores de 512Kb permiten alojar programas más pequeños con un desperdicio menor. Sin embargo. Puesto que todas las participaciones son de igual tamaño. la partición de 768K permanecerá sin usar. hace falta una cola de planificación para cada partición.1. Si todas las particiones están ocupadas con procesos que no están listos para ejecutar. incluso aunque algún proceso más pequeño pudiera haber sido asignado a la misma. Considérese el caso de la figura 4. ambos problemas. puede cargarse un proceso en esa participación.3. Mientras haya alguna participación libre. Figura 4. como se muestra en la figura 4. aunque esta técnica parece óptima desde el punto de vista de una participación individual. donde no hay procesos con un tamaño comprendido entre 768 K y 1M en un determinado instante. una solución mejor sería emplear una única cola para todos los 113 .b. 4.2.a).3. La forma más simple es asignar cada proceso a la participación más pequeña en la que quepa. Cuál debe expulsarse es una asignar los procesos a las participaciones.2. ALGORITMO DE UBICACIÓN Con particiones del mismo tamaño.

Puede darse preferencia al intercambio de la participación más pequeña que pueda contener al proceso entrante. se plantean los 114 . Además. El uso de particiones de distinto tamaño proporciona cierto grado de flexibilidad a las particiones fijas. Figura 4. se debe tomar una decisión de intercambio. Si todas las participaciones están ocupadas.3: Asignación de memoria con participación fija. ambos tipos de esquema de participación fija son relativamente simples y exigen un software del sistema operativo y una sobrecarga de procesamiento mínimo.3. tales como prioridades y preferencia para descargar procesos bloqueados antes que proceso listo. También es posible considerar otros factores. Sin problemas siguientes: embargo. (b) Cola única proceso.procesos (figura 4.b) cuando se va a cargar un proceso en memoria principal. se selecciona la partición más pequeña disponible que pueda albergar al proceso. Sistema operativo Sistema operativ o Procesos Nuevos Procesos Nuevos (a) Una cola de proceso por participación.

que está en estado listo. ninguna de los procesos en memoria está listo. En algún momento.4. Cuando se trae un proceso a memoria principal.4. la memoria principal está vacía. se le asigna exactamente tanta memoria como necesita y no más. el sistema operativo expulsa al proceso 1 (figura 4. que deja sitio suficiente para cargar un nuevo proceso. el proceso 4 (figura 4. se cargan los tres primeros procesos. el sistema operativo saca al proceso 2 (figura 4.b. exceptuando el sistema operativo (figura 4. - Puesto que los tamaños de partición se programan en el momento de la generación del sistema.- El número de particiones especificadas en el momento de la generación del sistema limita el número de procesos activos (no suspendidos) el sistema. ineficiente. Con la partición dinámica. 4. está disponible. En un entorno en el que los requisitos básicos de almacenamiento de todos los procesos se conocen de antemano. En la figura 4.a). Así pues.4.3.h). pero suspendido. los trabajos pequeños no hacen un uso eficiente del espacio de las particiones.3. pero en la mayoría de los casos. empezando en donde acabo el sistema operativo y ocupando sólo un espacio suficiente para cada proceso (figura 4.4.1. se desarrolló una solución denominada partición dinámica. Al principio.4. 115 . se alcanza un punto en el que ninguno de los procesos que están en memoria principal están listos y el proceso 2. Otra vez.f) puesto que el proceso 4 es más pequeño que el proceso 2 se crea otro hueco pequeño.4.g) y carga de nuevo el proceso 2 (figura 4.c). PARTICIÓN DINÁMICA Para superar algunas de las dificultades de la partición estática. este enfoque ha sido superado de largo por administraciones de memorias más sofisticadas. 4. pueden ser una técnica razonable. Más tarde. las particiones son variables en número y longitud. Puesto que no hay suficiente sitio en memoria para el proceso 2. c y d). se muestra un ejemplo que usa 1Mb de memoria principal. Esto deja un “hueco” al final de la memoria demasiado pequeño para un cuarto proceso.

este método comienza bien.4h. finalmente. la compactación produce un bloque de memoria libre de 256K. Este fenómeno se denomina fragmentación externa y se refiere al hecho de que la memoria externa a todas las particiones se fragmenta cada vez más a diferencia de la fragmentación interna que se comentó anteriormente. Este hueco puede ser suficiente para cargar un proceso adicional. Es decir. Por ejemplo.Como se muestra en el ejemplo. La dificultad de la compactación está en que es un procedimiento que consume tiempo. Conforme pasa el tiempo. se deber poder mover un programa en una región a otra de la memoria principal sin invalidar las referencias a memoria del programa. por lo que desperdicia tiempo del procesador. Sistema Operativo 128K Sistema Operativo Sistema Operativo Proceso 1 Sistema Operativo Proceso 1 320K Proceso 1 320K 320K 224K 896K Espacio de proceso 576K Proceso 2 352K Proceso 2 224K 288K 64K (a) (b) (c) (d) Sistema Operativo Proceso 1 Sistema Operativo Proceso 1 Sistema Operativo Proceso 3 Sistema Operativo 320K 320K 320K Proceso 2 224K 96K 128K 96K Proceso 4 224K 128K 96K Proceso 4 128K 96K Proceso 4 288K 64K (e) 288K 288K Proceso 3 288K 116 Proceso 3 (f) 64K Proceso 3 (g) 64K (h) 64K . en la figura 4. el sistema operativo desplaza los procesos para que estén contiguos de forma que toda la memoria libre quede junta en un bloque. La compactación necesita de la capacidad de reubicación dinámica. pero. la memoria comienza a estar más fragmentada y su rendimiento decae. Una técnica para superar la fragmentación externa es la compactación: de vez en cuando. desemboca en una situación en la que hay un gran número de huecos pequeños en memoria.

si hay libre más de un bloque de memoria de tamaño suficiente. Cuando llega el momento de cargar o traer un proceso a memoria principal y. el del primer ajuste (first – fit) y el del siguiente ajuste (next – fit). ALGORITMO DE UBICACIÓN Puesto que la compactación de memoria consume tiempo. 4.Figura 4. el sistema operativo debe decidir cuál asignar.3.4. El mejor ajuste elige el bloque de tamaño más parecido al solicitando.4: Efectos de la participación dinámica.1. Los tres algoritmos de ubicación que se pueden considerar son el mejor ajuste (best. atañe al diseñador del sistema operativo decidir adecuadamente cómo asignar un proceso a memoria (como llenar los huecos).fit). Todos ellos se limitan a elegir entre los bloques de memoria libres que son mayores o iguales que el proceso a traer. 8K Primer Ajuste 8K 12K 12K 6K 22K Mejor ajuste 2K 18K Ultimo bloque Asignado (14K) 8K 8K 6K 6K Bloque asignado Bloque Libre 14K 14K Siguiente Ajuste 36K 117 a 20K b .

Figura 4. Por otro lado. se divide rápidamente en fragmentos pequeños. sino que normalmente es también el mejor y más rápido. dejando un fragmento de 2Kb. El algoritmo del primer ajuste no sólo es el más sencillo. El siguiente ajuste recorre la memoria desde el lugar de la última ubicación y elige el siguiente bloque disponible que sea suficientemente grande. Así pues.a muestra un ejemplo de configuración de la memoria después de cierto número de ubicaciones y operaciones de descarga de procesos. Puesto que este algoritmo 118 . de donde se creó una participación de 14Kb. La figura 4. Cuál de estos métodos el mejor. a pesar de su nombre.5: Ejemplo de una configuración de memoria antes y después de asignar un bloque de 16 Kb. El algoritmo del siguiente ajuste tiende a generar resultados algo peores que el del primer ajuste. el algoritmo del primer ajuste puede poblar el extremo inicial de pequeñas particiones libres que es necesario recorrer en las pasadas siguientes de algoritmo. proporciona en general los peores resultados. dependerá de la secuencia exacta de intercambio de procesos que se den y del tamaño de estos procesos.5. con el siguiente ajuste hará falta una compactación más frecuente. El primer ajuste comienza recorriendo la memoria desde el principio y escoge el primer bloque disponible que sea suficientemente grande.5. que suele aparecer al final del espacio de memoria. El último bloque usando fue de 22Kb. El algoritmo del mejor ajuste. El algoritmo del siguiente ajuste llevará frecuentemente a la asignación de bloques libres del final de la memoria. La figura 4. El primer ajuste genera un fragmento de 6Kb y el siguiente ajuste origina un fragmento de 20Kb. El resultado es que el bloque de memoria libre más grande. El mejor ajuste busca en la lista completa de bloques disponibles y emplea el hueco de 18KB.b. muestra la diferencia entre los algoritmos de ubicación del mejor primer y siguiente ajuste para una solicitud de 16kb.

y 4.5. se debe aclarar un punto oscuro.h. que tiene relación con la ubicación de los procesos en memoria.busca el hueco más pequeño posible. que el proceso 2 ocupa dos regiones de memoria distintas en las dos 119 . 4. REUBICACIÓN Antes de considerar las formas de solucionar los defectos de las técnicas de partición. ALGORITMOS DE REEMPLAZO En un sistema multiprogramado con particiones dinámicas. se cargará en alguna partición de memoria principal. vuelve a ser cargado. En el caso de particiones de igual tamaño y en el caso de una cola única de procesos para particiones de distinto tamaño.3. Aunque cada solicitud de memoria desperdicia siempre la menor cantidad. más tarde. Así pues. habrá algún momento en el que todos los procesos de memoria principal estén en estado bloqueado y la memoria sea insuficiente.4. la partición que se selecciona cuando se carga un nuevo proceso será la misma que se emplee siempre para devolver este proceso a memoria tras haber sido sacado.3. 4. para un proceso adicional.4. Esto mismo se cumple con particiones dinámicas. Posteriormente. Cuando al principio se crea la imagen de un proceso.1. Por lo tanto.a. se debe compactar más frecuentemente que con los otros algoritmos. se puede esperar que un proceso sea asignado siempre a la misma partición. el sistema operativo expulsará uno de los procesos de memoria principal para hacer sitio a un proceso nuevo o un proceso listo.6. podrá asignársele una partición distinta de la anterior. el resultado es que la memoria principal se llena rápidamente de bloques demasiado pequeños como para satisfacer las solicitudes de asignación de memoria.1. Cuando se emplea el esquema de particiones fijas de la figura 4. Para evitar desperdiciar el tiempo del procesador esperando a que un proceso activo se desbloquee. cuando. Incluso tras la compactación. Es decir.3. un proceso puede ocupar diferentes particiones a lo largo de su vida. el sistema operativo debe elegir que proceso reemplazar. pero suspendido. Obsérvese en la figura 4. el proceso puede ser descargado.c.

cada dirección a la que hace referencia la CPU recorre un mapeo de dirección de la supuesta dirección virtual a una dirección física en la memoria principal. Se usa la memoria virtual para dar a los programadores la ilusión de 120 . almacenamiento y en algunas instrucciones aritméticas y lógicas. los procesos son desplazados durante su estancia en memoria principal. conforme los necesita la CPU. Las instrucciones contendrán siguientes: Direcciones de elementos de datos. Después. habitualmente el comienzo del programa. se realiza una distinción entre varios tipos de direcciones. Una dirección relativa es un caso particular de dirección lógica. se traen a la memoria principal partes de un programa o de datos. Para resolver este problema. MEMORIA VIRTUAL En un sistema de jerarquía de memoria. Una dirección lógica es una referencia a una posición de memoria independiente de la asignación actual de datos de memoria. se debe hacer una traducción a dirección física antes de poder realizar un acceso a memoria. Una dirección posición real en memorial principal. grandes que permite al usuario construir programas La memoria virtual es un concepto que se usa en algunos sistemas de computadoras como si estuviera disponible un gran espacio de memoria. si no que cambian cada vez que se Intercambia o desplaza un proceso. igual a la totalidad de la memoria auxiliar. empleadas para bifurcaciones e instrucciones de llamada. Considérese ahora un proceso en memoria que incluya instrucciones y datos. cuando se usa compactaciones. Ahora se demostrará que estas instrucciones no son fijas.ocasiones en las que se le trae a memoria. empleadas en instrucciones de carga. en el cual la dirección se expresa como una posición relativa en algún punto conocido.4. los programas y datos se almacenan primero en la memoria auxiliar. Es más. es una referencias a memoria de los dos tipos 4. Direcciones de instrucciones. física o dirección absoluta.

4. 4. En la mayoría de las computadoras los espacios de direccionamiento y de memoria son idénticos. El conjunto de tales localidades se llama espacio de memoria. Esto se hace en una forma dinámica. y de la memoria auxiliar y de la memoria principal. A una dirección en la memoria principal se la llama localidad o dirección física. Supongamos que el programa 1 se 121 . Una circuitería maneja en forma automática la traducción o el mapeo mediante una tabla de mapeo. Por lo tanto. el espacio de direccionamiento es el conjunto de direcciones generado por los programas. aunque la computadora tenga en realidad una memoria relativamente pequeña. supongamos que la computadora tiene memoria auxiliar disponible para almacenar 2 20 = 1024 K palabras. mientras la CPU ejecuta programas. Por lo tanto. Un sistema de memoria virtual proporciona un mecanismo para trasladar direcciones generadas por programas a localidades correctas en la memoria principal.que tienen a su disposición una memoria muy grande.1. se transfieren los programas y datos a. Como ejemplo. conforme hacen referencia a instrucciones y datos. espacio virtual. Se permite que el especio de direccionamiento sea mayor que el espacio de la memoria en computadoras de memoria virtual. consideremos una computadora con una capacidad de memoria principal de 32 K palabras (K =1024) se necesitan quince bits para especificar una dirección física en la memoria porque 32 K = 2 15. tenemos para este ejemplo N = 1024K y M = 32K. Al representar el espacio de direccionamiento por N y el espacio de memoria por M. el espacio de memoria consiste en las localidades reales de la memoria principal que se pueden acceder directamente para procesamiento. con base en las demandas que impone la CPU. la memoria auxiliar tiene capacidad para almacenar información equivalente a la capacidad de 32 memorias principales. ESPACIO DE DIRECCIONAMIENTO Y ESPACIO DE MEMORIA A una dirección que usa un programador se la llamará dirección virtual y al conjunto de tales direcciones. En un sistema de computadora de multiprogramación.

6: Relación entre espacios de dirección y de memoria en un sistema de memoria virtual.1 Espacio de memoria M = 32k = 215 Espacio de dirección N = 1024k = 220 Figura 4. Memoria auxiliar Memoria principal Programa 1 Programa 1 Datos 1.1 Datos 1. se les dice a los programadores que tienen su disposición todo el espacio de direccionamiento. por lo tanto. Las partes de los programas y datos no necesitan estar en localidades contiguas en la memoria. En nuestro ejemplo. instrucciones y datos con direcciones de 20 bits. la CPU hará dirección debe tomarse de la memoria física. En un sistema de memoria virtual. porque la información se mueve hacia adentro y hacia fuera y pueden quedar espacios vacíos en partes no adyacentes en la memoria.1 Programa 2 Datos 2. El programa 1 y una parte de sus datos asociados se mueven de la memoria auxiliar a la memoria principal como se muestra en la figura 4.2 Datos 1. pero especificarse con sólo 15 bits. pero la información en esta porque el acceso al almacenamiento auxiliar para palabras individuales sería prohibitivamente largo 122 .ejecuta en ese momento en la CPU. Además. el campo de direcciones del código de instrucciones tiene una cantidad suficiente de bits para especificar todas las direcciones virtuales. el campo de dirección de un código de instrucción las direcciones de memoria física deben referencia a consistirá en 20 bits.6.

7. el almacenamiento auxiliar mueve todo un registro a la memoria principal).(recuerde que para transferencias eficientes. En el segundo caso la tabla toma espacios en la memoria principal y se necesitan dos accesos a memoria con el programa corriendo a media velocidad. Una tercera alternativa es utilizar una memoria asociativa. Un lugar mucho mejor para aplicar protección física. conforme la CPU hace referencia a una palabra. En el primer caso. La tabla de mapeo debe almacenarse en una memoria separada como se muestra en la figura 4. El mapeo es una operación dinámica.5. se necesita una memoria adicional y un tiempo de acceso a memoria extra. lo que significa que cada dirección se traduce inmediatamente. Dirección virtual Registros de dirección virtual (20 bits) Tabla de mapeo de memoria Registros de búfer de tabla de memoria (15 bits) Memoria principal Registros de búfer de tabla de memoria Registros de búfer de memoria principal Figura 4. Entonces se necesita una tabla como la que se muestra en la figura 4. La protección de memoria a través de la dirección física puede hacerse al asignar a cada bloque en la memoria varios bits de protección que indican el tipo de acceso que se permite a su bloque a otro sería necesario actualizar los bits de protección de bloque. Esto puede hacerse al incluir información de protección dentro de la 123 . 4.7 o en la memoria principal. PROTECCIÓN DE MEMORIA Pueden asignarse protección de memoria a la dirección física o a la dirección lógica.7: Tabla de memoria para mapear una dirección virtual.

INTRODUCCIÓN Todas las aplicaciones computarizadas necesitan almacenar y recuperar la información: generan. CAPÍTULO 5 ADMINISTRACÓN DE LOS ARCHIVOS 5. 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. es decir que no deben verse afectados por la creación o terminación de un proceso.1. La información debe sobrevivir a la conclusión del proceso que la Superando las limitaciones del almacenamiento real. Trascendiendo a la duración de los procesos que las utilizan o 124 .tabla de segmento o en el circuito del registro de segmento de administración de memoria. 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. Debe ser posible que varios procesos tengan acceso concurrente a la información. utiliza.

asegurando el uso disponible y proporcionando archivos. close. Pueden ser m anipulados como una unidad por operaciones como: open. de la administración de los archivos del almacenamiento secundario. sus recursos de información y de las políticas que se utilizan para almacenar y distribuir los archivos. FUNCIONES DEL ADMINISTRADOR DE ARCHIVOS El administrador de archivos tiene un trabajo complicado. Utilizar una política que determine dónde y cómo se almacenarán los archivos. destroy. list.- Los archivos son una colección de datos con nombre. A fin de desempeñar sus funciones.2. 2. El “Sistema de Archivos” es la parte del sistema de administración del almacenamiento responsable. O. update. rename. Llevar el control de dónde se almacena cada archivo. 3. el sistema de archivos es como una biblioteca. insert. tiene que ejecutar estas cuatro tareas: 1. - Los elementos de datos individuales dentro del archivo pueden ser manipulados por operaciones como: read. copy. Es la parte del S. responsable de permitir “compartir controladamente” la información de los archivos. Por ejemplo. 4. 5. create. write. Desasignar el archivo cuando éste es devuelto a almacenamiento y comunicar su disponibilidad a otros esperando. Asignar cada archivo cuando se ha aceptado el acceso de un usuario al mismo y registrar su uso. principalmente. delete. con el administrador de archivos como bibliotecario – este último realiza las mismas interesados que pudieran estar eficiente del espacio de almacenamiento un acceso eficiente del espacio de a los almacenamiento disponible y proporcionando un acceso eficiente 125 . Está a cargo de los componentes físicos del sistema.

administrador de archivos controla sus archivos utilizando directorios que contienen sus nombres. la política debe establecer quién tendrá acceso a qué material. 4. Esto supone dos factores: flexibilidad de acceso a la información y su protección subsecuente. El sistema de computación asigna un archivo activando el dispositivo de almacenamiento secundario apropiado y cargando el archivo en la memoria al mismo tiempo que actualiza los registros del usuario. Éstas se deben organizar físicamente. el sistema operativo debe proteger sus archivos contra el mal funcionamiento del sistema y proporcionar medios de seguridad mediante números de cuenta. de manera que las personas pueden encontrarlas cuando lo necesiten. grabaciones. el. cuando se solicita. La biblioteca se apoya en una política predeterminada para almacenar todo lo que está en la colección. contraseña y cerraduras para observar la integridad de los datos y protegerse contra el mal uso. localización física en el almacenamiento secundario e información importante respecto a cada archivo. 126 . mapas y cintas. incluyendo libros de tamaño afuera de lo común. 2. revistas. Es un sistema de cómputo.cuatro tareas: 1. La política predeterminada del administrador de archivos define dónde se almacena cada archivo y de que manera el sistema y los usuarios podrán tener acceso a ellos de una manera simple – vía comandos que son independientes de los detalles del dispositivo – además. El administrador de archivos efectúa lo anterior al permitir el acceso a archivos compartidos. las tarjetas listan el número de identificación y los detalles que ayudan a los clientes a encontrar cada libro. Utiliza el catalogo de tarjetas para llevar el control de cada elemento de la colección. Mientras tanto. el bibliotecario elimina el reglón del archivo de circulación y vuelve a poner el elemento en la estantería. el libro se toma de la estantería y se registra el nombre del solicitante en el archivo de circulación. cuando el libro es devuelto. proporcionar un acceso distribuido y permitir a los usuarios que examinen directorios públicos. 3.

El “Sistema de Archivos” es un componente importante de un S. referenciados. EL SISTEMA DE ARCHIVOS Un “Archivo” es un conjunto de registros relacionados. el administrador de archivos desasigna un archivo y volviendo a escribirlo (si ha sido revisado) en el dispositivo de almacenamiento secundario. “Integridad del archivo” para garantizar la integridad de la información del archivo. O. Cada entrada de archivo apunta al lugar del disco donde está 127 de archivos” referida a la provisión de mecanismos para que los archivos sean almacenados. El “directorio de usuario” contiene una entrada para cada uno de los archivos del usuario. El sistema de archivos está relacionado especialmente con la administración del espacio de almacenamiento secundario. “Administración del almacenamiento auxiliar” para la asignación de espacio a los archivos en los dispositivos de almacenamiento secundario. y suele contener: “Métodos de acceso” relacionados con la manera de acceder a los datos almacenados en archivos. . fundamentalmente con el almacenamiento de disco.3.Por último. El “directorio raíz” apunta a los “directorios de usuarios”. 5. En seguida se notifica su disponibilidad a cualquier proceso que aguarde el acceso al archivo. Una forma de organización de un sistema de archivos puede ser la siguiente: Se utiliza una “raíz” para indicar en qué parte del disco comienza el “directorio raíz”. “Administración compartidos y asegurados.

utilizan nombres de archivo con dos partes. 5. ESTRUCTURA DE UN ARCHIVO Los archivos se pueden estructurar de varias maneras. 128 . Los nombres de archivos solo necesitan ser únicos dentro de un directorio de usuario dado. separadas por un punto: La parte posterior al punto es la extensión de archivo y generalmente indica algo relativo al archivo. Algunos sistemas de archivos distinguen entre las letras mayúsculas y minúsculas.almacenado el archivo referenciado.1. El nombre del sistema para un archivo dado debe ser único para el sistema de archivos. las más comunes son: “Secuencia de bytes”:  El archivo es una serie no estructurada de bytes.2. mientras que otros no. aunque las extensiones suelen ser meras convenciones. En sistemas de archivo “jerárquicos” el nombre del sistema para un archivo suele estar formado por el “nombre de la trayectoria” del directorio raíz al archivo. 5. O.4. ARCHIVOS Se considerará el punto de vista del usuario.4.  El S. no ayuda pero tampoco estorba. Muchos S.4.  Posee máxima flexibilidad. O. NOMBRE DE LOS ARCHIVOS Las reglas exactas para los nombres de archivos varían de sistema a sistema. 5.

 Cada registro tiene un campo key (llave o clave) en una posición fija del registro.3. Los Archivos Especiales de Caracteres:  Tienen relación con la E/S. etc.4. archivos especiales de bloques. por ejemplo: archivos regulares. O. impresoras. archivos especiales de caracteres.  Se utilizan para modelar dispositivos seriales de E/S (terminales. 5. etc.- “Secuencia de registros”:  El archivo es una secuencia de registros de longitud fija. Los Directorios son archivos de sistema para el mantenimiento de una estructura del sistema de archivos. directorios. ACCESO A UN ARCHIVO Los tipos de acceso más conocidos son: 129 .4. donde: Los Archivos Regulares son aquellos que contienen información del usuario. cada uno con su propia estructura interna.4. no necesariamente de la misma longitud.. TIPOS DE ARCHIVOS Muchos S. discos.  El árbol se ordena mediante el campo de clave para permitir una rápida búsqueda de una clave particular. Los Archivos Especiales de Bloques se utilizan para modelar 5. soportan varios tipos de archivos.). - “Arbol”:  El archivo consta de un árbol de registros. redes.

sin poder:  Saltar registros. “Propietario”: propietario actual. 1 para no exhibirse en 130 . listas.4.5. 1 archivo de sistema. Algunos de los posibles atributos de archivo son: “Protección”: quién debe tener acceso y de qué forma. - Acceso Aleatorio: el proceso puede leer los registros en cualquier orden utilizando dos métodos para determinar el punto de inicio de la lectura:  Cada operación de lectura (read) da la posición en el archivo con la cual iniciar. que varían considerablemente de sistema a sistema.lectura”: 0 lectura / escritura.  Leer en otro orden.para .  Una operación especial (seek) establece la posición de trabajo pudiendo luego leerse el archivo secuencialmente. “Bandera exclusivo .- Acceso Secuencial: el proceso lee en orden todos los registros del archivo comenzando por el principio. 5. “Contraseña”: contraseña necesaria para acceder al archivo. “Bandera de ocultamiento”: 0 normal. ATRIBUTOS DE ARCHIVO Cada archivo tiene: Su nombre y datos. Elementos adicionales llamados atributos. 1 para lectura exclusivamente. “Bandera de sistema”: 0 archivo normal. “Creador”: identificador de la persona que creó el archivo.

6. 1 acceso aleatorio. “Tamaño actual”: número de bytes en el archivo.4. “Tiempo de creación”: fecha y hora de creación del archivo. - “Bandera temporal”: 0 normal. La finalidad es permitir que el sistema traslade los atributos y la lista 131 . OPERACIONES CON ARCHIVOS Las llamadas más comunes al sistema relacionadas con los archivos son: Create (crear): el archivo se crea sin datos. - “Longitud del registro”: número de bytes en un registro. eliminan automáticamente un archivo no utilizado durante “n” días. “Bandera de acceso aleatorio”: 0 solo acceso secuencial. “Banderas de cerradura”: 0 no bloqueado. archivo. “Tamaño máximo”: tamaño máximo al que puede crecer el 5. - “Bandera de biblioteca”: 0 ya se ha respaldado. Ciertos S. 1 necesita “Bandera ascii / binario”: 0 archivo en ascii. O. “Posición de la llave”: ajuste de la llave dentro de cada registro. archivo. “Longitud de la llave”: número de bytes en el campo llave. 1 eliminar al salir del proceso. “Tiempo del último acceso”: fecha y hora del último acceso al “Tiempo de la última modificación”: fecha y hora de la última modificación al archivo. 1 archivo en binario.respaldo. distinto de 0 bloqueado. Delete (eliminar): si el archivo ya no es necesario debe eliminarse para liberar espacio en disco. un proceso debe abrirlo. Open (abrir): antes de utilizar un archivo.

permiten asociar los archivos con un espacio de direcciones de un proceso en ejecución. Write (escribir): los datos se escriben en el archivo. por lo que el archivo debe cerrarse y liberar la tabla de espacio interno. quien hace la llamada debe especificar la cantidad de datos necesarios y proporcionar un buffer para colocarlos. Close (cerrar): cuando concluyen los accesos. Get attributes (obtener atributos): permite a los procesos obtener los atributos del archivo. Seek (buscar): especifica el punto donde posicionarse. Read (leer): los datos se leen del archivo. 5. en la posición actual. ARCHIVOS MAPEADOS A MEMORIA Algunos S. Solo puede añadir datos al final del archivo. La información relativa al modo de protección y la mayoría de las banderas son un ejemplo obvio. Se utilizan las llamadas al sistema “map” y “unmap”: “Map”: utiliza un nombre de archivo y una dirección virtual y hace 132 . O.4.7. Append (añadir): es una forma restringida de “write”. Rename (cambiar de nombre): permite modificar el nombre de un archivo ya existente. los atributos y direcciones del disco ya no son necesarios. Set attributes (establecer atributos): algunos atributos pueden ser determinados por el usuario y modificados luego de la creación del archivo. Cambia la posición del apuntador a la posición activa en cierto lugar del archivo.de direcciones en disco a la memoria principal para un rápido acceso en llamadas posteriores. El tamaño del archivo puede aumentar (agregado de registros) o no (actualización de registros).

ya que las modificaciones hechas en las páginas no se verán reflejadas en el disco hasta que dichas páginas sean eliminadas de la memoria. Las direcciones en disco donde se almacenan los datos.5. 5. Una posibilidad es que el directorio contenga por cada archivo referenciado: El nombre.5. Sus atributos. O. el que podría superar a la memoria. O. Otra posibilidad es que cada entrada del directorio contenga: 133 . para llevar un registro de los archivos. “Unmap”: elimina los archivos del espacio de direcciones y concluye la operación de asociación. facilitando la programación. 5. Los principales problemas relacionados son: Imposibilidad de conocer a priori la longitud del archivo de salida. Dificultad para compartir los archivos mapeados evitando inconsistencias. En muchos sistemas son a su vez también archivos.que el S. asocie al archivo con la dirección virtual en el espacio de direcciones. El mapeo de archivos elimina la necesidad de programar la E/S directamente. por lo cual las lecturas o escrituras de las áreas de memoria asociadas al archivo se efectúan también sobre el archivo mapeado. DIRECTORIOS Generalmente son utilizados por los S.1. SISTEMAS JERÁRQUICOS DE DIRECTORIOS El directorio contiene un conjunto de datos por cada archivo referenciado.

respetando una jerarquía 134 . Al abrir un archivo el S.2: Un directorio por usuario. Un apuntador a otra estructura de datos donde se encuentran los atributos y las direcciones en disco. El número y organización de directorios varía de sistema en sistema: Directorio único: el sistema tiene un solo directorio con todos los archivos de todos los usuarios. ver figura 5. O. Extrae los atributos y direcciones en disco. DIRECTORIO ARCHIVOS ◄ DIRECTORIO RAIZ ◄ compartido DIRECTORIO por RAIZ Figura 5.: Busca en su directorio el nombre del archivo. Graba esta información en una tabla de memoria real.- El nombre del archivo.1. Todas las referencias subsecuentes al archivo utilizarán la información de la memoria principal. Un árbol de directorios por usuario: el sistema permite que cada usuario tenga tantos directorios como necesite. tal como se ve en la figura 5.2. ◄ DIRECTORIO DEL USUARIO Figura 5.1: Un solo directorio todos los usuarios. Un directorio por usuario: el sistema habilita un solo directorio por cada usuario.

- Ruta de Acceso Absoluta:  Cada archivo tiene una ruta de acceso absoluta. NOMBRE DE LAS RUTAS DE ACCESO Cuando el sistema de archivos está organizado como un árbol de directorios se necesita una forma de determinar los nombres de los archivos. Los principales métodos para nombres de los archivos son los que se muestra en la figura.  Los componentes de la ruta de acceso se separan mediante algún carácter llamado “separador”.general.  Todos los nombres que no comiencen en el directorio raíz se toman en relación con el directorio de trabajo.3. sin importar 135 .  El nombre absoluto de la ruta de acceso siempre funciona.  Consta de la ruta de acceso desde el directorio raíz hasta el archivo. 5. ◄ DIRECTORIO RAIZ ◄ DIRECTORIO DEL USUARIO ◄ SUBDIRECTORIOS DEL USUARIO Figura 5. 5. - Ruta de Acceso Relativa:  Se utiliza junto con el concepto de directorio de trabajo o directorio activo.2.5.3: Un árbol arbitrario por usuario.

utilice. Rename (cambiar de nombre): cambia el nombre de un directorio de manera similar al cambio para archivos.3. éste debe ser cerrado para liberar el espacio correspondiente de la tabla interna.5. Delete (eliminar): se elimina un directorio. Si el archivo que se desea desligar aparece solo en un directorio (el caso normal): a) Se elimina del sistema de archivos. éste debe ser abierto. está presente en varios directorios: 136 .  Crea un enlace del archivo ya existente con el nombre especificado en la ruta de acceso. Unlink (desligar): se elimina una entrada del directorio. Closedir (cerrar directorio): cuando se ha leído un directorio. sin importar el tipo de estructura de directorios que se  Si el archivo que se desea desligar. 5. Link (ligar): es una técnica que permite que un archivo aparezca en más de un directorio:  Especifica un archivo existente y el nombre de una ruta de acceso. que debe estar vacío. Readdir (leer directorio): regresa la siguiente entrada en un directorio abierto. Opendir (abrir directorio): se pueden leer los directorios:  Antes de poder leer un directorio. Las más comunes son las siguientes: Create (crear): se crea un directorio vacío. OPERACIONES CON DIRECTORIOS Las llamadas al sistema permitidas para el manejo de los directorios tienen variación de sistema a sistema.cual sea el directorio de trabajo.

según la implementación. IMPLANTACIÓN DE ARCHIVOS El aspecto clave de la implantación del almacenamiento de archivos es el registro de los bloques asociados a cada archivo. 5. IMPLANTACIÓN DEL SISTEMA DE ARCHIVOS Y SUS RELACIONES CON LA ASIGNACIÓN Y LIBERACIÓN DE ESPACIO Se consideran aspectos tales como: La forma de almacenamiento de archivos y directorios.a) Solo se elimina la ruta de acceso especificada.  “Recolección de basura o residuos”: se puede hacer fuera de línea o en línea. Una técnica para aliviar el problema de la “fragmentación” consiste en realizar periódicamente:  “Condensación”: se pueden “reorganizar” los archivos expresamente o automáticamente según algún criterio predefinido. La forma de hacerlo de manera eficiente y confiable. Algunos de los métodos utilizados son los siguientes: Asignación contigua o adyacente: Los archivos son asignados a áreas contiguas de almacenamiento secundario. 5. 137 . La administración del espacio en disco. Se deben tener presentes problemas tales como la “fragmentación” creciente del espacio en disco: Ocasiona problemas de performance al hacer que los archivos se desperdiguen a través de bloques muy dispersos.6.1.6. b) Las demás rutas permanecen. con el sistema activo.

la recuperación de registros lógicamente contiguos puede significar largas búsquedas. - Asignación no contigua:  Son esquemas de almacenamiento más dinámicos.  Los principales defectos son: a) Se debe conocer el tamaño máximo del archivo al crearlo. • Una “lista de espacio libre” contiene entradas para todos los sectores libres del disco. Los archivos constan de varios sectores que pueden estar dispersos por todo el disco. b) Produce una gran fragmentación de los discos. b) Rendimiento excelente respecto de la E / S. ya que solo se precisa el número del bloque de inicio para localizar un archivo. destacándose los siguientes: e) Asignación encadenada orientada hacia el sector: • • El disco se considera compuesto de sectores individuales. • Las ampliaciones o reducciones en el tamaño de los archivos se resuelven actualizando la “lista de espacio libre” y no hay necesidad de condensación.- Las principales ventajas son: a) Facilidad de implantación. • Los sectores que pertenecen a un archivo común contienen apuntadores de uno a otro formando una “lista encadenada”. º El mantenimiento de la estructura de “listas encadenadas” significa una sobrecarga en tiempo de ejecución. 138 . • Las principales desventajas son: º Debido a la posible dispersión en el disco.

º Los apuntadores de la estructura de lista consumen espacio en disco.  Encadenamiento de bloques o lista ligada: • Las entradas en el directorio de usuarios apuntan al primer bloque de cada archivo. f) Asignación por bloques: • • Es más eficiente y reduce la sobrecarga en ejecución. • El sistema trata de asignar nuevos bloques a un archivo eligiendo bloques libres lo más próximos posible a los bloques del archivo existentes. Es una mezcla de los métodos de asignación contigua y la no contigua. º Transformación de archivos orientada hacia bloques. • Las formas más comunes de implementar la asignación por bloques son: º Encadenamiento de bloques. Frecuentemente el tamaño de un bloque se corresponde con el de una pista completa del disco. • Se asignan bloques de sectores contiguos en vez de sectores individuales. 139 . • • Cada bloque contiene varios sectores. • Cada uno de los bloques de longitud que forman un archivo contiene dos partes: º Un bloque de datos. º Un apuntador al bloque siguiente. º Encadenamiento de bloques de índice. .

A.18 DATOS DATOS DATOS Figura 5.12 B. • El examen de la cadena desde el principio puede ser lento ya que debe realizarse de bloque en bloque. A. y pueden estar dispersos por todo el disco.10 B. º Buscar en el bloque hasta encontrar el registro.F.DIRECTORIO DE USUARIOS DIRECTORIO DE USUARIOS ARCHIVO ARCHIVO LOCALIZACIÓN LOCALIZADORR SE REPRESENTA EL ARCHIVO A A A DATOS BLOQUES DE ARCHIVOS O BLOQUES FISICO 4 DATOS BLOQUES DE ARCHIVOS 1 BLOQUES FISICO 7 BLOQUES DE ARCHIVOS 2 B.DE.F. dado que se deben 140 . A.DE.4: Encadenamiento de bloques o lista ligada de bloques. 5 B. 4 B.DE. 6 B. • Localizar un registro determinado requiere: º Buscar en la cadena de bloques hasta encontrar el bloque apropiado. A.15 DATOS BLOQUES FISICO 2 DATOS B. • La inserción y el retiro son inmediatos.DE.F.F. 3 B.

º Cada entrada contiene un identificador de registros y un apuntador a ese registro. hacia adelante y hacia atrás. pero para mejor performance podrían mantenerse en el almacenamiento 141 . DIRECTORIO DE USUARIOS ARCHIVO ARCHIVO LOCALIZACIÓN LOCAL IZADO RR BLOQUES DE INDICES BLOQUES DE CONTINUACIÓN DE INDICE Figura 5. tal como se muestra en la figura 5.  Encadenamiento de bloques de índices: • Los apuntadores son colocados en varios bloques de índices separados: º Cada bloque de índices contiene un número fijo de elementos. º Si es necesario utilizar más de un bloque de índices para describir un archivo.4. 5.modificar los apuntadores del bloque procedente. • Los bloques de índices pueden mantenerse juntos en el almacenamiento secundario para acortar la búsqueda. con lo que se facilita la búsqueda. se encadena una serie de bloques de índices. • La gran ventaja es que la búsqueda puede realizarse en los propios bloques de índices.5: Encadenamiento de bloques de índice.5. ver figura. • Se pueden usar “listas de encadenamiento doble”.

• Se conserva un mapa del archivo. llamada nodo-i 142 . • La principal desventaja es que las inserciones pueden requerir la reconstrucción completa de los bloques de índices: º Una posibilidad es dejar vacía una parte de los bloques de índices para facilitar inserciones futuras y retardar las reconstrucciones. La principal ventaja es que las cercanías físicas del disco se reflejan en el mapa del archivo.6.primario. • • El sistema puede mantener una lista de bloques libres. • Las entradas en el directorio del usuario apuntan a la primera entrada al mapa del archivo para cada archivo.  Transformación de archivos orientada hacia bloques (Ver figura 5. • Es suficiente que el dato del directorio contenga el número de bloque inicial para localizar todos los bloques restantes. • Cada entrada al mapa del archivo contiene el número del bloque siguiente de ese archivo.  Nodos-i (nodos índices): • Se asocia a cada archivo una pequeña tabla. conteniendo una entrada para cada bloque del disco. • La entrada al mapa del archivo correspondiente a la última entrada de un archivo determinado se ajusta a algún valor “centinela” (“nil”) para indicar que se alcanzó el último bloque de un archivo. Los números de bloques se convierten fácilmente a direcciones de bloques gracias a la geometría del disco. sin importar el tamaño del archivo.): • • Se utilizan números de bloques en vez de apuntadores.

toda la información está en el nodo-i. MAPA DEL ARCHIVO DIRECTORIO DE USUARIOS ARCHIVOS A B C LOCALIZACIÓN 8 6 6 6 6 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 BLOQUEO FISICOS EN EL ALMACENAMIENTO SECUNDARIO BLOQUEO 0 B(4) BLOQUEO1 B(10) BLOQUEO2 B(1) BLOQUEO3 B(4) BLOQUEO4 B(8) BLOQUEO5 B(2) BLOQUEO6 B(1) 22 NIL 5 26 9 20 10 LIBRE 17 1 14 LIBRE 3 4 0 LIBRE LIBRE 12 13 NIL 23 LIBRE 18 19 LIBRE LIBRE 24 25 26 27 BLOQUEO 7 LIBRE BLOQUEO 8 A(1) BLOQUEO 15 LIBRE BLOQUEO 9 A(9) BLOQUEO 10 A(2) BLOQUEO 11 LIBRE 143 BLOQUEO 12 A(3) BLOQUEO 13 B(7) NIL LIBRE BLOQUEO 14 B(3) BLOQUEO 16 LIBRE BLOQUEO 17 A(2) BLOQUEO 24 LIBRE BLOQUEO 18 B(6) BLOQUEO 19 C(5) BLOQUEO 20 C(3) BLOQUEO 21 LIBRE BLOQUEO 22 B(5) BLOQUEO 23 C(4) BLOQUEO 25 LIBRE BLOQUEO 26 A(5) BLOQUEO 27 LIBRE . º En rigor. almacena solo las primeras direcciones en disco: º Si el archivo es pequeño.(nodo índice): º Contiene los atributos y direcciones en disco de los bloques del archivo. º Se traslada del disco a la memoria principal al abrir el archivo.

6: Transformación de archivos orientada hacia bloques.  Si resulta insuficiente.Figura 5. otra dirección en el nodo-i. una de las direcciones en el nodo-i es la dirección de un bloque en el disco llamado bloque simplemente indirecto:  Contiene las direcciones en disco adicionales. contiene la dirección de un bloque que presenta una lista de los bloques simplemente indirectos:  Cada bloque simplemente indirecto apunta a un grupo de bloques de datos. º Si el archivo es grande.  De ser necesario se pueden utilizar bloques triple mente indirectos. el bloque doblemente indirecto. 144 .

La principal función del sistema de directorios es asociar el nombre del archivo con la información necesaria para localizar los datos. para lo que se consideraran dos soluciones posibles. Primera solución: 145 BLOQUE TRIPLEMENTE INDIRECTO . Si los directorios realmente contienen DOBLEMENTE direcciones en disco: INDIRECTO BLOQUE - Se debe tener una copia de las direcciones en disco en el directorio DIRECCIONES que accede al archivo compartido al enlazar el archivo. Un aspecto íntimamente ligado con esto es la posición de almacenamiento de los atributos: Una posibilidad es almacenarlos en forma directa dentro del dato del directorio.6. EN DISCO DIRECCIONES DATOS DE - LOS aBLOQUES DE Se debe evitar que los cambios hechos por un usuario través de un directorio no sean visibles por los demás usuarios. BLOQUE SIMPLEMENTE INDIRECTO ATRIBUTOS La conexión entre un directorio y un archivo de otro directorio al cual comparten se denomina enlace. O. ARCHIVOS COMPARTIDOS Frecuentemente conviene que los archivos compartidos aparezcan simultáneamenteNODO en distintos directorios de distintos usuarios. Otra posibilidad es almacenar los atributos en el nodo-i en vez de utilizar la entrada del directorio.5. I El propio sistema de archivos es una gráfica dirigida acíclica en vez de un árbol. IMPLANTACIÓN DE DIRECTORIOS Para abrir un archivo el S. El tipo de información varía según el sistema. 5.6.3.2. utiliza información del directorio: El directorio contiene la información necesaria para encontrar los bloques en el disco.

146 . que podría ser el nodo-i (Ver Figura 5.). - Los bloques del disco no se enlistan en los directorios. El archivo “link”:  Ingresa al directorio del usuario que accede a un archivo de otro directorio y usuario. sino en una pequeña estructura de datos asociada al propio archivo.Figura 5.7. Segunda solución: El enlace se produce haciendo que el sistema cree un nuevo archivo de tipo “link”.7: Esquema de un nodo-i. - Los directorios apuntarían solo en una pequeña estructura de datos.

 El sistema: • Puede ver por medio del contador de enlaces en el nodo-i que el archivo sigue utilizándose. La solución podría ser: archivo. Dejar intacto el nodo-i:  Se daría el caso que el directorio que posee el enlace es el único que 147 Eliminar la entrada del directorio inicialmente propietario del . Este criterio se denomina enlace simbólico. Si el propietario inicial del archivo intenta eliminarlo. Solo contiene el nombre de la ruta de acceso del archivo al cual se enlaza. Desventajas de la primera solución : La creación de un enlace:  No modifica la propiedad respecto de un archivo. • No puede localizar todas las entradas de directorio asociadas a ese archivo para eliminarlas.  Aumenta el contador de enlaces del nodo-i: • El sistema sabe el número de entradas de directorio que apuntan en cierto momento al archivo. el directorio que enlazo al archivo tendrá una entrada que apunta a un nodo-i no válido. surge un problema para el sistema:  Si elimina el archivo y limpia el nodo-i.  Si el nodo-i se reasigna a otro archivo el enlace apuntará al archivo incorrecto.

148 . se debe proporcionar solo la dirección de la red de la máquina donde reside el archivo y su ruta de acceso en esa máquina. especialmente en accesos a disco. Desventajas de la segunda solución: El principal problema es su costo excesivo. puesto que se debe leer el archivo que contiene la ruta de acceso. analizarla y seguirla componente a componente hasta alcanzar el nodo-i. Los archivos pueden tener dos o más rutas de acceso. en cualquier parte del mundo.  Esto no ocurre con los enlaces simbólicos ya que solo el propietario verdadero tiene un apuntador al nodo-i: • Los usuarios enlazados al archivo solo tienen nombres de rutas de acceso y no apuntadores a nodo-i. debido a lo cual.1. Los enlaces simbólicos tienen la ventaja de que se pueden utilizar para enlazar archivos en otras máquinas. Se precisa un nodo-i adicional por cada enlace simbólico y un bloque adicional en disco para almacenar la ruta de acceso. en búsquedas genéricas se podría encontrar el mismo archivo por distintas rutas y tratárselo como si fueran archivos distintos. es el control de todos los dispositivos de E /S de la computadora. CAPÍTULO 6 ENTRADA / SALIDA 6. O. este se destruye.posee una entrada de directorio para un archivo de otro directorio. • Cuando el propietario elimina un archivo. para el cual dicho archivo ya no existe. INTRODUCCIÓN Una de las funciones principales de un S.

Dispositivos de carácter.  Debe ser la misma (preferentemente) para todos los dispositivos (independencia del dispositivo). 6. El uso inapropiado de los dispositivos de E/S frecuentemente genera ineficiencias del sistema. El código de E/S representa una fracción significativa del S. Detectar las interrupciones. O. PRINCIPIOS DEL HARDWARE DE E/S El enfoque que se considerará tiene que ver con la interfaz que desde el hardware se presenta al software: Comandos que acepta el hardware. Las principales características de los dispositivos de bloque son: 149 . Funciones que realiza. Controlar los errores. Errores que puede informar.2.2. lo que afecta la performance global.Las principales funciones relacionadas son: sistema:  Debe ser sencilla y fácil de usar.1. Proporcionar una interfaz entre los dispositivos y el resto del 6. Enviar comandos a los dispositivos. DISPOSITIVOS DE E/S Se pueden clasificar en dos grandes categorías: Dispositivos de bloque.

- La información se almacena en bloques de tamaño fijo. etc. en cualquier momento. Algunos dispositivos no se ajustan a este programa de clasificación. Cada bloque tiene su propia dirección. interfaces de una red. Los tamaños más comunes de los bloques van desde los 128 bytes hasta los 1. No tienen una operación de búsqueda. - Se puede leer o escribir en un bloque de forma independiente de los demás. ratones. terminales. 6. 150 . - No se pueden utilizar direcciones. que no tienen direcciones por medio de bloques y no generan o aceptan flujos de caracteres. Un componente electrónico.024 bytes. por lo que encarga la parte dependiente del dispositivo a un software de menor nivel. Las principales características de los dispositivos de carácter son: La información se transfiere como un flujo de caracteres. Un ejemplo típico de dispositivos de carácter son las impresoras de línea. el controlador del dispositivo o adaptador. el software manejador del dispositivo.2. por ejemplo los relojes. - Un ejemplo típico de dispositivos de bloque son los discos. CONTROLADORES DE DISPOSITIVOS Las unidades de E/S generalmente constan de: Un componente mecánico.2. Muchos controladores pueden manejar más de un dispositivo. El sistema de archivos solo trabaja con dispositivos de bloque abstractos. sin sujetarse a una estructura de bloques.

Para la mayoría de los mainframes:  Modelo de varios buses y computadoras especializadas en E/S llamadas canales de E/S. El Controlador Debe: Convertir el flujo de bits en serie en un bloque de bytes. generalmente trabaja con el controlador y no con el dispositivo. El preámbulo:  Se escribe al dar formato al disco. La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel: La comunicación es mediante un flujo de bits en serie que:  Comienza con un preámbulo. por ejemplo). Copiar el bloque en la memoria principal.El S.  Contiene el número de cilindro y sector. 151 . el tamaño de sector y otros datos similares. Efectuar cualquier corrección de errores necesarias.  Sigue con una serie de bits (de un sector de disco. Pueden utilizar un espacio de direcciones especial para la E/S. 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. O.  Concluye con una suma para verificación o un código corrector de errores. Los modelos más frecuentes de comunicación entre la cpu y los controladores son: Para la mayoría de las micro y mini computadoras:  Modelo de bus del sistema.

el controlador provoca una interrupción para permitir que el S. Ejemplos de controladores. la cpu puede dejar al controlador y dedicarse a otro trabajo.2. Al terminar el comando.: Obtenga el control de la cpu. Verifique los resultados de la operación. ver figura 6. sus direcciones de E/S y sus vectores de interrupción en la PC IBM pueden verse en la Tabla 6. CONTROLADOR DE E/S RELOJ TECLADO DISCO DURO IMPRESORA DISCO FLEXIBLE Rs 232 primario Rs 232 secundario DIRECCIÓN DE E/S 040 . ACCESO DIRECTO A MEMORIA (DMA) Muchos controladores. O.1.asignando a cada controlador una parte de él.1.3. 6. 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. Al aceptar el comando.1: Controladores de E/S. direcciones de E/S y vector de interrupciones. especialmente los correspondientes a dispositivos de bloque. El S. permiten el DMA. los parámetros de los comandos también se cargan en los registros de los controladores.043 060 – 063 320 – 32F 378 – 37F 3F0 – 3F7 3F8 – 3FF 2F8 – 2F2 VECTOR DE INTERRUPCIONES 8 9 13 15 14 12 11 Tabla 6. O. realiza la E/S al escribir comandos en los registros de los controladores. Si se lee el disco sin DMA: 152 .

EN MEMORIA 153 BUS DEL SISTEMA CONTADOR . DMA se ideó para liberar a la cpu de este trabajo de bajo nivel. Se desperdicia tiempo de la cpu. El número de bytes por transferir. O. El S.unidad: El controlador lee en serie el bloque (uno o más sectores) de la  La lectura es bit por bit. Incrementa la dirección DMA y decrementa el contador DMA en el número de bytes que acaba de transferir. La dirección en memoria adonde debe ir el bloque. El controlador provoca una interrupción. MEMORIA CONTROLADOR DE DISCO UNIDAD BUFFER CPU CONTADOR REFISTROS DEL DMA DIREC. La cpu le proporciona al controlador: La dirección del bloque en el disco. Luego de que el controlador leyó todo el bloque del dispositivo a su buffer y de que corroboró la suma de verificación: Copia el primer byte o palabra a la memoria principal. lee el bloque del disco por medio del buffer del controlador:  La lectura es por byte o palabra a la vez. Lo hace en la dirección especificada por medio de la dirección de memoria de DMA.  Los bits del bloque se graban en el buffer interno del controlador.  En cada iteración de este ciclo se lee un byte o una palabra del registro del controlador y se almacena en memoria. Se calcula la suma de verificación para corroborar que no existen errores de lectura.

El controlador intentara escribir los datos en la memoria directamente:  Tendría que recurrir al bus del sistema para c/u de las palabras (o bytes) transferidas.  El bus podría estar ocupado por otro dispositivo y el controlador debería esperar. no debe copiar el bloque en la memoria. - Al iniciar su ejecución el S. luego de la interrupción provocada.Figura 6.1: Un controlador realiza completamente una transferencia DMA. No interesa si el controlador está listo o no para recibirlos. O. La transferencia DMA a la memoria ya no es un aspecto crítico del tiempo. El controlador necesita un buffer interno porque una vez iniciada una transferencia del disco: Los bits siguen llegando del disco constantemente.  Si la siguiente palabra llegara antes de que la anterior hubiera sido almacenada. Los controladores simples no pueden atender la E/S simultánea: 154 . el controlador la tendría que almacenar en alguna parte. porque ya se encuentra ahí. Si el bloque se guarda en un buffer interno: El bus no se necesita sino hasta que el DMA comienza. - Se repite este proceso hasta que el contador se anula y por lo tanto el controlador provoca una interrupción.

el sector que pasa debajo de la cabeza del disco se pierde. - La lectura de una pista completa se hará en dos rotaciones completas. una para los bloques pares y otra para los impares. 6. • • Se llama separación. separación simple y separación doble.  • El salto de bloques (Ver Figura 6. - Si el tiempo necesario para una transferencia de un bloque del controlador a la memoria por medio del bus es mayor que el tiempo necesario para leer un bloque del disco:  Sería necesario leer un bloque y luego saltar dos o más bloques.2: Factores de separación: sin separación.2): Se ejecuta para darle tiempo al controlador para la transferencia de los datos a la memoria. O.: º Leer los bloques con numeración consecutiva. los bloques se numeran tomando en cuenta el factor de separación. Al formatear el disco. • Esto permite al S.Figura 6. º Conservar la máxima velocidad posible del hardware. - Mientras transfieren a la memoria. PRINCIPIOS DEL SOFTWARE DE E/S 155 .3. es decir que el bloque siguiente al recién leído se pierde.

sin tener que modificar los programas para cada tipo de dispositivo. Las capas superiores deben presentar una interfaz agradable.1. 156 . 6.3): Las capas inferiores se encarguen de ocultar las peculiaridades del hardware a las capas superiores. Todos los archivos y dispositivos adquieren direcciones de la misma forma.3: Capas del sistema de entrada / salida y las principales funciones de cada capa.3. El problema debe ser resuelto por el S. El objetivo de lograr nombres uniformes está muy relacionado con el de independencia del dispositivo. es decir mediante el nombre de su ruta de acceso.La idea básica es organizar el software como una serie de capas donde (ver figura 6. OBJETIVOS DEL SOFTWARE DE E/S Un concepto clave es la independencia del dispositivo: Debe ser posible escribir programas que se puedan utilizar con archivos en distintos dispositivos. O. Figura 6. limpia y regular a los usuarios.

O. Solo si los niveles inferiores no pueden resolver el problema. MANEJADORES DE INTERRUPCIONES Las interrupciones deben ocultarse en el S. se informa a los niveles superiores. 157 . Generalmente la recuperación se puede hacer en un nivel inferior y de forma transparente. O. se encarga de hacer que operaciones controladas por interruptores que parezcan del tipo de bloques para el usuario. 6. O. independiente de los dispositivos. Directivas de dispositivos. Software de S.: discos) y los de uso exclusivo (ej. También el S. Generalmente el software de E/S se estructura en capas: Manejadores de interrupciones. O.3. debe administrar los dispositivos compartidos (ej.Otro aspecto importante del software es el manejo de errores de E/S: Generalmente los errores deben manejarse lo más cerca posible del hardware. Software a nivel usuario.: impresoras). El S. La programación es más fácil si la E/S es síncrona (por bloques): el programa se suspende automáticamente hasta que los datos estén disponibles en el buffer. Otro aspecto clave son las transferencias síncronas (por bloques) o asíncronas (controlada por interruptores): La mayoría de la E/S es asíncrona: la cpu inicia la transferencia y realiza otras tareas hasta una interrupción.: Cada proceso que inicie una operación de E/S se bloquea hasta que termina la E /S y ocurra la interrupción.2.

158 . La labor de un manejador de dispositivos es la de: Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo. agregara la nueva solicitud a una cola de solicitudes pendientes.  Envía los comandos al controlador al escribir en los registros de dispositivo del mismo. Verificar la ejecución de dichas solicitudes. Cada controlador posee uno o más registros de dispositivos: Se utilizan para darle comandos. MANEJADORES DE DISPOSITIVOS Todo el código que depende de los dispositivos aparece en los manejadores de dispositivos. Si al recibir una solicitud el manejador está ocupado con otra solicitud. La solicitud de E/S.- El procedimiento de interrupción realiza lo necesario para desbloquear el proceso que lo inicio.3. Resumiendo: debe decidir cuáles son las operaciones necesarias del controlador y su orden.3. Los manejadores de dispositivos proveen estos comandos y verifican su ejecución adecuada. se debe traducir de términos abstractos a términos concretos:  El manejador de disco debe: Estimar el lugar donde se encuentra en realidad el bloque solicitado.   Verificar si el motor de la unidad funciona. por ejemplo para un disco. Verificar si el brazo está colocado en el cilindro adecuado. etc. 6.

El número típico de sectores por pista varía entre 8 y 32 (o más). 6.4. Un uso inapropiado de los discos puede generar ineficiencia.k.  Regresa información de estado sobre los errores a quien lo Inicia otra solicitud pendiente o queda en espera. Un controlador puede realizar búsquedas en una o más unidades al mismo 159 .   Al finalizar la operación debe verificar los errores.  llamó. transferirá los datos al software independiente del dispositivo.4.4.2. La información no se pierde al apagar la computadora. pistas y sectores. Todos los sectores tienen igual número de bytes. DISCOS . en especial en sistemas con multiprogramación. Los sectores cercanos a la orilla del disco serán mayores físicamente que los cercanos al anillo.1. DISCOS Las siguientes son las principales ventajas con respecto del uso de la memoria principal como almacenamiento: Mucho mayor capacidad de espacio de almacenamiento. Si todo esta o. 6. HARDWARE PARA DISCOS Los discos están organizados en cilindros.HARDWARE PARA DISCOS 6. Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo. Menor precio por bit. una interrupción lo libera de este bloqueo.

6. El eje común de los discos gira a una velocidad del orden de 4.escritura: Se dispone de una por cada superficie de disco. Mientras el controlador y el software esperan el fin de una búsqueda en una unidad. Son las búsquedas traslapadas.4). Buscar en otra. La capacidad de búsquedas traslapadas puede reducir considerablemente el tiempo promedio de acceso. OPERACIÓN DE ALMACENAMIENTO DE DISCO DE CABEZA MÓVIL Los datos se graban en una serie de discos magnéticos o platos (Ver figura 6. Se lee o escribe mediante una serie de cabezas de lectura . el controlador puede iniciar una búsqueda en Los controladores no pueden leer o escribir en dos unidades al mismo tiempo.000 o más revoluciones por minuto. Muchos controladores pueden: Leer o escribir en una unidad.tiempo: otra. 160 .5.

Figura 6.4: Esquema de un disco de cabeza móvil.

Solo puede acceder a datos inmediatamente adyacentes a ella: La parte de la superficie del disco de donde se leerá (o sobre la que se grabará) debe rotar hasta situarse inmediatamente debajo (o arriba) de la cabeza de lectura - escritura.  El tiempo de rotación desde la posición actual hasta la adyacente al cabezal se llama tiempo de latencia.

Todas las cabezas de lectura - escritura están montadas sobre una barra o conjunto de brazo móvil: Puede moverse hacia adentro o hacia afuera, en lo que se denomina operación de búsqueda. Para una posición dada, la serie de pistas accesibles forman un cilindro vertical. A los tiempos de búsqueda y de latencia se debe agregar el tiempo de transmisión propiamente dicha, ver figura 6.5. El tiempo total de acceso a un registro particular: Involucra movimientos mecánicos. Generalmente es del orden de centésimas de segundo, aunque el tiempo de latencia sea de algunas milésimas de segundo (7 a 12 aproximadamente).

161

Figura 6.5: Componentes del acceso a un disco.

6.6. ALGORITMOS DE PROGRAMACIÓN DEL BRAZO DEL DISCO En la mayoría de los discos, el tiempo de búsqueda supera al de retraso rotacional y al de transferencia, debido a ello, la reducción del tiempo promedio de búsqueda puede mejorar en gran medida el rendimiento del sistema. Si el manejador del disco utiliza el algoritmo primero en llegar primero en ser atendido (FCFS), poco se puede hacer para mejorar el tiempo de búsqueda. Es posible que mientras el brazo realiza una búsqueda para una solicitud, otros procesos generen otras solicitudes.

6.7. PORQUÉ ES NECESARIA LA PLANIFICACIÓN DE DISCOS En los sistemas de multiprogramación muchos procesos pueden estar generando peticiones de E/S sobre discos: La generación de peticiones puede ser mucho más rápida que la atención de las mismas:   Se construyen líneas de espera o colas para cada dispositivo. Para reducir el tiempo de búsqueda de registros se ordena la cola de peticiones; esto se denomina planificación de disco. La planificación de disco implica: Un examen cuidadoso de las peticiones pendientes para determinar la forma más eficiente de servirlas. espera. Un reordenamiento de la cola de peticiones para servirlas 162 Un análisis de las relaciones posicionales entre las peticiones en

minimizando los movimientos mecánicos. Los tipos más comunes de planificación son: Optimización de la búsqueda. Optimización rotacional (latencia).

Generalmente los tiempos de búsqueda superan a los de latencia, aunque la diferencia disminuye: Muchos algoritmos de planificación se concentran en la reducción de los tiempos de búsqueda para un conjunto de peticiones. Generalmente la reducción de la latencia recién tiene efectos bajo cargas de trabajo muy pesadas. Bajo condiciones de carga ligera (promedio bajo de longitud de la cola), es aceptable el desempeño del método FCFS (primero en llegar, primero en ser servido). Bajo condiciones de carga media o pesada, es recomendable un algoritmo de planificación de l as colas de requerimientos.

6.8. CARACTERÍSTICAS DESEABLES DE LAS POLÍTICAS DE PLANIFICACIÓN DE DISCOS Los principales criterios de categorización de las políticas de planificación son: Capacidad de ejecución. Media del tiempo de respuesta. Varianza de los tiempos de respuesta (predecibilidad).

Una política de planificación debe intentar maximizar la capacidad de ejecución: Maximizar el número de peticiones servidas por unidad de tiempo. Minimizar la media del tiempo de respuesta. Mejorar el rendimiento global, quizás a costa de las peticiones

163

SCAN. SCAN de N . La planificación suele mejorar la imagen total al tiempo que reduce los niveles de servicio de ciertas peticiones: Se mide utilizando la varianza de los tiempos de respuesta. 6.Pasos. SSTF. C . 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.9. Se desea una política de planificación que minimice la varianza. PRIMERO EN SER SERVIDO) Una petición no puede ser desplazada por la llegada de una petición con prioridad más alta. Esquema Eschenbach. A menor varianza mayor predecibilidad.1. es decir que maximice la predecibilidad. SCAN. OPTIMIZACIÓN DE LA BÚSQUEDA EN DISCOS Las estrategias más comunes de optimización de la búsqueda son las siguientes: FCFS. 164 . 6. PLANIFICACIÓN FCFS (PRIMERO EN LLEGAR.individuales.9. No debe haber peticiones que puedan experimentar niveles de servicio erráticos.

9. 6. Ofrece una varianza pequeña aunque perjudica a las peticiones situadas al final de la cola. No respeta el orden de llegada de las peticiones a la cola.No hay reordenamiento de la cola de peticiones pendientes. PLANIFICACIÓN SSTF (MENOR TIEMPO DE BÚSQUEDA PRIMERO) El brazo del disco se sitúa en la siguiente petición que minimice el movimiento del brazo. PLANIFICACIÓN SCAN DE N . PLANIFICACIÓN SCAN El brazo del disco se desplaza sirviendo a todas las peticiones que encuentra a su paso. Tiende a favorecer a las pistas del centro del disco.PASOS 165 . 6.9. Las varianzas tienden a ser mayores que con FCFS por el efecto de las pistas interiores y exteriores. Ha sido la base de la mayoría de las estrategias de planificación implementadas.9. La media de tiempos de respuesta tiende a ser más baja que con FCFS.4. Elimina las discriminaciones de SSTF y tiene menor varianza. para cargas moderadas.3. Cambia de dirección cuando ya no hay peticiones pendientes en la dirección actual.2. Se ignoran las relaciones posicionales entre las peticiones pendientes. 6. pero no es tan grave como con SSTF. Las pistas exteriores son menos visitadas que las intermedias.

pero: Las peticiones se reordenan para ser servidas dentro de un cilindro para tomar ventaja de la posición rotacional. 6. 6. ESQUEMA ESCHENBACH El brazo del disco se mueve como en C .SCAN (BÚSQUEDA CIRCULAR) El brazo se mueve del cilindro exterior al interior. Esta estrategia tiene en cuenta el retraso rotacional. 6.7.9. salta a la petición más cercana al cilindro exterior y reanuda su desplazamiento hacia el interior. PLANIFICACIÓN C .6. Posee menor varianza de los tiempos de respuesta si se compara con las planificaciones SSTF y SCAN convencionales. No discrimina a los cilindros exterior e interior.9.SCAN. solo se sirve una en el movimiento actual del brazo del disco. Si dos peticiones trasladan posiciones de sectores dentro de un cilindro. Finalizado el recorrido hacia el interior.5. Las peticiones que llegan durante un recorrido son agrupadas y ordenadas y serán atendidas durante el recorrido de regreso. solo da servicio a las peticiones que se encuentran en espera cuando comienza un recorrido particular. La varianza de los tiempos de respuesta es muy pequeña. CONCLUSIONES Mediante trabajos de simulación y de laboratorio se demostró lo siguiente: 166 .La estrategia de movimiento del brazo es como en SCAN. sirviendo a las peticiones sobre una base de búsqueda más corta.9.

La estrategia C .SCAN es la mejor con cargas medias y pesadas.SCAN con optimización rotacional es la mejor para cargas muy pesadas (mejor que la estrategia Eschenbach inclusive).- La estrategia SCAN es la mejor con carga baja. 167 . La estrategia C .

MILENKOVIC. GARCÍA CARBALLEIRA. “Operating Systems”.. Y GALVIN. A. M. Operativos” (2/Ed. "Sistemas Operativos. Addison-Wesley Longman. 1995. G. "Distributed Systems. John Wiley & Sons.. Un Estudio Actual de los Sistemas Operativos. GREG GAYNE: "Operating System Concepts" (6th. PETER GALVIN. Concepts and Design". A Modern Perspective. ABRAHAM SILBERSCHATZ. Conceptos y Diseño” (2/Ed). 1990. “Sistemas Operativos. “Operating Systems “ (2/Ed. “Modern Operating Systems”. “Fundamentos de Sistemas Operativos .). Una visión aplicada.). 1992. Diseño para Optimizar Prestaciones” (4/Ed. “Sistemas Operativos. W. McGrawHill. Prentice Hall (1996). S. S. Addison_Wesley FINKEL. 1994. A.). S. ed. CARRETERO PÉREZ. DEITEL. H. M. Y WOODHULL.. SILBERSCHATZ. Inc 2002. Prentice Hall 2001. A. Prentice Hall. JESÚS. Addison-Wesley (1994). A.. W. Diseño e Implementación” (2/Ed. BEN-ARI. PÉREZ COSTOYA. “Sistemas Iberoamericana. Anaya Multimedia. o siguientes). 1997. STALLINGS. DE MIGUEL ANASAGASTI. 2001. 1997. “Operating System Concepts” (4/Ed. A.BIBLIOGRAFIA ANDREW S. 2000. “Organización y Arquitectura de Computadores. GEORGE COULOURIS. FERNANDO.. "Modern Operating System" (2nd ed. M. JEAN DOLLIMORE.). TANENBAUM. FÉLIX. ANDREW S..). TANENBAUM. PEDRO. TANENBAUM. “Principles of Concurrent Programming” Prentice Hall. TANENBAUM. 1982. Prentice Hall. 1993. TIM KINDBERG. Prentice Hall. McGrawHill. B. NUTT. Prentice Hall. Addison-Wesley. R. 168 . "Sistemas Operativos Distribuidos". 1994.). P. STALLINGS.