Sie sind auf Seite 1von 168

SISTEMAS OPERATIVOS

SISTEMAS OPERATIVOS
RESUMEN

El texto presenta la evolucin de los sistemas operativos a lo largo de la historia, introduciendo los conceptos fundamentales relativos a stos, como podran ser la administracin de procesos. As mismo, se ha tratado de dar todas las referencias posibles sobre Sistemas Operativos desconocidos para la mayora y que han jugado un papel ms 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 nmero de Sistemas Operativos que existen o que han existido.

INDICE GENERAL
RESUMEN . v INTRODUCCIN .. xi CAPTULO 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 CAPTULO 2 ADMINISTRACIN DEL PROCESADOR ...................... 12 2.1. Introduccin Y Definiciones Sobre Procesos .. 12 2.2. Estados De Procesos . 15 2.3. Procesamiento De Interrupciones . 17 2.4. El Ncleo Del Sistema Operativo . 20 2.5. Polticas De Planificacin De Procesos .. 21 2.6. Niveles De Planificacin Del Procesador .. . 22 2.7. Objetivos De La Planificacin 24 2.8. Criterios De Planificacin ......................... 25 2.9. Planificacin Apropiativa Versus No Apropiativa . 27 2.10. Algoritmos De Planificacin De Procesos .. 29 2.10.1. Planificacin Primero En Entrar, Primero En Servirse .. 29 2.10.2. Planificacin Sigue El Trabajo Ms Corto . 31 2.10.3. Planificacin Por Prioridad 33 2.10.4. Planificacin Tiempo Restante Ms Breve . 33 2.10.5. Planificacin Round Robin . 36 2.10.6. Planificacin De Colas De Multiples Niveles .. 39

CAPITULO 3 ADMINISTRACIN DE PROCESOS CONCURRENTES ....... 41 3.1. Procesos Concurrentes Asincrnicos . 41 3.2. Procesamiento En Paralelo .. 41 3.3. Una Estructura Para Indicar El Paralelismo: Cobegin/Coend . 42 3.4. Exclusin Mutua . 44 3.5. Secciones Crticas .................... 48 3.6. Primitivas De Exclusin Mutua . 49 3.7. Implementacin De Las Primitivas De Exclusion Mutua .. 51 3.8. Algoritmos De Exclusin Mutua .. 52 3.8.1. Desarrollo Intuitivo .. 52 3.9. Algoritmo De Dekker .. .. 61 3.10. Algoritmo De Peterson 65 3.11. Exclusion Mutua De N-Procesos 68 3.11.1. Algoritmo De Dijkstra 68 3.11.2. Algoritmo De Lamport .. 71 3.12. Semforos . 75 3.12.1. Sincronizacin De Procesos Con Semforos .. 78 3.12.2. Bloqueos Mutuos Y Bloqueos Indefinidos ....... 80 3.13. La Relacin Productor Consumidor .. 85 3.14. Semforos Contadores .. 89 CAPTULO 4 ADMINISTRACIN DE LA MEMORIA 90 4.1. Introduccin Al Almacenamiento Real 90 4.2. Requisitos Para La Administracin De La Memoria 91 4.2.1. Reubicacin 91 3.2.2. Proteccin .. 93 4.2.3. Comparticin ..

93 4.2.4. Organizacin Lgica .. 95 4.2.5. Organizacin Fsica 95 4.3. Carga De Programas En Memoria Principal . 96 4.3.1. Particin Fija 96 4.3.1.1. Tamaos De Particin 96 4.3.1.2. Algoritmo De Ubicacin . 99 4.3.1.3. Particin Dinmica .. 101 4.3.1.4. Algoritmo De Ubicacin . 103 4.3.1.5. Algoritmos De Reemplazo . 105 4.3.1.6. Reubicacin . 105 4.4. Memoria Virtual . 106 4.4.1. Espacio De Direccionamiento Y Espacio De Memoria 107 4.5. Proteccin De Memoria 109 CAPTULO 5 ADMINISTRACN DE LOS ARCHIVOS 110 5.1. Introduccin 110 5.2. Funciones Del Administrador De Archivos .. 111 5.3. El Sistema De Archivos 112 5.4. Archivos .. 114 5.4.1. Nombre De Los Archivos .. 114 5.4.2. Estructura De Un Archivo . 114 5.4.3. Tipos De Archivos .. ... 115 5.4.4. Acceso A Un Archivo 115 5.4.5. Atributos De Archivo .. 116 5.4.6. Operaciones Con Archivos 117 5.4.7. Archivos Mapeados A Memoria 118

5.5. Directorios ........................... 119 5.5.1. Sistemas Jerrquicos De Directorios .. 119 5.5.2. Nombre De Las Rutas De Acceso .. 120 5.5.3. Operaciones Con Directorios ... 121 5.6. Implantacin Del Sistema De Archivos Y Sus Relaciones Con La Asignacin Y Liberacin De Espacio . 122 5.6.1. Implantacin De Archivos . 123 5.6.2. Implantacin De Directorios . 130 5.6.3. Archivos Compartidos 130 CAPTULO 6 ENTRADA / SALIDA ..... 134 6.1. Introduccin 134 6.2. Principios Del Hardware De E/S 134 6.2.1. Dispositivos De E/S .. 135 6.2.2. Controladores De Dispositivos 136 6.2.3. Acceso Directo A Memoria (Dma) .. 138 6.3. Principios Del Software De E/S .. 140 6.3.1. Objetivos Del Software De E/S 141 6.3.2. Manejadores De Interrupciones .. 142 6.3.3. Manejadores De Dispositivos .. 143 6.4. Discos - Hardware Para Discos . 144 6.4.1. Discos . 144 6.4.2. Hardware Para Discos . 144 6.5. Operacin De Almacenamiento De Disco De Cabeza Mvil 145 6.6. Algoritmos De Programacin Del Brazo Del Disco . 147 6.7. Porqu Es Necesaria La Planificacin De Discos .. 147 6.8. Caractersticas Deseables De Las Polticas De Planificacin De Discos .. 148

6.9. Optimizacin De La Bsqueda En Discos .. 149 6.9.1. Planificacin Fcfs (Primero En Llegar, Primero En Ser Servido) . 149 6.9.2. Planificacin Sstf (Menor Tiempo De Bsqueda Primero) 149 6.9.3. Planificacin Scan 150 6.9.4. Planificacin Scan De N Pasos .. 150 6.9.5. Planificacin C - Scan (Bsqueda Circular) . 151 6.9.6. Esquema Eschenbach . 151 6.9.7. Conclusiones . 151 BIBLIOGRAFIA ........................................................................................................ 152

INDICE DE FIGURAS
1.1: Componentes de un sistema de cmputo 2 1.2: Modelo del sistema operativo para un solo usuario .. 2 1.3: Sistemas Operativos para Red . 5 1.4: Hardware del sistema de cmputo ... 6 2.1: Multiprogramacin de 4 programas .. 14 2.2: Un proceso puede estar en ejecucin, bloqueado o listo . 15 2.3: Niveles de planificacin del procesador .. 23 2.4: Tipos de planificacin del procesador . 28 2.5: Diagrama de secuencia para los trabajos de A,B,C que utiliza el algoritmo FCFS . 30 2.6: Diagrama de secuencia para los trabajos C,B,A con el algoritmo FCFS .. 30 2.7: Diagrama de tiempo de la secuencia de tareas B, D, A, C, con el algoritmo SJN . 32 2.8: Diagrama de tiempo de la secuencia de trabajos A,B,C,D con el algoritmo apropiante SRT 34 2.9: Lnea de tiempo para la misma secuencia de trabajos A,B,C,D, con el algoritmo SJN no apropiativa .. 35 2.10: Diagrama de tiempo para la secuencia de trabajos A,B,C,D con el algoritmo de round robin apropiativo .. 37 2.11: Cambios de contexto de el trabajo A con tres quantum de tiempo 39 4.1: Requisitos de direccionamiento para un proceso 92 4.2: Ejemplo de participacin esttica de una memoria de 4Mb 98 4.3: Asignacin de memoria con participacin fija .. 100 4.4: Efectos de la participacin dinmica .. 102 4.5: Ejemplo de una configuracin de memoria antes y despus de asignar un bloque de 16 Kb 103 4.6: Relacin entre espacios de direccin y de memoria en un sistema de memoria virtual 108 4.7: Tabla de memoria para mapear una direccin virtual . 109 5.1: Un solo directorio compartido por todos los usuarios .. 119 5.2: Un directorio por usuario .. 120 5.3: Un rbol arbitrario por usuario . 120 5.4: Encadenamiento de bloques o lista ligada de bloques 125 5.5: Encadenamiento de bloques de ndice . 126 5.6: Transformacin de archivos orientada hacia bloques . 129 5.7: Esquema de un nodo-i .. 131 6.1: Un controlador realiza completamente una transferencia DMA . 139 6.2: Factores de separacin: sin separacin, separacin simple y separacin doble . 140 6.3: Capas del sistema de entrada / salida y las principales funciones de cada capa .. 141 6.4: Esquema de un disco de cabeza mvil .. 145 6.5: Componentes del acceso a un disco .. 146

INDICE DE TABLAS
2.1: Tipos de interrupciones . 18 2.2. Disciplinas de planificacin del procesador ... 28 2.3: Comparacin de los algoritmos de planificacin .. 40 4.1. Tcnicas de administracin de memoria 98 6.1: Controladores de E/S, direcciones de E/S y vector de interrupciones . 137

INTRODUCCION

A finales de los 40's el uso de computadoras estaba restringido a aquellas empresas o instituciones que podan pagar su alto precio, y no existan los sistemas operativos. En su lugar, el programador deba tener un conocimiento y contacto profundo con el hardware, y en el infortunado caso de que su programa fallara, deba examinar los valores de los registros y pneles de luces indicadoras del estado de la computadora para determinar la causa del fallo y poder corregir su programa, adems de enfrentarse nuevamente a los procedimientos de apartar tiempo del sistema y poner a punto los compiladores, ligadores, etc; para volver a correr su programa, es decir, enfrentaba el problema del procesamiento serial. Es decir, se comenz a ver que las tareas mismas del operador podan plasmarse en un programa, el cual a travs del tiempo y por su enorme complejidad se le llam "Sistema Operativo". As, tenemos entre los primeros sistemas operativos al Fortran Monitor System ( FMS ) e IBSYS [Tan92]. Al tratar de crear un solo sistema operativo para computadoras que podan dedicarse a un propsito, al otro o ambos, puso en evidencia la problemtica del trabajo en equipos de anlisis, diseo e implantacin de sistemas grandes. Surge tambin en la tercera generacin de computadoras el concepto de la multiprogramacin, porque debido al alto costo de las computadoras era necesario idear un esquema de trabajo que mantuviese a la unidad central de procesamiento ms tiempo ocupada, as como el encolado (spooling ) de trabajos para su lectura hacia los lugares libres de memoria o la escritura de resultados. Sin embargo, se puede afirmar que los sistemas durante la tercera generacin siguieron siendo bsicamente sistemas de lote. En la cuarta generacin la electrnica avanza hacia la integracin a gran escala, pudiendo crear circuitos con miles de transistores en un centmetro cuadrado de silicn y ya es posible hablar de las computadoras personales y las estaciones de trabajo. Surgen los conceptos de interfaces amigables intentando as atraer al pblico en general al uso de las computadoras como

10

herramientas cotidianas. Se hacen populares el MS-DOS y UNIX en estas mquinas. Tambin es comn encontrar clones de computadoras personales y una multitud de empresas pequeas ensamblndolas por todo el mundo. Para mediados de los 80's, comienza el auge de las redes de computadoras y la necesidad de sistemas operativos en red y sistemas operativos distribuidos. 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. Para los 90's el paradigma de la programacin orientada a objetos cobra auge, as como el manejo de objetos desde los sistemas operativos. Las aplicaciones intentan crearse para ser ejecutadas en una plataforma especfica y poder ver sus resultados en la pantalla o monitor de otra diferente (por ejemplo, ejecutar una simulacin en una mquina con UNIX y ver los resultados en otra con DOS). Los niveles de interaccin se van haciendo cada vez ms profundos. En este libro ofrece una cobertura a los fundamentos de sistemas operativos: Captulo 1 Panorama General, Captulo 2 Administracin Del Procesador, Capitulo 3 Administracin De Procesos Concurrentes, Captulo 4 Administracin De La Memoria, Captulo 5 Administracin De Los Archivos Y Captulo 6 Entrada / Salida; en estos captulos se examinan los desarrollos recientes ms importantes que se han alcanzado en el diseo de los sistemas operativos. El objetivo principal de este texto es proporcionar al lector una comprensin slida de los mecanismos clave de los sistemas operativos modernos, las concisiones y las decisiones que acarrean el diseo de un sistema operativo y el contexto en que este opera.

Los Autores

11

SISTEMAS OPERATIVOS

12

(Revs de la Cartula)

Este libro trata sobre los aspectos referidos a los Sistemas Operativos. Para aquellos lectores que solo deseen adquirir o refrescar conocimientos relacionados con los sistemas operativos en general; ser suficiente con la lectura de la primera parte, en tanto que para aquellos que deseen un conocimiento ms profundo, teniendo presente la problemtica de los sistemas operativos modernos, ser necesario avanzar en la lectura del primer grupo de temas; as mismo, si adems se desea incursionar aspectos complementarios ms importantes se sugiere la lectura del mencionado texto en su forma total. Es preciso sealar adems que este libro esta destinado a los alumnos de una carrera de grado en sistemas e informtica, que deban hacer un curso de sistemas operativos, pudiendo ser de utilidad segn la profundidad del curso, que aborda el mencionado texto.

Los Autores.

13

CAPTULO 1 PANORAMA GENERAL

1.1. QU ES UN SISTEMA OPERATIVO? Una de las definiciones ms comnmente aceptadas expresa: Es un programa que acta como intermediario entre el usuario de una computadora y el hardware. Un S. O. es un grupo de programas de proceso con las rutinas de control Necesarias para mantener continuamente operativos dichos programas. El objetivo primario de un Sistema Operativo es: Optimizar todos los recursos del sistema para soportar los requerimientos y hacer de un sistema de cmputo. Utilizable de manera cmoda; por el usuario y el objetivo secundario es usar el hardware de la computadora de la forma eficiente. Los programas de sistema controlan la operacin de la computadora en s y los programas de aplicacin resuelven problemas para los usuarios. En este contexto, el Sistema Operativo es el programa fundamental de todos los programas de sistema. El S. O. protege y libera a los programadores de la complejidad del hardware, colocndose un nivel de software sobre el hardware para poder controlar todas las partes del sistema, presentar al usuario una interfaz o mquina virtual. El esquema tpico de un sistema de cmputos se muestre en la figura 1.1. ste puede dividirse en 4 componentes; el hardware, el sistema operativo, programas de aplicacin y los usuarios.

14

Usuario 1
Compilador

Usuario 2
ensamblador

...

Usuario

n
sistema de base de datos

Sistema Programas de sistema Operativo y de aplicacin Hardware de la computadora

Figura 1.1: Componentes de un sistema de cmputo.

En trminos mas simples, el S.O. es el gerente ejecutivo del sistema

de

computo que se encarga de la administracin del hardware y el software; lo que es lo mismo administrar los archivos, memoria, procesador y dispositivos; as mismo controla quien puede utilizar el sistema y de que manera (interfaz de comando del usuario). Por la tanto, cuando en usuario enva un comando el S.O. desde asegurarse que se ejecute y caso contrario indica el error que no permita su ejecucin. En la figura 1.2. se muestra una pirmide, que nos permitir extender mejor la funcin del sistema operativo.

Interfaz del comando del usuario

Administrador de procesador Administrador de archivos

Administrador de medidas

Administrador de archivos

Figura 1.2: Modelo del sistema operativo para un solo usuario.

La base de la pirmide muestra los 4 administradores esenciales del todo el 15

sistema

operativo: administrador de memoria procesador, dispositivos y

archivos; estos administradores son la base de todos los sistemas operativos. La interfaz de comando del usuario es desde el cual las usuario, es desde el cual los usuarios emiten los comandos especifico en cada sistema operativo. Sin importar el tamao o configuracin del sistema, cada uno de los administradores deben realizar las siguientes tareas: Monitoreo constante de sus recursos. Obligar al cumplimiento de las polticas que determinan, quien obtiene, cuando y cuanto tiempo. Asignar los recursos cuando es apropiada. Liberar el recurso recuperarlo cuando es conveniente. al S.O; este es un componente

Citaremos algunas funciones relevantes de los administradores. El administrador de memoria esta a cargo de la memoria principal o RAM. Comprueba la validez de cada solicitud de espacio de memoria y, si se trata de una solicitud legal, le asigna un porcin que todava no este en uso; otra funcin es proteger el espacio en la memoria principal que ocupa el sistema operativo...etc. El administrador del procesador decide estado de cada proceso...etc. El administrador de dispositivos vigila todos los dispositivos, cuales y unidades del sistema (perifricos), este administrador dispositivo, inicia su operacin y lo libera. etc. El administrador de archivo, lleva el control de todo el archivo en el sistema, incluyendo archivos de datos ensambladores, compiladores y programas de aplicacin; mediante el uso de polticas de acceso predeterminadas, obliga a cada archivo a cumplir las restricciones de acceso. Etc. asigna el como asignar la unidad de

procesamiento central (CPU); otra funcin tambin es de controlar el

16

Estos administradores no solo cumplen sus tareas individuales. Tambin deben ser capaces de trabajar en armona con los otros administradores. A continuacin programa. 1. El administrador de dispositivos recibe impulsos elctricos del teclado, codifica el tecleo para formar el comando y enva el comando a la interfaz de comando del usuario, donde el administrador del procesador lo valida. 2. Luego, el administrador del procesador manda un mensaje de reconocimiento para que aparezca en el monitor de video, de manera que quien escribi sepa que se envi el comando. 3. Cuando el administrador del procesador recibe el comando, determina si hay que traer el programa correspondiente de donde est almacenado o si ya est apropiado. 4. Si el programa est almacenado, el administrador de archivos debe calcular su localizacin exacta en el disco y pasar el mismo y registrar su ubicacin exacta en la memoria. 5. Una vez que el programa se halla en la memoria, el administrador de sta debe controlar su localizacin y progreso conforme lo ejecuta el administrador del procesador. 6. Cuando termina la ejecucin del programa, ste manda un mensaje de terminado de regreso al administrador del procesador. 7. Por ltimo, el administrador del procesador manda el mensaje de terminado de vuelta al administrador de dispositivos, que lo muestra en el monitor para que lo vea el usuario. Aunque sta es una demostracin simplificada de una operacin complicada, ilustra la increble precisin requerida por el sistema operativo. Recuerde, ningn administrador por s solo puede llevar cooperacin activa de las dems partes. Los sistemas operativos con capacidad de red tiene un quinto administrador 17 a cabo sus tareas sin la en la memoria, despus el cual notifica al administrador mostraremos los pasos que se presentan al ejecutar un

esencial, conocido como administrador de red que proporciona

una forma

conveniente para los usuarios, de compartir recursos y al mismo tiempo, controlar su acceso a los mismos. Estos recursos incluyen hardware y software; a continuacin se muestra la figura 1.3, donde se observa una pirmide de cinco lados (base).

ADMINISTRADOR DE PROCESADOR ADMINISTRADOR DE MEMORIA ADMINISTRADOR DE DISPOSITIVOS ADMINISTRADOR DE RED ADMINISTRADOR DE ARCHIVOS

Figura 1.3: Sistemas Operativos para Red.

Para apreciar la funcin del sistema operativo, es necesario definir los aspectos esenciales del hardware del sistema de la computadora, la maquina fsica y sus componentes electrnicos, incluyendo los chips de memoria, los dispositivos de entrada/salida, los dispositivos de almacenamiento y la unidad de procesamiento central. La memoria principal es donde se almacena los datos y las instrucciones para ser procesados. Los dispositivos de entrada/salida, incluyen toda la unidad perifrico del sistema, como impresora, unidad de discos, unidades de CD, dispositivos de cinta magntica, etc. El CPU es el cerebro que apoyado en la circuitera electrnica. Controla la interpretacin y ejecucin de las instrucciones. En esencia controla la operacin de la totalidad de sistemas de cmputo, as como se ilustra en la figura. 1.4.

18

Pantalla de video

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

Unidad aritmtica y lgica Registros Bus de Control

mdem

Control Interno

CPU

Interfaz paralela
Impresora

Interfaz de teclado

teclado

Figura 1.4: Hardware del sistema de cmputo.

1.2. TIPOS DE SISTEMAS OPERATIVOS Los sistemas operativos para las computadoras grandes y pequeas 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 hbridos.

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 agrupacin de las tarjetas en un paquete y se corra todo el paquete a travs de un lector de tarjetas como un grupo (lote); la eficiencia del sistemas se media en produccin (cantidad de tareas completadas en un tiempo determinado (30 tareas / hora) este sistema no es comn actualmente Los Sistemas Interactivos (Sistemas de Tiempo Compartido).- Dan un tiempo de retorno ms rpido que los Sistemas de tiempo real, de los cuales hablaremos ms adelante. Se introdujeron para satisfacer las demandas de usuarios que necesitaban un tiempo de retorno rpido al eliminar los errores de sus programas, el S. O. requera el desarrollo de software de tiempo compartido, lo que permitira a cada usuario interactuar directamente con el sistema del computo va comandos introducidos a partir de una terminal de tipo mquina de escribir. El sistema operativo proporciona una retroalimentacin al usuario y el tiempo de respuesta se puede medir en minutos o en segundos, segn la cantidad de usuarios activos. Los Sistemas de Tiempo real, son lo ms rpido 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 mdico complicado, distribucin de electricidad y conmutacin telefnica. Un sistema de tiempo rela debe ser 100% sensible. El tiempo de respuesta se mide en fracciones de segundo, aunque esto en la prctica es un ideal que no se logra a menudo. Los sistemas hdricos, son una combinacin de sistemas en lotes e

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

procedimiento para ejecutar programas que no necesitan ayuda significativa

20

del operador. Muchos sistemas de cmputo grandes son hbridos Por lo tanto podemos concluir con las principales funciones del S. O: Es ocultar toda esta complejidad y brindar al programador un conjunto ms conveniente de instrucciones para trabajar. El S. O. ejecuta en modo central o modo de supervisin, con mxima prioridad y generalmente con proteccin por hardware. Los compiladores, editores y dems programas se ejecutan en modo usuario. El S. O. es la serie de programas, dispuestos ya sea en el software o en la memoria (microcdigo), que hacen al hardware utilizable. Los S. O. ponen el poder computacional bsico del hardware

convenientemente a disposicin 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 caractersticas 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 Operadores. Los Programadores de aplicaciones. Los Programadores de sistemas (administradores del S. O.). Los Programas. El Hardware. Los Usuarios.

El S. O. debe presentar al usuario el equivalente de una mquina extendida o mquina virtual que sea ms fcil de programar que el hardware subyacente.

1.3. HISTORIA DE LOS SISTEMAS OPERATIVOS - GENERACIONES Los S. O. han estado relacionados histricamente con la arquitectura de las computadoras en las cuales se ejecutan, razn por la cual su historia puede analizarse segn las siguientes generaciones y sus principales caractersticas: Generacin Cero (dcada de 1940): Carencia total de S. O. Completo acceso al lenguaje de mquina.

Primera generacin (1945-1955): tubos de vaci y conexiones. Carencia de S. O. En los aos cincuenta comienzan como transicin entre trabajos, haciendo la misma ms simple. Segunda Generacin (1955-1965): transistores y sistemas de procesamiento por lotes (batch): En los aos sesenta aparecen los S. O. para sistemas compartidos con: Multiprogramacin: varios programas de usuarios se encuentran al mismo tiempo en el almacenamiento principal, cambiando el procesador rpidamente de un trabajo a otro. Multiprocesamiento: varios procesadores se utilizan en un mismo

22

sistema para incrementar el poder de procesamiento. Posteriormente aparece la independencia de dispositivo: El programa del usuario especifica las caractersticas de los dispositivos que requieren los archivos. El S. O. asigna los dispositivos correspondientes segn los

requerimientos y las disponibilidades. Tercera Generacin (1965-1980): circuitos integrados y multiprogramacin: Difusin de la multiprogramacin: Particin de la memoria en porciones, con trabajos distintos en cada una de ellas. Aprovechamiento del tiempo de espera consecuencia de operaciones de E/S, para utilizar la CPU para otros procesos. memoria. Aparicin de tcnicas de spooling: Simultaneous Peripheral Operation On Line: operacin simultnea y en lnea de perifricos. Almacenamiento de trabajos de entrada y de salida en dispositivos transitorios rpidos (discos), para disminuir el impacto de los perifricos ms lentos. Son sistemas de modos mltiples, es decir que deben soportar sistemas de propsitos generales; son grandes y complejos pero muy poderosos. Interponen una capa de software entre el usuario y el hardware. Aparecen los lenguajes de control de trabajos, necesarios para especificar el trabajo y los recursos requeridos. Soportan timesharing (tiempo compartido), variante de la multiprogramacin con usuarios conectados mediante terminales en lnea, Proteccin por hardware del contenido de cada particin de

23

permitiendo la operacin en modo interactivo o conversacional. Aparecen los sistemas de tiempo real, que requieren tiempos de respuesta muy exigentes, especialmente para usos industriales o militares. Se difunden las computadoras de rango medio.

Cuarta Generacin (1980-1990): computadoras personales: Aparicin de software amigable con el usuario, destinado a usuarios no profesionales y con una interfase grfica muy desarrollada. Desarrollo de sistemas operativos de red y sistemas operativos distribuidos. Sistemas operativos de red: Los usuarios estn conscientes de la existencia de varias computadoras conectadas. Cada mquina ejecuta su propio S. O. local. Son similares a los S.O. de un solo procesador pero con el agregado de: a) Controlador de interfaz de la red y su software de bajo nivel. b) Software para conexin y acceso a archivos remotos, etc. Sistemas operativos distribuidos: Aparece ante los usuarios como un S. O. de un solo procesador, an cuando de soporte a varios procesadores. Los usuarios no son conscientes del lugar donde se ejecutan sus programas donde se encuentran sus archivos, ya que lo debe administrar el S. O. automticamente. Deben permitir que un programa se ejecute mediante varios procesadores a la vez, maximizando el paralelismo. Aparicin de emuladores de terminal para el acceso a equipos remotos desde computadoras personales (PC). Gran nfasis en la seguridad, en especial por el desarrollo de los sistemas de comunicaciones de datos. 24

El S. O. crea un ambiente de trabajo segn el concepto de mquina virtual, que lo asla del funcionamiento interno de la mquina.

Proliferacin de sistemas de bases de datos, accesibles mediante redes de comunicacin.

CAPTULO 2 ADMINISTRACIN DEL PROCESADOR

2.1. INTRODUCCIN Y DEFINICIONES SOBRE PROCESOS El concepto central de cualquier Sistema Operativo es el de proceso: una abstraccin de un programa en ejecucin tambin llamada tarea. No hay un acuerdo universal sobre una definicin de proceso, pero s algunas definiciones aceptadas tales como: Un programa que se est ejecutando. Una actividad asincrnica. El emplazamiento del control de un procedimiento que est siendo ejecutado. Aquella que se manifiesta por la existencia en el Sistema Operativo de un bloque de control de proceso. Es conocida como una tarea, es una instancia de un programa ejecutable. Aquella entidad a la cual son asignados los procesadores. La unidad despachable. Es una entidad activa que requiere un conjunto de recursos para llevar acabo su funcin, entre ellos un procesador y registros especiales. Una hebra de control es una porcin de un proceso que se puede ejecutar de manera independientemente. Por ejemplo, si su sistema permite que los procesos tengan una sola hebra de control y Ud. Desea una serie de imgenes 25

en el sitio web de un amigo, puede instruir al navegador (Brouser), para que establezca una conexin entre ambos sitios y descargar una imagen a la vez. Sin embargo, si su sistema permite que sus procesos tengan mltiples hebras de control, puede solicitar varias imgenes al mismo tiempo y el navegador o explorador establecer mltiples conexiones y descargar varias imgenes a la vez. El procesador, tambin conocido como CPU (central unit processor), es la parte de la maquina que lleva a caso los clculos y ejecuta los programas. En sistemas de multiprogramacin la cpu alterna de programa en programa, en un esquema de seudoparalelismo, es decir que la cpu ejecuta en cierto instante un solo programa, intercambiando muy rpidamente entre uno y otro. El paralelismo real de hardware se da en las siguientes situaciones: En ejecucin de instrucciones de programa con ms de un procesador de instrucciones en uso simultneamente. Con la superposicin de ejecucin de instrucciones de programa con la ejecucin de una o ms operaciones de entrada / salida. El objetivo es aumentar el paralelismo en la ejecucin. El modelo de procesos posee las siguientes caractersticas: Todo el software ejecutable, inclusive el Sistema Operativo, se organiza en varios procesos secuenciales o procesos. Un proceso incluye al programa en ejecucin y a los valores activos del contador, registros y variables del mismo. Conceptualmente cada proceso tiene su propia cpu virtual. Si la cpu alterna entre los procesos, la velocidad a la que ejecuta un proceso no ser uniforme, por lo que es necesario aclarar lo siguiente: Que los procesos no deben programarse con hiptesis implcitas acerca del tiempo. Que normalmente la mayora de los procesos no son afectados por la multiprogramacin subyacente de la cpu o las velocidades

26

relativas de procesos distintos. Un proceso es una actividad de un cierto tipo, que tiene un programa, entrada, salida y estado. Un solo procesador puede ser compartido entre varios procesos con cierto algoritmo de planificacin, el cual determina cundo detener el trabajo en un proceso y dar servicio a otro distinto. Figura 2.1, y 2.2. En cuanto a las jerarquas de procesos es necesario sealar que los Sistemas Operativos deben disponer de una forma de crear y destruir procesos cuando se requiera durante la operacin, teniendo adems presente que los procesos pueden generar procesos hijos mediante llamadas al Sistema Operativo, pudiendo darse ejecucin en paralelo. Respecto de los estados del proceso deben efectuarse las siguientes consideraciones: Cada proceso es una entidad independiente pero frecuentemente debe interactuar con otros procesos. Los procesos pueden bloquearse en su ejecucin porque: Desde el punto de vista lgico no puede continuar porque espera datos que an no estn disponibles. El Sistema Operativo asign la cpu a otro proceso. Los estados que puede tener un proceso son: En ejecucin: utiliza la cpu en el instante dado. Listo: ejecutable, se detiene en forma temporal para que se ejecute otro proceso. Bloqueado: no se puede ejecutar debido a la ocurrencia de algn evento externo. Son posibles cuatro transiciones entre estos estados; tal como se muestra en la figura 2.1. y 2.2.
UN CONTADOR DE PROGRAMA

A B C D

ALTERNADOR DE PROCESOS MODELO CONCEPTUAL DE CUATRO 27 PROCESOS SECUENCIALES INDEPENDIENTES


CUATRO CONTADORES DE PROGRAMA

Figura 2.1: Multiprogramacin de 4 programas.


TRANSACCIONES ENTRE LOS ESTADOS

EN

1. El proceso se bloquea en espera de datos.

EJECUCIN

2 3

2. El planificador elige otro proceso. 3. El planificador elige este proceso. 4. Los datos estn disponibles.

4
BLOQUEAD O LISTO

Figura 2.2: Un proceso puede estar en ejecucin, bloqueado o listo.

2.2. ESTADOS DE PROCESOS Durante su existencia un proceso pasa por una serie de estados discretos, siendo varias las circunstancias que pueden hacer que el mismo cambie de estado. Debido a ello se puede establecer una Lista de Listos para los procesos listos y una Lista de Bloqueados para los bloqueados. La Lista de Listos se mantiene en orden prioritario y la Lista de Bloqueados est desordenada, ya que los procesos se desbloquean en el orden en que tienen lugar los eventos que estn esperando. Al admitirse un trabajo entre el sistema se crea un proceso equivalente y es insertado en la ltima parte de la Lista de Listos. La asignacin de la cpu al primer proceso de la Lista de Listos se denomina Despacho, que es ejecutado por una entidad del Sistema Operativo llamada

28

Despachador. El Bloqueo es la nica transicin de estado iniciada por el propio proceso del usuario, puesto que las otras transiciones son iniciadas por entidades ajenas al proceso. La manifestacin de un proceso en un Sistema Operativo es un Bloque de Control de Proceso (PCB) con informacin que incluye: Estado actual del proceso. Identificacin nica del proceso. Prioridad del proceso. Apuntadores para localizar la memoria del proceso. Apuntadores para asignar recursos. rea para preservar registros.

Cuando el Sistema Operativo cambia la atencin de la cpu entre los procesos, utiliza las reas de preservacin del PCB para mantener la informacin que necesita para reiniciar el proceso cuando consiga de nuevo la cpu. Los sistemas que administran los procesos deben poder crear, destruir, suspender, reanudar, cambiar la prioridad, bloquear, despertar y despachar un proceso. La creacin de un proceso significa: Dar nombre al proceso. Insertar un proceso en la lista del sistema de procesos conocidos. Determinar la prioridad inicial del proceso. Crear el bloque de control del proceso. Asignar los recursos iniciales del proceso.

Un proceso puede crear un nuevo proceso, en cuyo caso el proceso creador se denomina proceso padre y el proceso creado proceso hijo y se obtiene una estructura jerrquica de procesos. La destruccin de un proceso implica: 29

Borrarlo del sistema. Devolver sus recursos al sistema. Purgarlo de todas las listas o tablas del sistema. Borrar su bloque de control de procesos.

Un proceso suspendido no puede proseguir hasta que otro proceso lo reanude. Reanudar (reactivar) un proceso implica reiniciarlo en el punto donde fue suspendido. La destruccin de un proceso puede o no significar la destruccin de los procesos hijos, segn el Sistema Operativo. Generalmente se denomina Tabla de Procesos al conjunto de informacin de control sobre los distintos procesos.

2.3. PROCESAMIENTO DE INTERRUPCIONES Una interrupcin es un evento que altera la secuencia en que el procesador ejecuta las instrucciones; es un hecho generado por el hardware del computador. Cuando ocurre una interrupcin, el Sistema Operativo: Obtiene el control. Salva el estado del proceso interrumpido, generalmente en su bloque de control de procesos. Analiza la interrupcin. Transfiere el control a la rutina apropiada para la manipulacin de la interrupcin. Una interrupcin puede ser iniciada por un proceso en estado de ejecucin o por un evento que puede o no estar relacionado con un proceso en ejecucin. Generalmente las interrupciones se pueden clasificar por tipos segn el siguiente Detalle: SVC (llamada al supervisor): es una peticin generada por el usuario 30

para un servicio particular del sistema, por ejemplo, realizacin de Entrada / Salida u obtencin de ms memoria. Entrada / Salida: son iniciadas por el hardware de Entrada / Salida, indicando a la cpu que ha cambiado el estado de un canal o dispositivo, por ejemplo, finalizacin de Entrada / Salida u ocurrencia de un error.

Tipo de Interrupcin SVC Entrada / Salida Externa De Reinicio De Verificacin de Programa De Verificacin de Mquina

Descripcin 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.1: Tipos de interrupciones.

Externas: son causadas por distintos eventos, por ejemplo, expiracin de un cuanto en un reloj de interrupcin o recepcin de una seal de otro procesador en un sistema multiprocesador.

De reinicio: ocurren al presionar la tecla de reinicio o cuando llega una instruccin de reinicio de otro procesador en un sistema multiprocesador.

De verificacin de programa: son causadas por errores producidos durante la ejecucin de procesos, por ejemplo: Un intento de dividir por cero. Un intento de un proceso de usuario de ejecutar una instruccin privilegiada. Un intento de ejecutar un cdigo de operacin invlido. verificacin de mquina: son ocasionadas por un mal

De

funcionamiento del hardware; en la tabla 2.1. se puede observar los diferentes tipos de interrupciones. 31

El

Sistema

Operativo

incluye

rutinas

llamadas

Manipuladores

de

Interrupciones(IH) para procesar cada tipo diferente de interrupcin. Cuando se produce una interrupcin el Sistema Operativo efecta las siguientes acciones: Salva el estado del proceso interrumpido. Dirige el control al manipulador de interrupciones adecuado. Se aplica la tcnica de Cambio de Contexto.

Los Sistemas Operativos instrumentan informacin de control que puede aparecer como las Palabras de Estado de Programa (PSW), las cuales controlan el orden de ejecucin de las instrucciones y contienen informacin sobre el estado del proceso. Existen tres tipos de PSW, que son la actual, la nueva y la vieja. La PSW Actual almacena la direccin de la prxima instruccin que ser ejecutada e indica los tipos de instrucciones actualmente habilitadas e inhabilitadas. En un sistema uniprocesador existe: Solo una PSW actual. Seis PSW nuevas (una para cada tipo de interrupcin). Seis PSW viejas (una para cada tipo de interrupcin).

La PSW nueva para un tipo de interrupcin dado contiene la direccin en el hardware donde reside el manipulador de interrupciones para este tipo especfico. Cuando ocurre una interrupcin para la cual el procesador no est inhabilitado, 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 interrupcin. Al almacenar la PSW nueva en la PSW actual, para este tipo de

32

interrupcin. Luego de este intercambio de PSW: La PSW actual contiene la direccin del manipulador de interrupcin adecuado. El manipulador de interrupciones procesa la interrupcin. Luego de procesar la interrupcin, la cpu es enviada al: a) Proceso que estaba en ejecucin en el momento de la interrupcin. b) Proceso de listo de ms alta prioridad. La accin precedente depende de si el proceso de interrupcin es: a) Apropiativo : obtiene la cpu solo si no hay procesos de listos. b) No apropiativo : obtiene de nuevo la cpu.

2.4. EL NCLEO DEL SISTEMA OPERATIVO El ncleo del Sistema Operativo controla todas las operaciones que implican procesos y representa solo una pequea porcin del cdigo de todo el Sistema Operativo pero es de amplio uso. Generalmente permanece en el almacenamiento primario. El proceso de interrupciones se incluye en el ncleo ya que debe ser rpido (especialmente en sistemas multiusuario), para optimizar el uso de los recursos del sistema y proveer tiempos de respuesta aceptables a los usuarios interactivos. El ncleo inhabilita las interrupciones mientras responde a una interrupcin. Las interrupciones son habilitadas de nuevo despus de completar el proceso de una interrupcin. El ncleo del Sistema Operativo generalmente realiza las siguientes funciones: Manipulacin de interrupciones. Creacin y destruccin de procesos.

33

Cambio de estados de procesos. Despacho. Suspensin y reanudacin de procesos. Sincronizacin de procesos. Comunicacin entre procesos. Manipulacin de bloques de control de proceso. Soporte de las actividades de Entrada / Salida. Soporte de la asignacin y designacin de almacenamiento. Soporte del sistema de archivos. Soporte de un mecanismo de llamada / regreso al procedimiento. Soporte de ciertas funciones contables (estadsticas) del sistema.

2.5. POLTICAS DE PLANIFICACIN DE PROCESOS En un entorno de multiprogramacin existen por lo general ms trabajos por ejecutar de los que se pueden correr en un momento dado. Antes que el sistema operativo pueda planificarlos, necesita resolver tres limitaciones del sistema: 1) Existe un nmero finito de recursos (como unidades de disco, impresoras y unidades de cinta). 2) Algunos recursos, una vez asignados, no pueden recibir otro trabajo (como las impresoras). 3) Algunos recursos requieren la intervencin del operador esto es, no se pueden reasignar de manera automtica de un trabajo a otro (como las unidades de cinta). Cul es una buena poltica de planificacin de procesos? Se presentan a la mente varias opciones, pero note que en la lista siguiente algunas se contradicen. Maximizar la Produccin ejecutando tanto trabajos como sea posible en 34

un tiempo

dado. Esto es fcil

si se ejecuta trabajos breves o sin

interrupciones. Minimizar el Tiempo de Respuesta. Contestando rpidamente solicitudes interactivas, esto sera factible ejecutando nada ms trabajos interactivos y dejando que los trabajos por lotes esperen hasta que la carga interactiva desaparezca. Minimizar el Tiempo de Retorno. Introduciendo y sacando con rapidez trabajo completo del sistema. Para esto se corren primero los trabajos por lotes (porque estos se pueden agrupar para ejecutarse con mayor eficiencia que los trabajos interactivos). Minimizar el Tiempo de Espera sacando los trabajos de cola de LISTO tan rpido como sea posible. Esto slo es posible reduciendo en nmero de usuarios permitidos en el sistema, de manera que el CPU est disponible cada que un trabajo entre en cola de LISTOS. Maximizar la Eficiencia de la CPU manteniendo al CPU ocupado al 100 por ciento del tiempo. Esto solo es viable ejecutando trabajos limitados por el CPU (no por entradas y salidas). Asegurar la Justicia para todos los Trabajos dando a todos una cantidad igual de tiempo de CPU y de E/S. Esto es posible sin dar tratamiento especial alguno a los trabajos, sean cuales sean sus caractersticas de procesamiento o prioridad. Como podemos ver, si el sistema da preferencia a un tipo de usuario, perjudica a otro y no utiliza sus recursos con eficiencia. La decisin final es del diseador del sistema, que debe definir qu criterios son de mayor importancia para dicho sistema. Por ejemplo, usted podra decidir Maximizar la utilizacin del CPU, minimizar el tiempo de respuesta y equilibrar el uso de los componentes de sistema a travs de una mezcla de procesos limitados por entradas y salida y CPU. Por lo tanto, seleccionara la poltica de planificacin que satisfaga con mayor precisin sus criterios.

2.6. NIVELES DE PLANIFICACIN DEL PROCESADOR 35

Se consideran tres niveles importantes de planificacin, los que se detallan a continuacin: Planificacin de alto nivel: Tambin se denomina Planificacin de trabajos. Determina a qu trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificacin de admisin. Planificacin de nivel intermedio: cpu. Responde a fluctuaciones a corto plazo en la carga del sistema y efecta suspensiones y activaciones (reanudaciones) de procesos. Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema. Planificacin de bajo nivel: Determina a qu proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo, es decir que despacha la cpu al proceso. La efecta el Despachador del Sistema Operativo, el que opera muchas veces por segundo y reside siempre en el almacenamiento primario. Los distintos Sistemas Operativos utilizan varias Polticas de Planificacin, que se instrumentan mediante Mecanismos de Planificacin; tal como se muestra en la figura 2.3.
TRABAJOS ESPERANDO ENTRADA ENTRADA DE TRABAJOS TRABAJOS ESPERANDO INICIACION INICIACIN DE TRABAJOS TRABAJOS SUSPEND. ESPERANDO ACTIVAC. SUSPENDER PROCESOS ACTIVOS PLANIFICACIN DE BAJO NIVEL PLANIFICACIN DE NIVEL INTERMEDIO PLANIFICACIN DE ALTO NIVEL

Determina a qu procesos se les puede permitir competir por la

ACTIVAR PROCESOS EN EJECUCIN

DESPACHO

36
TERMINAR

TERMINADO

Figura 2.3: Niveles de planificacin del procesador.

2.7. OBJETIVOS DE LA PLANIFICACIN Los objetivos de la planificacin del procesador son los siguientes e involucran a los conceptos detallados seguidamente: Ser justa: Todos los procesos son tratados de igual manera. Ningn proceso es postergado indefinidamente.

Maximizar la capacidad de ejecucin: Maximizar el nmero de procesos servidos por unidad de tiempo.

Maximizar el nmero de usuarios interactivos que reciban unos tiempos de respuesta aceptables: En un mximo de unos segundos.

Ser predecible: Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema.

Minimizar la sobrecarga: No suele considerarse un objetivo muy importante. Equilibrar el uso de recursos: Favorecer a los procesos que utilizarn recursos infrautilizados. Equilibrar respuesta y utilizacin: La mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientes cuando se necesitan, pero la

37

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

38

Moderadamente reducido de servicio a todos los procesos. Muchas de estas metas se encuentran en conflicto entre s, por lo que la planificacin se convierte en un problema complejo.

2.8. CRITERIOS DE PLANIFICACIN Para realizar los objetivos de la planificacin, un mecanismo de planificacin debe considerar lo siguiente. La limitacin de un proceso a las operaciones de Entrada / Salida: cuando un proceso consigue la cpu, la utiliza solo brevemente antes de generar una peticin de Entrada/ Salida?. La limitacin de un proceso a la cpu: cuando un proceso obtiene la cpu, tiende a usarla hasta que expira su tiempo?. Si un proceso es por lote (batch) o interactivo: los usuarios interactivos deben recibir inmediato servicio para garantizar buenos tiempos de respuesta. Qu urgencia tiene una respuesta rpida?: Por ejemplo un proceso de tiempo real de un sistema de control que supervise una refinera de combustible requiere una respuesta rpida, ms rpida que la respuesta requerida, por un proceso en lotes (batch) que deber entregarse al da siguiente. La prioridad de un proceso: A mayor prioridad mejor tratamiento. Frecuentemente un proceso genera fallas (carencias) de pgina: Probablemente los procesos que generan pocos fallos de pgina hallan acumulado sus Conjuntos de trabajo en el almacenamiento principal. Los procesos que experimentan gran cantidad de fallos de pgina an no han establecido sus conjuntos de trabajo. Un criterio indica favorecer a los procesos que han establecido sus conjuntos de trabajos. 39

Otro criterio indican favorecer a los procesos con una taza alta de fallos de pgina ya que rpidamente generaran una peticin de E/S.

Frecuentemente un proceso ha sido apropiado por otro de ms alta prioridad, lo cual significa los siguiente: A menudo los procesos apropiados deben recibir un tratamiento menos favorable. Cada vez que el Sistema Operativo asume la sobrecarga para hacer ejecutar este proceso, el corto tiempo de ejecucin antes de la apropiacin no justifica la sobrecarga de hacer ejecutar al proceso en primer lugar.

Cunto tiempo de ejecucin real ha recibido el proceso?: un criterio considera que debe ser favorecido un proceso que ha recibido muy poco tiempo de cpu.

Cunto 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 ejecucin mnimo para su terminacin, pero pocas veces es posible conocer la cantidad de tiempo adicional que cada proceso necesita para terminar.

2.9. PLANIFICACIN APROPIATIVA VERSUS NO APROPIATIVA Las Disciplinas de Planificacin pueden ser Apropiativas o No Apropiativas. Las principales caractersticas de la planificacin apropiativa son las siguientes, ver figura 2.4. rpida. Es importante para garantizar buenos tiempos de respuesta en sistemas interactivos de tiempo compartido. Tiene un costo en recursos, ya que el intercambio de contexto implica sobrecarga y adems requiere mantener muchos procesos en el Es til cuando los procesos de alta prioridad requieren atencin

40

almacenamiento principal, en espera de la cpu, lo que tambin implica sobrecarga. Las principales caractersticas de la planificacin no apropiativa son las siguientes: cortos. Logra ms equidad en el tratamiento de los procesos. Logra hacer ms predecibles los tiempos de respuesta puesto que los trabajos nuevos de prioridad alta no pueden desplazar a los trabajos en espera. El diseo de un mecanismo apropiativo hace necesario considerar las arbitrariedades de casi cualquier esquema de prioridades, en razn de que muchas veces las propias prioridades no son asignadas en forma significativa. El mecanismo debera ser sencillo pero efectivo y significativo, a continuacin se muestra la tabla 2.2. donde se describe los conceptos de apropiativa y no apropiativa. Signifique los trabajos largos hacen esperar a los trabajos

Disciplina Apropiativa No Apropiativa

Descripcin Una vez que se le ha otorgado la cpu a un proceso, le puede ser retirada. Una vez que se le ha otorgado la cpu a un proceso, no le puede ser retirada

Tabla 2.2: Disciplinas de planificacin del procesador.

41

Figura 2.4: Tipos de planificacin del procesador.

2.10. ALGORITMOS DE PLANIFICACIN DE PROCESOS El planificador de procesos se apoya trabajos por el sistema. Los primeros sistemas operativos utilizaban polticas no apropiativas, en un algoritmo de planificacin de

procesos, basado en una poltica especifica para asignar al CPU y mover los

diseadas para mover los trabajos por lotes a travs del sistema con tanta eficiencia como era posible. La mayor parte de los sistemas actuales, con su nfasis en el uso interactivo del tiempo de respuesta, utilizan un algoritmo que se ocupa de las solicitudes inmediatas de usuarios interactivos. Aqu presentamos seis algoritmos de planificacin de procesos de uso muy difundido.

2.10.1. PLANIFICACIN PRIMERO EN ENTRAR, PRIMERO EN SERVIRSE Primero en entrar, primero en ervirse (FCFS) es un algoritmo de planificacin no apropiativa que maneja los trabajos de acuerdo con su tiempo de arribo: conforme entran son servicios. Es un algoritmo muy simple de implementar, porque utiliza un tipo de cola FIFO. Este algoritmo est bien

42

para la mayor parte de los sistemas por lotes, pero es inaceptable para los sistemas interactivos porque cortos de respuesta. Con los 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, despus que ha procesado todos los trabajos que existan en la cola. En un sistema FCFS ciento por ciento, no existen colas de BLOQUEADO (cada trabajo se ejecuta hasta su terminacin), aunque pueden haber sistemas en que el control (contexto) pasa a una espera natural (solicitud de E/S), luego de lo cual el trabajo se reanuda al terminar la operacin de E/S. Los ejemplos que siguen suponen un entorno FCFS por completo (sin multiprogramacin) El tiempo de retorno es impredecible con la FCFS; considere las siguientes tres tareas: poltica los usuarios interactivos deben tener tiempos

TRABAJO CICLO DE CPU A B C 15 2 1

Para cada trabajo, el ciclo CPU contiene tanto el uso real del CPU como las solicitudes de E/S: el tiempo de ejecucin total. La lnea de tiempo (diagrama de Gantt) ilustrada en la figura 2.5. usa un algoritmo FCFS con una secuencia de llegada A, B, C.

Trabajo A 0 18 17 15

Trabajo B

Trabajo C

Figura 2.5: Diagrama de secuencia para los trabajos de A,B,C que utiliza el algoritmo FCFS.

43

Si los tres trabajos llegan prcticamente de manera simultnea, podemos calcular que el tiempo de retorno para el trabajo A es 15, para el trabajo B, 17 y para C, 18. Por lo que el tiempo de retorno promedio es:

(15 + 17 + 18)
3

= 16.67

Sin embargo, si los trabajos llegasen en un orden diferente, digamos C, B, A, los resultados seran segn se muestra en la figura 2.6, en caso de usar el mismo algoritmo FCFS. Trabajo 0 C 1 Trabajo B 3 Trabajo A 18

Figura 2.6: Diagrama de secuencia para los trabajos C,B,A con el algoritmo FCFS.

En este ejemplo el tiempo de retorno para el trabajo A es 18, B es 3, y para C es 1.el tiempo promedio total es:

(18 +3 +1)
3

= 7.3

Esto es una verdadera mejora sobre la primera secuencia. Por desgracia, estos dos ejemplos ilustran la desventaja principal del uso del concepto FCFS: los tiempos promedio de retorno varan de una manera muy amplia y rara vez se minimizan. De hecho, cuando hay tres trabajos en la cola de LISTO, el sistema slo tiene una oportunidad en seis de ejecutar los trabajos en la secuencia ms ventajosa (C,B,A). Con cuatro trabajos las oportunidades pasan a una en 24 y as sucesivamente.

2.10.2. PLANIFICACIN SIGUE EL TRABAJO MS CORTO Sigue el trabajo ms corto (SJN). Es un algoritmo de planificacin no

apropiada (tambin conocido como trabajo ms corto primero o SJF ) que maneja los trabajos con base en la duracin de su ciclo de CPU. Es muy fcil de implementar en entornos por lotes, donde casa usuario da por adelantado el tiempo estimado de CPU requerido par ejecutar el trabajo al inicio del mismo. Sin embargo, no funciona en sistemas interactivos, porque los usuarios 44

no prevn el tiempo de CPU requerido para ejecutar sus trabajos. Por ejemplo, a continuacin hay cuatro trabajos pro lotes, todos en la cola de LISTO, para la cual el ciclo de CPU, o tiempo de ejecucin, se estima como sigue:

Trabajo A B C D

Ciclado de CPU 5 2 6 4

El algoritmo SJN figura 2.7.

revisara los cuatro trabajos y los programara para

procesamiento en este orden B, D, A, C, la lnea de tiempo aparecen en la

Trabajo 0 B 2

Trabajo D 6

Trabajo A 11

Trabajo C 17

Figura 2.7: Diagrama de tiempo de la secuencia de tareas B, D, A, C, con el algoritmo SJN.

El tiempo de retorno promedio es:

( 2 + 6 +11 +17) )
4

= 9.0

Tommonos un minuto para ver por qu este algoritmo puede demostrar ser ptimo y dar el tiempo de retorno promedio mnimo. Usaremos el ejemplo de arriba para deducir una formula de tipo general. En la figura 2.7. Podemos ver que el trabajo B termina en su tiempo dado (2), el trabajo D acaba en su tiempo dado, ms el tiempo que tuvo que esperar para que se ejecutara B (4+2), el trabajo A finaliza en su tiempo dado ms los tiempos de D mas B (5+4+2) y el trabajo C termina en su tiempo dado ms de los tres anteriores (6+5+4+2), por lo que al calcular el promedio 45

tenemos:

[ ( 2) + ( 4 + 2) + ( 5 + 4 + 2) + ( 6 + 5 + 4 + 2) ] = 9.0
4
Como puede ver el tiempo para el primer trabajo aparece en la ecuacin

cuatro veces una para cada trabajo en forma similar, el tiempo para el segundo trabajo aparece 3 veces (nmero de trabajos menos uno); el tiempo del tercero, dos (trabajos menos dos), y el tiempo del cuarto, una (cantidad de trabajos menos 3). As pues la ecuacin anterior se puede escribir de la forma:

(
Dado que el tiempo

4 * 2 + 3 * 4 + 2 * 5 + 1* 6 ) =9.0 4

para el primer trabajo aparece cuatro

veces en la

ecuacin tiene cuatro veces ms efecto sobre el tiempo promedio que la duracin del cuarto trabajo, que slo figura una vez. As pues, en el primer trabajo requiere el tiempo de calculo ms breve, seguido en orden por los dems trabajos, ordenadas desde el lapso mas corto hasta el ms largo, el resultado ser el promedio ms pequeo posible.

2.10.3. PLANIFICACIN POR PRIORIDAD La planificacin por Prioridad, es un algoritmo no apropiativo y uno de los algoritmos de planificacin ms comunes en sistemas por lotes, aun cuando para algunos usuarios pueden dar un tiempo de retorno ms lento. Este algoritmo da tratamiento preferencial a los trabajos importantes. Permite procesar primero y en forma interrumpida los programas con la prioridad ms elevada hasta que sus ciclos CPU (tiempo de ejecucin se hayan completado o hasta que ocurra una espera natural. Si hay dos o ms trabajos con prioridad igual en la cola de LISTOS, el procesador se asigna a la que lleg primero (primero en entrar, primero en servirse dentro de la prioridad).

2.10.4. PLANIFICACIN TIEMPO RESTANTE MS BREVE El tiempo restante ms breve (SRT) es la versin apropiativa del algoritmo

46

SJN. El procesador se asigna al trabajo que est por terminar pero incluso este trabajo se puede hacer a un lado si un trabajo ms reciente en la cola de LISTO tiene un tiempo de terminacin ms breve. Este algoritmo no es implementable en un sistema interactivo, porque requiere saber por adelantado cunto tiempo del CPU representa la terminacin de ada trabajo. A menudo se utiliza en entornos por lotes, cuando es deseable dar preferencia a trabajos breves, aun cuando el SRT supone ms carga general que el SJN, 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 estn intercambiando (conmutando) en el momento de la apropiacin (no necesariamente hacia el disco, aunque esto tambin puede ocurrir). Un ejemplo de la figura 2.8. muestra la forma en que funciona el algoritmo SRT con cuatro trabajos que han llegado en rpida sucesin (con una diferencia de un ciclo de CPU).

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. El trabajo D es el siguiente en correr ya que necesita menos tiempo de CPU para terminar que el trabajo A.

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

Figura 2.8: Diagrama de tiempo de la secuencia de trabajos A,B,C,D con el algoritmo apropiante SRT.

En ete caso el tiempo de retorno es el tiempo de teminacin de cada trabajo, 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.25
4 Com se compara lo anterior con el problema que utiliza la poltica SJN no apropiativa? La figura 2.9 utiliza la misma situacin con SJN.

Trabajo 0 A 7 10 14 6

Trabajo Trabajo C B

Trabajo D

Figura 2.9: Lnea de tiempo para la misma secuencia de trabajos A,B,C,D, con el algoritmo SJN no apropiativa.

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.75

Note en la figura 2.9. que inicialmente A es el nico trabajo

en la cola de

LISTO, por lo que se ejecuta primero y contina hasta que est temrinando porque SJN es un algoritmo no apropiatio. El sigueinte trabajo que se va a 48

ejecutar es C, porque cuando termina A (en el tiempo 6) han llagado los dems trabajos (B, C, y D) de estos tres C tiene un ciclo de CPU ms breve, por lo que es el siguiente que se atiende, despus B y por ltimo D. Por lo tanto, con este ejemplo , SRT en 6.25 es mas rpido 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 informacin de posterior, cuando se debe guardar en su PCB para uso

prosiga su ejecucin 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 informacin 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. PLANIFICACIN ROUND ROBIN Round Robin. Es un logaritmo de planificacin de procesos apropiante muy difundido en sistemas interactivos, ya que es fcil de implementar y no se basa en las caracteristicas del trabajo sino en una fraccin predeterminada de tiempo que se da a cada trabajo, para asegurar que los procesos activos compartan por igual el CPU y que ningn trabajo lo monopolice. Esta fraccin de tiempo se conoce como quatum de tiempo y su tamao es vital para el desempeo del sistema. Por lo general varan 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 informacin se guarda en su PCB. En caso que le ciclo de CPU del trabajo sea ms 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 informacin 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 asignacin de CPU. El ejemplo de la figura 2.10. ilustra un logaritmo de round robin con una fraccin 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 ejecucin 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 ms aprisa. La eficiencia de round robin depende del tamao de quantum en relacin 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 pequeo, la cantidad de cambios de contexto disminuyen la velocidad de ejecucin de los trabajos y la carga general se inrementa en forma dramtica, 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 tamao 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

contexto, porque el trabajo se retira cada que expira el tiempo de quantum; la carga general se vuelve costosa, y por consiguiente el tiempo de retorno sufre. Cul es el tamao ms adecuado del tiempo de quantum? La respuesta debe ser predecible en este momento: depende del sistema. Si se trata de un entorno interactivo, se espera que el sistema responda con rapidez a sus usuarios, en especial cuando hacen solicitudes simples. Si se trata de un sistema por lotes, el tiempo de respuesta no es un factor (el tiempo de retorno lo es) y la carga general adquiere importancia.

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.11: Cambios de contexto de el trabajo A con tres quantum de tiempo. En a) el trabajo termina antes que expire el tiempo de quantum en b) y c) el quantum expira primero e interrupmpe el trabajo.

Existen dos reglas prcticas 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 terminacin. 2) Debe ser por lo menos cien veces mas largo que el tiempo requerido para llevar a cabo un cambio de contexto. Estas reglas se utulizan en algunos sistemas, pero no son inflexibles. 52

2.10.6. PLANIFICACIN DE COLAS DE MULTIPLES NIVELES Las colas de multiples niveles no son en realidad un algoritmo de planificacin por separado, 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 carcteristica comn. 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. 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, el planificador de procesos seleccionaria de manera alterna trabajos de cada cola, para mantener el sistema equilibrado. Un tercer ejemplo comn es el utilizado en un entorno hibrido, que acepta trabajos por lotes e interactivos. 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. Todos estos ejemplos tienen algo en comn: la poltica de planificacin se basa en algn esquema predeterminado, que da un tratamiento especial a los trabajos de cada cola. En cada cola, los trabajos se asignan de manera FCFS. A continuacin se compara los diferentes algoritmos presentados en este capitulo. ver tabla 2.3. Algoritmo FCFS SJN Planificacin por prioridad SRT Tipo de Poltica 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 conmutacin de 53 Ventajas Facil de implementar Minimiza el tiempo promedio de espera Asegura la rpida terminacin de trabajos importantes Asegura la rpida terminacin de trabajos cortos

Lotes Lotes

contexto Round Robin Aporpiativo Interactivo Requiere seleccionar un buen tiempo de quantum. Provee tiempos de respuesta razonables para usuarios interactivos; asi como asignacin adecuada de CPU Esquema flexible; se opone al aplazamiento indefinido con el envejecimiento u otro movimiento en cola; 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 mltiples niveles

Apropiativo No apropiativo

Lotes/ interactivo

Sobrecarga incurrida por revisin constante de colas

Tabla 2.3: Comparacin de los algoritmos de planificacin.

CAPITULO 3 ADMINISTRACIN DE PROCESOS CONCURRENTES

3.1. PROCESOS CONCURRENTES ASINCRNICOS Los procesos son concurrentes si existen al mismo tiempo. Los procesos concurrentes pueden funcionar con total independencia unos de otros, o pueden ser asincrnicos, lo cual significa que requieren una sincronizacin y cooperacin ocasionales. El asincronismo es un tpico complejo; en este trabajo se exponen la organizacin y administracin de sistemas que soportan procesos concurrentes asincrnicos. Se presentan muchos problemas importantes de asincronismo. Sus soluciones se presentan como programas concurrentes codificados utilizando el lenguaje Pascal concurrente desarrollado inicialmente por Wirth (Pascal-S), extendido por Ben Ari y modificado en la Universidad de Bradford (UK) por G.L. Davies (Pascal-FC).

54

3.2. PROCESAMIENTO EN PARALELO A medida que disminuyen tanto el tamao como el precio del hardware de las computadoras se ir produciendo una tendencia hacia el multiprocesamiento y la masificacin del paralelismo. Si ciertas operaciones pueden ser ejecutadas en paralelo de forma lgica, entonces las computadoras con mltiples procesadores las ejecutarn fsicamente en paralelo, aunque en el nivel de paralelismo se den miles o, tal vez, millones de actividades concurrentes. El procesamiento en paralelo es interesante por varias razones. La gente parece ms capaz de centrar su atencin en una sola actividad a la vez que de pensar en paralelo. (Intente leer dos libros al mismo tiempo, leyendo una lnea de un libro, una lnea del otro, la segunda lnea del primero, y as sucesivamente). Es difcil determinar cules actividades pueden ejecutarse o no en paralelo. Los programas en paralelo son mucho ms difciles de depurar que los programas secuenciales; despus de haber arreglado supuestamente un error, puede resultar imposible reconstruir la secuencia de eventos que han ocacionado el error. Por ello, sera en cierto modo inapropiado asegurar que se ha corregido el error. Los procesos asincrnicos deben interactuar ocasionalmente entre s, y esas interacciones pueden ser complejas. Trataremos varios ejemplos de interaccin de procesos en este trabajo.

3.3. UNA ESTRUCTURA PARA INDICAR EL PARALELISMO: COBEGIN/COEND Son muchas las construcciones de lenguajes de programacin para indicar paralelismo que han aparecido en la literatura. Estas implican pares de proposiciones como las siguientes: control). Una proposicin indicando que la ejecucin secuencial debe ser dividida entre varias secuencias de ejecucin en paralelo ( trayectoria de

55

Una proposicin indicando que ciertas secuencias de ejecucin en paralelo estn a punto de producirse y se reanudar la ejecucin secuencial.

Estas proposiciones ocurren en pares y suelen denominarse parbegin/parend (para comenzar y finalizar una ejecucin en paralelo), o cobegin/coend (para comenzar o finalizar una ejecucin concurrente). En este trabajo emplearemos cobegin/coend de acuerdo a la sintaxis del Pascal-FC. Su forma general es: cobegin proposicin 1; proposicin 2; : . proposicin n; coend

Supngase que un programa est ejecutando una sola secuencia de instrucciones cuando se encuentra con la construccin cobegin anterior. Esto determina que la trayectoria de control simple se divida en n trayectorias separadas de control, una por cada proposicin de la construccin cobegin/coend. Estas pueden ser proposiciones simples, llamadas a procedimientos, bloques de proposiciones secunciales delineados por begin/end, o combinaciones de stos. Cada una de las trayectorias de control individuales acaba por alcanzar y terminar al coend. Cuando todas las trayectorias de control paralelas llegan al final, se reanuda una trayectoria de control simple y el sistema prosigue ms all del coend. Como ejemplo, considrese el siguiente clculo de una raz de la ecuacin cuadrtica: x := ( -b + (b**2 - 4*a*c) ** 0.5) / (2*a) Esta asignacin puede ser evaluada en un procesador secuencial (poseedor de una instruccin de exponenciacin) de la siguiente manera:

56

1 2 3 4 5 6 7 8 9

b**2 4*a (4*a)*c (b**2) - (4*a*c) (b**2 - 4*a*c) ** 0.5 -b (-b) + ( (b**2 - 4*a*c)**0.5 ) 2*a (-b+(b**2-4*a*c)**0.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. En un sistema que soporte procesamientos en paralelo, la expresin puede evaluarse de la manera siguiente: 1 cobegin t1:= -b; t2:= b ** 2; t3:= 4 * a; t4:= 2 * a; coend 2 3 4 5 6 t5:= t3 * c; t5:= t2 - t5; t5:= t5 ** 0.5; t5:= t1 + t5; x:= t5 / t4;

Aqu se evalan en paralelo las cuatro operaciones contenidas dentro de la construccin cobegin/coend; las cinco operaciones restantes deben ser ejecutadas de forma secuencial. Al ejecutar los clculos en paralelo se reduce en gran medida el tiempo real de ejecucin.

57

3.4. EXCLUSIN MUTUA Considrese un sistema con varias terminales de tiempo compartido. Supngase que los usuarios acaban cada lnea, que teclean al sistema con un retorno de carro. Supngase que se desea supervisar continuamente el nmero total de lneas que los usuarios han introducido al sistema desde el comienzo del da, y que cada terminal est supervisada por un proceso diferente. Cada vez que uno de estos procesos recibe una lnea de la terminal de un usuario incrementa en 1 la variable global compartida NOLINEAS. Considrese lo que pasara si dos procesos intentaran incrementar NOLINEAS simultneamente. Supngase que cada proceso tiene su propia copia del cdigo: LOAD ADD NOLINEAS 1

STORE NOLINEAS Suponga que NOLINEAS tiene un valor de 2345. Suponga ahora que el primer proceso ejecuta las instrucciones LOAD y ADD, dejando as el valor de 2346 en un acumulador. Entonces el proceso pierde el procesador (debido a la terminacin de un quantum) en beneficio del segundo proceso. Este ltimo ejecuta ahora las tres instrucciones, ajustando as NOLINEAS con el valor 2346. Pierde el procesador y lo obtiene de nuevo el primer proceso, el cual contina con la ejecucin de la instruccin STORE, colocando tambin el valor 2346 en NOLINEAS. Debido al acceso incontrolado a la variable compartida NOLINEAS el sistema ha perdido la pista de una de las lneas, el total correcto debera ser 2347. A continuacin, se muestra el programa pro00 que simula este concepto as como diferentes corridas del mismo. El proceso uno mete 60 lneas mientras que el proceso dos mete 40. Por supuesto, la suma total de lneas debera ser 100, pero observe lo que pasa. - Pascal-FC for IBM PC compatibles - Compiler Version P5.2

58

G L Davies & A Burns, 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 0 var 0 0 0 (* El proceso uno contar 60 lineas *) 0 process uno; 0 var 0 0 0 begin 0 4 4 7 11 11 (* El proceso dos contar 40 lneas *) 11 process dos; 11 var 11 11 11 begin 11 15 15 18 22 for lin := 1 to 40 do begin nolineas := nolineas + 1 end lin: integer; for lin := 1 to 60 do begin nolineas := nolineas + 1 end lin: integer; nolineas: integer;

9 end; (* uno *)

20 end; (* dos *)

59

31 32 33 34 35 36 37 38 39

22 (* Programa principal *) 22 begin 22 25 26 30 30 35 nolineas := 0; cobegin uno; dos coend; writeln('Total de lneas =',nolineas)

39 end.

- Interpreter Version P5.3 Program pro00 Total de lneas = ... execution begins ... 57

Program terminated normally Type r and RETURN to rerun Program pro00 Total de lneas = ... execution begins ... 74

Program terminated normally Type r and RETURN to rerun Program pro00 Total de lneas = ... execution begins ... 78

Program terminated normally Type r and RETURN to rerun Program pro00 ... execution begins ...

60

Total de lneas =

76

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

Program terminated normally

Este problema puede solucionarse dndole a cada proceso acceso exclusivo a NOLINEAS. Mientras un proceso incrementa la variable compartida, los dems 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 dems hacer lo mismo al mismo tiempo. Esto se denomina exclusin mutua.

3.5. SECCIONES CRTICAS La exclusin mutua necesita ser aplicada slo cuando un proceso accesa a datos compartidos; cuando los procesos ejecutan operaciones que no estn 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 seccin crtica (o regin crtica). Esta claro que para prevenir el tipo de problema experimentado en la seccin anterior debe asegurarse que, cuando un proceso est en su seccin crtica, todos los dems procesos (o al menos aquellos que tengan acceso a los mismos datos compartidos) sean excluidos de sus propias secciones crticas. Mientras un proceso se encuentre en su seccin crtica, los dems procesos pueden continuar su ejecucin fuera de sus secciones crticas. Cuando un proceso abandona su seccin crtica, entonces debe permitrsele proceder a 61

otros procesos que esperan entra r en su propia seccin crtica (si hubiera un proceso en espera). La aplicacin de la exclusin mutua es uno de los problemas clave de la programacin concurrente. Se han diseado muchas soluciones para esto: algunas de software y algunas de hardware, ms de bajo nivel y otras de alto nivel; algunas que requieren de cooperacin voluntaria entre los procesos, y algunas que demandan una adherencia rgida a protocolos estrictos. Estar dentro de una seccin crtica es un estado muy especial asignado a un proceso. El proceso tiene acceso exclusivo a los datos compartidos, y todos los dems procesos que necesitan accesar a esos datos permanecen en espera. Por tanto, las secciones c rticas deben ser ejecutadas lo ms rpido posible, un programa no debe bloquearse dentro de su seccin crtica, y las secciones crticas deben ser codificadas con todo cuidado (para evitar, por ejemplo, la posibilidad de incurrir en ciclos infinitos). Si un proceso dentro de una seccin crtica termina, tanto de forma voluntaria como involuntaria, entonces, al realizar su limpieza de terminacin, el sistema operativo debe liberar la exclusin mutua para que otros procesos puedan entrar en sus secciones crticas.

3.6. PRIMITIVAS DE EXCLUSIN MUTUA El programa concurrente que se muestra a continuacin implementa correctamente el mecanismo contador de lneas de la seccin anterior. Por simplicidad, trataremos tan slo dos procesos concurrentes en los programas presentados en esta y en las prximas secciones. El ma nejo de n procesos concurrentes es mucho ms complejo. Las construcciones entraexcluisionmutua y saledeexclusionmutua introducidas en el programa encapsulan el cdigo en cada proceso que accesa la variable compartida NOLINEAS, es decir, estas construcciones demarcan las secciones crtica s. Estas operaciones se llaman, a veces, primitivas de exclusin mutua; o sea, que invocan las operaciones ms fundamentales inherentes a la exclusin 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

coend; end.

En el caso de los dos procesos, estas primitivas operan como sigue: cuando el proceso uno se ejecuta, entra la exclusin mutua, si el proceso dos no est en su seccin crtica, entonces el proceso uno entra a su seccin crtica; accesa a la variable deseada y despus se ejecuta, sale de exclusin mutua para indicar que ha abandonado su seccin crtica. Si el proceso dos est en su seccin crtica cuando el proceso uno se ejecuta entra a exclusin mutua, entonces el proceso uno entra en espera hasta que proceso dos se ejecute sale de la exclusin mutua. Proceso uno puede, entonces, proceder a entrar en su seccin crtica. Si proceso uno y proceso dos se ejecutan entra la exclusin mutua simultneamente, entonces le ser permitido proceder a alguno, permaneciendo el otro en espera.

3.7. IMPLEMENTACIN DE LAS PRIMITIVAS DE EXCLUSION MUTUA Se busca una implementacin que permite la exclusin mutua, entre el cdigo de entrada a exclusin mutua y sale de exclusin mutua cdigo de salida de exclusin mutua que satisfaga las cuatro restricciones siguientes: La solucin se implementa slo en software en una mquina que no tenga instrucciones de exclusin mutua especialmente diseadas. Cada instruccin de lenguaje de mquina se ejecuta de forma indivisible; es decir, una vez iniciada una instruccin, sta se termina sin interrupcin. Si procesadores mltiples tratan de accesar el mismo dato, debemos suponer que una caracterstica del hardware llamada interbloqueo de almacenamiento resuelve todos los conflictos. El interbloqueo de almacenamiento secuencializa las referencias en conflicto por medio de procesadores separados, esto es, se hace que las referencias sucedan una a la vez. Se da por supuesto que las referencias separadas son servidas en orden aleatorio. 64

No deber hacerse ninguna suposicin en relacin con las velocidades relativas de procesos concurrentes asincrnicos.

Los procesos que se encuentren operando fuera de sus secciones crticas no pueden evitar que entren otros procesos en sus propias secciones crticas.

No deben postergarse indefinidamente la entrada de los procesos en sus secciones crticas.

Una implementacin elegante de software de la exclusin mutua fue la presentada por primera vez por el matemtico holands Dekker. En la siguiente seccin seguimos el desarrollo de Dijkstra del algoritmo de Dekker.

3.8. ALGORITMOS DE EXCLUSIN MUTUA 3.8.1. DESARROLLO INTUITIVO El programa pro01 muestra un primer intento de especificar el cdigo para forzar la aplicacin de la exclusin mutua, dentro del contexto de un programa concurrente con dos procesos. La construccin cobegin/coend hace que el proceso uno y el proceso dos operen como procesos concurrentes. Cada uno de estos procesos entra en un ciclo, entrando repetidamente en su seccin crtica. En el programa pro01 entra a exclusin mutua, se implementa por un ciclo 'while' simple, que mantiene el ciclo hasta que pnumero iguala al nmero del proceso; sale de exclusin mutua a implementarse por una instruccin simple que ajusta pnumero al nmero del otro proceso. program pro01; (* primera version de las primitivas de exclusin mutua *) var pnumero: integer; nolineas: integer; process uno;

65

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

66

writeln('Total de lneas =',nolineas) end.

El proceso uno ejecuta el while-do. Como pnumero es inicialmente 1, el proceso uno entra a su seccin crtica. El proceso dos encuentra pnumero igual a 1 y permanece encerrado en su ciclo de while-do. Cuando el proceso dos obtiene el procesador, simplemente permanece en el ciclo en espera de que pnumero se ajuste a 2, as que proceso dos no entra en su seccin crtica y la exclusin mutua queda garantizada. El proceso uno acaba por terminar la ejecucin dentro de su seccin crtica (ha de suponerse que no hay ciclos infinitos) y ajusta pnumero a 2, permitiendo as que el proceso dos entre en su seccin crtica. La exclusin mutua est garantizada, pero el precio es alto. El proceso uno debe de entrar primero, as es que si el proceso dos est listo para entrar en su seccin crtica, deber tardar bastante. Despus de que el proceso uno entre y salga de su seccin crtica, entonces el proceso dos deber seguir, aun cuando el proceso uno desee reentrar y el proceso dos no est listo. Entonces, los procesos debern entrar y salir de sus secciones crticas en estricta alternancia. Si un proceso requiere hacer esto muchas ms veces que el otro, est restringido a operar a una velocidad ms lenta de la que requiere. El sistema no debe interbloquearse completamente; por lo menos puede proceder un proceso, si ambos intentan entrar simultneamente en sus secciones crticas. Si uno de los proceso termina, entonces el otro no podr continuar. En la primera solucin existe solamente una variable global simple, y esto forzaba la aparicin del problema de sincronizacin bloqueada. As es que, en la segunda versin (pro02), se usan dos variables: p1dentro, la cual es verdadera si el proceso uno est dentro de su seccin crtica, y p2dentro, que es verdadera si proceso dos est dentro de su seccin crtica. Ahora, mientras p2dentro sea verdadera, el proceso uno permanece encerrado en una espera. El proceso dos acaba abandonando su seccin crtica y realiza su propio cdigo de salida de exclusin mutua, ajustando p2dentro en falso. El proceso 67

uno ajusta entonces p1dentro en verdadero y entra en su seccin crtica. Mientras p1dentro sea verdadera, proceso dos no podr entrar en su seccin crtica. La sutileza de la programacin concurrente vuelve a salir a la superficie. Como quiera que el proceso uno y el proceso dos son concurrentes, ambos podran intentar en forma simultnea sus secuencias de cdigo de entrada de exclusin mutua. A continuacin se muestra el listado del programa pro02. program pro02; (* segunda version de las primitivas de exclusin mutua *) var p1dentro, p2dentro: boolean; nolineas: integer; process uno; var lin: integer; begin for lin := 1 to 50 do begin while p2dentro do null; p1dentro := true; nolineas := nolineas + 1; p1dentro := false end end; (* uno *) process dos; var lin: integer; begin

68

for lin := 1 to 50 do begin while p1dentro do null; p2dentro := true; nolineas := nolineas + 1; p2dentro := false end end; (* dos *) begin p1dentro := false; p2dentro := false; nolineas := 0; cobegin uno; dos coend; writeln('Total de lneas = ',nolineas) end.

En principio, tanto p1dentro como p2dentro son falsas. El proceso uno podra probar p2dentro y encontrarla falsa; entonces, antes de que el proceso uno pueda ajustar p1dentro en verdadero, el proceso dos podra probar p1dentro y encontrarla falsa. En este punto, el proceso uno coloca p1dentro en verdadero y entra a su seccin crtica, y el proceso dos ajusta p2dentro en verdadero y entra a su seccin crtica. Ambos procesos se encuentran en sus secciones crticas al mismo tiempo, as es que la segunda versin ni siquiera garantiza la exclusin mutua. A continuacin se muestra la corrida del programa pro02. - Interpreter Version P5.3 Program pro02 Total de lneas = ... execution begins ... 91

69

Program terminated normally Type r and RETURN to rerun r Program pro02 Total de lneas = ... execution begins ... 94

Program terminated normally Type r and RETURN to rerun ^Z End of data file - program terminating

En la segunda versin existe una dificultad, 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 seccin crtica, hay tiempo suficiente para que el otro proceso pruebe su bandera y entre en su seccin crtica. Por tanto, una vez que el proceso intenta la prueba del while, debe tener la seguridad de que el otro proceso no puede ir ms all de su propia prueba del while. La tercer versin intenta resolver esto haciendo que cada proceso ajuste su bandera antes de la ejecucin del while. program pro03; (* tercer version de primitivas de exclusion mutua *) var p1quiere, p2quiere: boolean; nolineas: integer; process uno; var lin: integer; begin

70

for lin := 1 to 20 do begin p1quiere := true; while p2quiere do null; nolineas := nolineas + 1; p1quiere :=false end end; (* uno *) process dos; var lin: integer; begin for lin := 1 to 20 do begin p2quiere := true; while p1quiere do null; nolineas := nolineas + 1; p2quiere := false end end; (* dos *) begin nolineas := 0; cobegin uno; dos coend; writeln('Total de lneas =',nolineas) end.

Se ha solucionado un problema pero se ha creado otro. Si cada proceso ajusta 71

su bandera antes de proceder con la prueba del while, entonces, cada proceso se encontrar con la bandera del otro ajustada y entrarn para siempre en el ciclo while-do. Este es un ejemplo de un interbloqueo de dos procesos (la corrida de este programa causa que la mquina quede bloqueada). - Interpreter Version P5.3 Program pro03 ... execution begins ...

(El programa bloquea la computadora, deber dar reset) El problema de la tercera versin es que todos los procesos pueden encerrarse en su ciclo while-do respectivo. Es necesaria una manera de "romper" estos ciclos. La cuarta versin logra esto al forzar cada proceso de ciclo a ajustar su bandera en falso repetidamente en perodos breves; esto permitir al otro proceso proceder ms all de su prueba del while, con su bandera todava conectada. program pro04; (* cuarta version de primitivas de exclusion mutua*) var p1quiere, p2quiere: boolean; nolineas: integer; process uno; var lin: integer; begin for lin := 1 to 20 do begin p1quiere := true; while p2quiere do begin p1quiere := false; sleep(random(10)); p1quiere := true

72

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

73

- Pascal-FC for IBM PC compatibles - Compiler Version P5.2 G L Davies & A Burns, University of Bradford Compiling pro04 ...

Compilation complete - Interpreter Version P5.3 Program pro04 Total de lneas = ... execution begins ... 50

Program terminated normally Type r and RETURN to rerun ^Z End of data file - program terminating

La exclusin mutua queda garantizada y no puede ocurrir el interbloqueo, pero puede presentarse otro problema devastador en potencia, el de postergacin indefinida. Veamos como. Debido a que no pueden hacerse suposiciones acerca de las velocidades relativas de los procesos concurrentes asincrnicos, habr que considerar todas las secuencias de ejecucin posibles. El proceso podra, por ejemplo, proceder en tndem. Cada proceso puede seguir la siguiente secuencia: ajustar su bandera en verdadero, hacer la prueba del while, entrar en el cuerpo del ciclo while, ajustar su bandera en falso, retardarse, ajustar su bandera en verdadero y, luego, repetir la secuencia, comenzando con la prueba del while. En tanto hacen esto, las condiciones de prueba permanecern verdaderas. Desde luego que la probabilidad de que tal operacin ocurra es muy baja, pero puede ocurrir. Por lo tanto, la cuarta versin es inaceptable. Si un sistema que utiliza este sistema de exclusin mutua estuviera controlando un vuelo espacial, un marcapasos cardaco o un sistema de control de trfico areo, la posibilidad de que ocurra una

74

postergacin indefinida con el consecuente fallo del sistema no es admisible.

3.9. ALGORITMO DE DEKKER En slo unas cuantas lneas de cdigo, el algoritmo de Dekker (Programa dekker) maneja de manera elegante la exclusin mutua de dos procesos sin necesidad de ninguna instruccin especial de hardware. El algoritmo de Dekker resuelve la posibilidad de la postergacin indefinida experimentada en la cuarta versin. Veamos como. El proceso uno indica su deseo de entrar en su seccin crtica, al conectar su bandera (ajustarla en verdadero). Entonces proced e con la prueba del while donde verifica si el proceso dos tambin quiere entrar. Si la bandera del proceso dos est desconectada (ajustada en falso), entonces el proceso uno salta el cuerpo del ciclo while y entra en su seccin crtica. Supngase, sin embargo, que cuando el proceso uno realice la prueba del while, descubre que la bandera del proceso dos est conectada. Esto obliga al proceso uno a entrar al cuerpo del ciclo while. Aqu busca la variable favorecido, que se utiliza para resolver los conflictos que surgen cuando ambos procesos desean entrar al mismo tiempo en sus secciones crticas. Si el proceso uno es el favorecido, salta el cuerpo del if y ejecuta repetidamente la prueba del while, esperando a que el proceso dos desconecte su bandera. (Luego veremos que el proceso dos debe acabar haciendo eso.) Si el proceso uno determina que el proceso favorecido es el proceso dos, entonces el proceso uno es forzado a entrar en el cuerpo del if, donde desconecta su propia bandera, entra al ciclo del prximo while y permanece all en tanto el proceso dos siga siendo el proceso favorecido. Al desconectar su propia bandera, el proceso uno permite al proceso dos entrar en su seccin crtica. El proceso dos acabar abandonando su seccin crtica y ejecutar su cdigo de salida de exclusin mutua. Estas instrucciones ajustan el proceso favorecido de vuelta al proceso uno y desconectan la bandera del proceso dos. El proceso uno puede entrar ahora al while interno y conectar su propia bandera. El

75

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

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

77

uno; dos coend; writeln('Total de lneas = ',nolineas) end.

A continuacin se tiene la corrida del programa anterior. Compiling dekker ...

Compilation complete - Interpreter Version P5.3 Program dekker ... execution begins ...

Total de lneas = 40 Program terminated normally Considere la siguiente posibilidad interesante. Al salir el proceso uno del ciclo interno de espera, es posible que pierda el procesador, y que el proceso dos complete el ciclo e intente entrar de nuevo en su seccin crtica. El proceso dos conectar entonces su bandera primero y entrar en su seccin crtica. Cuando el proceso uno obtenga de nuevo el procesador, conectar su bandera. Como ser el turno del proceso uno, si el proceso dos intenta entrar, desconectar su propia bandera y ser obligado a entrar al ciclo interno de espera, y el proceso uno podr entrar en su seccin crtica. De esta manera, este truco no dar como resultado una postergacin indefinida.

3.10. ALGORITMO DE PETERSON Otro interesante algoritmo para manejar la exclusin mutua entre dos procesos, es el algoritmo de Peterson (programa ptrson), del cual presentamos el siguiente listado y corrida. program peterson; (* Algoritmo de Peterson para la exclusin mutua de dos 78 procesos

*) var nolineas, turno : integer; band1, band2: boolean; process uno; var lin: integer; begin for lin := 1 to 20 do begin band1:= true; turno:= 2; null; nolineas := nolineas + 1; band1:= false end end; process dos; var lin: integer; begin for lin := 1 to 30 do begin band2:= true; turno:= 1; null; nolineas := nolineas + 1; 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

end end; begin nolineas := 0; turno := 1; band1 := false; band2 := false; cobegin uno; dos coend; writeln('Total de Lneas: ',nolineas) end. C:\PASFC>pfc ptrson.pfc - Pascal-FC for IBM PC compatibles - Compiler Version P5.2 G L Davies & A Burns, University of Bradford Compiling peterson ... Compilation complete - Interpreter Version P5.3 Program peterson ... execution begins ... Total de Lneas: 50

Program terminated normally Type r and RETURN to rerun ^Z End of data file - program terminating

80

Los procesos comparten las variables band1, band2 y turno. Inicialmente band1 = band2 = false, y el valor de turno no tiene relevancia (pero debe ser 1 o 2). En el listado de los procesos, se puede apreciar que para entrar en la seccin crtica, 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). Si ambos procesos tratan de entrar a la vez, se asignar turno como 1 y 2 aproximadamente al mismo tiempo. Slo una de estas asignaciones durar; la otra ocurrir, pero ser reemplazada de inmediato. El valor eventual de turno decide a cual de los dos procesos se le permitir entrar primero en su seccin crtica. Ahora demostraremos que esta solucin es correcta. Necesitamos demostrar: (1) que se conserva la exclusin mutua, (2) que se respeta el requisito de progreso y (3) que se cumple el requisito de espera limitada. Para demostrar la propiedad (1) observamos que cada proceso entra en su seccin crtica nicamente cuando band2 = false o turno = 1 para el proceso uno (band1 = false o turno = 2 para el proceso dos). Observe tambin que, si ambos procesos pueden estar en ejecucin en sus secciones crticas al mismo tiempo, entonces band1 = band2 = true. Estas dos observaciones representan que uno y dos no pueden haber cumplido con xito la condicin del while aproximadamente al mismo tiempo, ya que el valor de turno puede ser 1 o 2, pero no los dos. Por consiguiente, uno de los procesos, digamos uno, debi ejecutar con xito la condicin while, mientras que dos tuvo que ejecutar por lo menos un enunciado adicional ("turno=2"). S in embargo, como en ese momento band1=true y turno=2, y esta condicin persistir mientras uno se encuentre en su seccin crtica, se concluye que se conserva la exclusin mutua. Para comprobar las propiedades (2) y (3) observamos que se puede evitar que el proceso dos entre en su seccin crtica nicamente cuando se queda en el ciclo while con la condicin band1=true y turno = 1; ste es el nico ciclo. Si uno no est listo para entrar en la seccin crtica, entonces band1= false, y dos puede entrar en su seccin crtica. Si uno ha establecido band1 = true y

81

tambin est ejecutando su enunciado while, entonces turno = 1 o turno = 2. Si turno = 2, entonces uno entrar en la seccin crtica. Empero, una vez que uno sale de su seccin crtica, volver a establecer band1=false, permitiendo que dos entre en su seccin crtica. Si uno vue lve a establecer band1 como true, tambin deber establecer turno=2. Por lo tanto, como dos no cambia el valor de la variable turno mientras ejecuta el ciclo while, dos entrar en la seccin crtica (progreso) des pus de, como mximo, una entrada de uno ( espera limitada).

3.11. EXCLUSION MUTUA DE n-PROCESOS 3.11.1. ALGORITMO DE DIJKSTRA Dijkstra fue el primero en presentar una solucin de software para la implementacin de primitivas de exclusin mutua de n-procesos. A continuacin se muestra un programa que utiliza el algoritmo de Dijkstra para la exclusin mutua. program dijkstra; (* algoritmo de dijkstra para la exclusin mutua *) const nprocs=3; var b, c: array[0..nprocs] of boolean; turno: integer; i, nolineas : integer; procedure lock(pnum: integer); var ok: boolean; j: integer;

82

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

83

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

Program terminated normally Type r and RETURN to rerun ^Z End of data file - program terminating

3.11.2. ALGORITMO DE LAMPORT Lamport desarroll una solucin que es particularmente aplicable a los sistemas de procesamiento distribuido. El algoritmo usa un sistema de "toma de boleto", como el usado en las panaderas muy concurridas, y ha sido apodado el algoritmo de la panade ra de Lamport . Nos centraremos nicamente en los aspectos del algoritmo relacionados con un entorno centralizado. Al entrar en la tienda cada cliente recibe un nmero, y se atiende primero al que tenga el nmero menor. Por desgracia, el algoritmo de la panadera no puede garantizar que dos procesos (clientes) no reciban el mismo nmero. En el caso de un empate, prim ero se atiende el proceso con el nombre menor. Es decir, si Pi y Pj reciben el mismo nmero y si i < j, entonces primero se servir a Pi. Como los nombres de procesos son nicos y ordenados, nuestro algoritmo es completamente determinista. Las estructuras de datos comunes son: var boleto: array[1..nprocs] of integer; eleccion: array[1..nprocs] of boolean; Al principio, a estas estructuras se les asigna un valor inicial 0 y false, respectivamente. Por conveniencia, definimos la siguiente notacin: n (a,b) < (c,d) si (a < c) o si (a = c) y b < d

Condicin que determina si el proceso b con el boleto a es favorecido o no para

85

entrar a la seccin crtica con respecto al proceso d con el boleto c. (en el programa bakery esta condicin se implementa por medio de la funcin favorecido). n max(a1 , ... , an)

es (esto

un se

nmero, implementa

k, en

tal el

que

>

ai

para la

i=1, funcin

...,n max)

programa

mediante

A continuacin se muestra un listado del programa para resolver el mismo problema de exclusin mutua (conteo de lneas) mediante el algoritmo de la panadera de Lamport. program bakery; (* Exclusin mutua con el algoritmo de la panadera de Lamport *) const nprocs = 5; var boleto: array[1..nprocs] of integer; eleccion: array[1..nprocs] of boolean; lp: integer; nolineas: integer; process type Entrada(esteproc: integer); var otroproc, lp: integer; function max: integer; var i, largo: integer; begin 86

largo := 0; for i := 1 to nprocs do if boleto[i] > largo then largo := boleto[i]; max := largo + 1 end; (* max *) function favorecido(i, j: integer): boolean; 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; (* favorecido *) begin for lp := 1 to 20 do begin eleccion[esteproc] := true; boleto[esteproc] := max; eleccion[esteproc] := false; for otroproc := 1 to nprocs do begin while eleccion[otroproc] do null; while favorecido(otroproc, esteproc) do null; end; nolineas := nolineas + 1; boleto[esteproc] := 0 end

87

end; (* Entrada *) var turnos: array[1..nprocs] of Entrada; begin nolineas := 0; for lp := 1 to nprocs do begin boleto[lp] := 0; eleccion[lp] := false; end; cobegin for lp := 1 to nprocs do turnos[lp](lp) coend; writeln('Total de Lneas: ',nolineas:4) end.

A continuacin se muestran los resultados de la corrida del programa: - Pascal-FC for IBM PC compatibles - Compiler Version P5.2 G L Davies & A Burns, University of Bradford Compiling bakery ...

Compilation complete - Interpreter Version P5.3 Program bakery ... execution begins ...

Total de Lneas: 100 Program terminated normally

88

Type r and RETURN to rerun ^Z End of data file - program terminating

3.12. SEMFOROS Dijkstra extract las nociones clave de la exclusin mutua en su concepto de semforo. Un semforo es una variable protegida cuyo valor puede ser accesado y alterado tan slo por las operaciones wait, signal y una operacin de ini cializacin del semforo initial. Los semforos binarios slo pueden tomar los valores 0 y 1. Los semforos contadores pueden tomar valores enteros no negativos. La operacin wait en el semforo S, escrito wait(S), opera de la siguiente manera: if S > 0 then S:=S - 1 else (espera en S)

La operacin signal en el semforo S, escrito signal(S), opera de la siguiente manera: if (uno o ms procesos estn 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 - primero en salir para los procesos que esperan a completar un wait(S). La ejecucin de las instrucciones wait y signal son indivisibles. La exclusin mutua en el semforo, S, es aplicada en wait(S) y signal(S). Si varios procesos intentan ejecutar wait(S) al mismo tiempo, slo uno podr proseguir; los otros permanecern en espera. Los semforos y las operaciones de semforos pueden implementarse en software o hardware. En general, se implementan en el ncleo del sistema operativo, donde se controlan los cambios de estado de

89

un proceso. El programa sem01 que se lista a continuacin, muestra como pueden utilizarse los semforos para aplicar la exclusin mutua. program sem01; (* solucin por semforos al problema de la exclusin mutua *) var nolineas: integer; mutex: semaphore; (* declaracin del semforo *) process uno; var lin: integer; begin for lin := 1 to 20 do begin wait(mutex); signal(mutex) end end; (* uno *) process dos; var lin: integer; begin for lin := 1 to 20 do begin wait(mutex); nolineas := nolineas + 1; signal(mutex) end 90 (* Espera por el semforo *) (* libera el semforo *) nolineas := nolineas + 1; (* seccin crtica *)

end; (* dos *) begin nolineas := 0; initial(mutex,1); (* se inicializa el semforo *) cobegin uno; dos coend; writeln('Total de Lneas = ',nolineas) end.

A continuacin se muestran los resultados de la corrida del programa. - Pascal-FC for IBM PC compatibles - Compiler Version P5.2 G L Davies & A Burns, University of Bradford Compiling sem01 ...

Compilation complete - Interpreter Version P5.3 Program sem01 Total de Lneas = ... execution begins ... 40

Program terminated normally Type r and RETURN to rerun ^Z End of data file - program terminating

3.12.1. SINCRONIZACIN DE PROCESOS CON SEMFOROS

91

Cuando un proceso emite una peticin de entrada/salida, se bloquea a s mismo para esperar a que termine esta operacin. Algunos procesos deben despertar al proceso bloqueado. Tal interaccin es un ejemplo de un protocolo de bloqueo/despertar. En forma ms general, supngase que un proceso desee ser informado de la ocurrencia de un evento. Supngase que otro proceso es capaz de detectar que ese acontecimiento ya ha ocurrido. El siguiente programa ( sem02) muestra cmo pueden utilizarse la s operaciones de semforos para implementar un mecanismo simple de sincronizacin de bloqueo/despertar de dos procesos. program sem02; (* Proceso de sincronizacin de bloqueo/despertar con semforos *) var mutex: semaphore; (* declaracin del semforo *) process uno; begin writeln('Cosas preliminares de Uno'); wait(mutex); end; (* uno *) process dos; begin writeln('Cosas preliminares del Dos'); signal(mutex); writeln('Otras cosas del Dos.'); end; (* dos *) begin (* Espera por el semforo *) writeln('Otras cosas del Uno');

92

initial(mutex,0); cobegin uno; dos coend; end. Compiling sem01 ...

Compilation complete - Interpreter Version P5.3 Program sem01 ... execution begins ...

Cosas preliminares de Uno Cosas preliminares del Dos Otras cosas del Dos. Otras cosas del Uno Program terminated normally Type r and RETURN to rerun ^Z End of data file - program terminating

El proceso uno ejecuta algunas cosas preliminares y despus ejecuta wait(mutex). El semforo ha sido inicializado a cero, de modo que el proceso debe esperar. El proceso dos ejecuta signal(mutex) para sealar que el evento ha ocurrido. Esto permite proceder al proceso uno. Obsrvese que este mecanismo trabaja incluso cuando proceso dos detecta y seala el evento antes de que el proceso uno ejecute wait(mutex); el semforo habr sido incrementado de 0 a 1, as es que wait(mutex), decrementa el semforo de 1 a 0, y proceso uno proseguir sin tener que esperar a que ocurra el evento.

3.12.2. BLOQUEOS MUTUOS Y BLOQUEOS INDEFINIDOS

93

La implantacin de un semforo con una cola de espera puede dar como resultado una situacin donde dos o ms procesos esperen indefinidamente un suceso que slo puede ocasionar uno de los procesos en espera. El suceso en cuestin consiste en la ejecucin de una operacin signal. Cuando se llega a este estado, se dice que los procesos estn en bloqueo mutuo. Para ilustrarlo, consideremos un sistema que consta de dos procesos, Uno y Dos, cada uno con acceso a dos semforos, S y Q, con valor inicial 1: Uno wait(S) wait(Q) . . . signal(S) signal(Q) Dos wait(Q) wait(S) . . . signal(Q) signal(S)

Suponga que Uno ejecuta wait(S) y luego Dos ejecuta wait(Q). Cuando Uno ejecuta wait(Q), debe esperar a que Dos ejecute signal(Q). De manera parecida, cuando Dos ejecuta wait(S), debe esperar a que Uno ejecute signal( S). Como estas operaciones de signal no pueden ejecutarse, Uno y Dos estn en bloqueo mutuo. 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. Otro problema relacionado con el bloqueo mutuo es el bloqueo indefinido o inanicin, en que los procesos pueden esperar indefinidamente dentro del semforo. El bloqueo indefinido se puede presentar si aadimos y eliminamos procesos de la lista aso ciada con un semforo en orden LIFO. A continuacin se muestra el listado de un programa sencillo que ilustra el concepto de bloqueo mutuo. La segunda columna de nmeros en el listado del compilador, corresponde a la direccin de memoria de esa instruccin en lenguaje de mquina. Este tipo de listado se presenta para determinar, el punto

94

exacto, de cada proceso en el programa fuente, donde ocurre el bloqueo. - Pascal-FC for IBM PC compatibles - Compiler Version P5.2 G L Davies & A Burns, 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; 0 (* 0 Proceso de sincronizacin de bloqueo/despertar 0 con semforos 0 *) 0 0 var 0 S, Q: semaphore;(* declaracin de los semforos *) 0 0 process Uno; 0 begin 0 3 5 8 10 10 13 13 15 18 18 18 process Dos; 18 begin 95 signal(S); signal(Q); writeln('Uno entra a la seccin crtica '); writeln('Entramos al Uno'); wait(S); wait(Q); (* Espera por el semforo *) writeln('El Uno toma S y espera por Q');

17 end; (* uno *)

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(Q); wait(S); writeln('Dos entra a la seccin crtica '); signal(Q); signal(S); (* Espera por el semforo *) writeln('El Dos toma Q y espera por S');

35 end; (* dos *)

36 begin 36 initial(S,1); 40 initial(Q,1); 44 cobegin 45 49 Uno; Dos

49 coend; 54 end.

Compilation complete

A continuacin se muestran diferentes corridas del programa hasta obtener un bloqueo mutuo. - Interpreter Version P5.3 Program sem03 Entramos al Uno Entramos al Dos El Uno toma S y espera por Q Uno entra a la seccin crtica El Dos toma Q y espera por S 96 ... execution begins ...

Dos entra a la seccin crtica 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 seccin crtica El Uno toma S y espera por Q Uno entra a la seccin crtica 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 intrprete ofrece un diagnstico de esta condicin de la siguiente forma: Pascal-FC post-mortem report on sem03 - Interpreter Version P5.3 Abnormal halt in process dos with pc = 28 97

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. LA RELACIN PRODUCTOR - CONSUMIDOR En un programa secuencial, cuando un procedimiento llama a otro y le trasmite datos, los procedimientos son parte de un proceso simple y no operan de forma concurrente. Pero cuando un proceso transmite datos a otro, los problemas son 98

mucho ms complejo s. Tal transmisin es un ejemplo de comunicacin interprocesos. Considrese la siguiente relacin productor consumidor. Suponga que un proceso, un productor, est generando informacin que utiliza un segundo proceso, un consumidor. Suponga que se comunican por medio de la variable compartida, buffer< /I>. El productor agrega datos en el arreglo buffer, el consumidor lee los datos de buffer y los imprime. Es posible que los procesos productor y consumidor trabajen bien en tndem, o que sus velocidades de ejecucin sean muy parecidas. Si cada vez que el productor deposita un dato en buffer, el consumidor lo lee y lo imprime de inmediato, entonces la salida impresa representar fielmente la corriente de nmeros generada por el productor. Pero supngase que las velocidades de los procesos son dispares. Si el consumidor est operando con ms rapidez que el productor, el consumidor puede leer e imprimir datos antes de que el productor los deposite. Si el productor est operando ms rpido que el consumidor, el productor podra sobre escribir los datos previos antes de que el consumidor tenga la oportunidad de leerlos e imprimirlos; un productor muy veloz podra hacer esto muchas veces, con lo cual muchos resultados se perderan. Como es evidente, 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. La aplicacin de tal comportamiento se conoce como sincronizacin de procesos. El siguiente programa (pcsem) muestra un programa concurrente que utiliza las operaciones de semforos para implementar una relacin productor - consumidor. Los procesos utilizan la variable compartida buffer. El productor va poniendo en el arreglo los nmeros del 65 al 90 (cdigo ASCII de las letras A-Z) mientras que el consumidor los va tomando e imprimiendo. Aqu hemos utilizado tres semforos: mutex se utiliza para aplicar el acceso de exclusin mutua a la variable compart ida buffer; listos controla la sincronizacin de los procesos para determinar si existen datos en el buffer; espacios controla en la sincronizacin la existencia de espacio en el buffer. 99

program pcsem; (* Solucin al problema del Productor - Consumidor mediante el uso de semforos *) const buffmax = 5; var buffer: array[0..buffmax] of integer; sigentra, sigsale: integer; (* apuntadores a buffer para el manejo de la cola*) espacios, listos: semaphore; mutex: semaphore; procedure pon(ch: integer); begin (* el buffer es una cola circular *) buffer[sigentra] := ch; sigentra := (sigentra + 1) mod (buffmax + 1) end; (* pon *)

procedure toma(var ch: integer); begin ch := buffer[sigsale]; sigsale := (sigsale + 1) mod (buffmax + 1) end; (* toma *) process productor; var local: integer; begin

100

for local := 65 to 90 do begin wait(espacios); wait(mutex); pon(local); signal(mutex); signal(listos) end end; (* productor *) process consumidor; var local: integer; begin repeat begin wait(listos); (* Espera que haya datos listos *) wait(mutex); toma(local); (* Entra en la seccin crtica *) (* Seccin crtica *) write(chr(local)); (* Sale de seccin crtica *) (* Avisa que ya hay un dato listo *) (* Espera que haya espacio *) (* Entrada a la seccin crtica *) (* Seccin crtica *)

signal(mutex); (* sale de la seccin crtica *) signal(espacios); (* Avisa que hay un espacio *) write(chr(local+32)); end until local = 90; writeln end; (* consumidor *) begin initial(espacios,buffmax + 1); initial(listos,0); initial(mutex,1); sigentra := 0;

101

sigsale := 0; cobegin productor; consumidor coend end.

A continuacin se muestran diferentes corridas de este programa. Las letras maysculas corresponden al dato y el momento en que el productor pone en el buffer el dato. Las letras minsculas indican el dato y el momento en que el consumidor tom el dato. - Pascal-FC for IBM PC compatibles - Compiler Version P5.2 G L Davies & A Burns, University of Bradford Compiling pcsem ...

Compilation complete - Interpreter Version P5.3 Program pcsem ... execution begins ...

AaBCbDcEFdGeHfIgJhKiLjMkNlmOnPoQpRqSrTsUtVuWvXwYxZyz AaBbCcDEdFeGfHgIhJiKjLkMlNmOnPoQpRSqTrUsVtWuXYvwZxyz ABaCbDcEdFeGfHgIhJiKjLkMlNmOnPoQpRqSrTsUtVuWvXYwZxyz AaBCbDcEdFeGfHgIhJKLijMNkOlPmQnRoSpTqUrVWsXtYuZvwxyz

3.14. SEMFOROS CONTADORES Los semforos contadores son particularmente tiles cuando un recurso va a ser asignado desde una bolsa de recursos idnticos. El semforo se inicializa para el nmero de recursos de la bolsa. Cada operacin wait decrementa el semforo en 1, indicando que ha extrado otro recurso de la bolsa y est siendo usado por un proceso. Cada operacin signal incrementa el semforo en 1, indicando que un proceso ha devuelto un recurso a la bolsa, y puede ser 102

asignado a otro proceso. Si se intenta una operacin wait cuando el semforo ha sido decrementado hasta cero, el proceso debe esperar hasta que se devuelva algn recurso a la bolsa por medio de una operacin signal.

103

CAPTULO 4 ADMINISTRACIN DE LA MEMORIA

En un sistema monoprogramado, la memoria principal se divide en dos partes: para el sistema operativo (monitor residente, ncleo) y otra para el programa que se ejecuta en ese instante. En un sistema multiprogramado, la parte de usuario de la memoria debe subdividirse an ms para hacer sitio a varios procesos. La tarea de subdivisin la lleva a cabo dinmicamente el sistema operativo y se conoce como administracin de memoria. En un sistema multiprogramado resulta vital una gestin efectiva de la memoria, si solo hay unos pocos procesos en memoria, entonces la mayor parte del tiempo estarn esperando a la E/S y el procesador estar desocupado. Por ello, hace falta repartir eficientemente la memoria para meter tantos procesos como sea posible.

4.1. INTRODUCCIN AL ALMACENAMIENTO REAL La organizacin y administracin de la memoria principal, memoria primaria o memoria real de un sistema ha sido y es uno de los factores ms importantes en el diseo de los sistemas operativos. Los trminos memoria y almacenamiento se consideran equivalentes. Los programas y datos deben estar en el almacenamiento principal para: Poderlos ejecutar. Referenciarlos directamente.

Se considera almacenamiento secundario o almacenamiento auxiliar al que generalmente es soportado en discos. Los hechos demuestran que generalmente los programas crecen en requerimientos de memoria tan rpido como las memorias:

104

Ley de Parkinson parafraseada: Los programas se desarrollan para ocupar toda la memoria disponible para ellos. 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 estn utilizando y de aquellas que no. Asigna espacio en memoria a los procesos cuando estos la necesitan. Libera espacio de memoria asignada a procesos que han terminado.

4.2. REQUISITOS PARA LA ADMINISTRACIN DE LA MEMORIA Al realizar un estudio de los diversos mecanismos y polticas relacionadas con la adminsitracin de memoria, vale la pena trener en mente los requisitos que se intentan satisfacer: Se propone cinco requisitos: Reubicacin. Proteccin. Comparticin. Organizacin lgica. Organizacin fsica.

4.2.1. REUBICACIN En un sistema multiprogramado, la memoria disponible se encuentra normalmente compartida por varios procesos. En general, el programador no puede conocer por adelantado qu otros programas residirn en memoria en el momento de la ejecucin del programa. Adems, se busca poder cargar y descargar los proceso activos en la memoria principal para maximizar el uso del procesador, manteniendo una gran reserva de procesos listos para

105

ejecutar. Una vez que el programa haya sido descargado al disco, se limitar a declarar que, cuando vuelva a ser cargado, debe situarse en la misma regin de memoria principal que antes. De este modo, se sabe antes de tiempo donde debe dsituarse un programa y hay que prmitir que el programa debe moverse en la memoria principal como resultado de un intercambio. Esta situacion plantea algunos asuntos tcnicos relativos al direccionamiento, tal como se muestra en la figura 4.1., que representa la imagen de un proceso. Por simplicidad, se sopundra que la imagen del proceso ocupa una regin contigua a la memoria principal. Sin duda el S.O. tiene que conocer la ubicacin de la informacin del control del proceso y la pila de ejecucin, as como el punto de partida para comenzar la ejecucin del programa para dicho proceso. Puesto que el S.O. administra la memoria y es responsable en traer el proceso en memoria principal, estas direcciones deben ser fsiles de conocer. Adems, el procesador debe ocuparse de las referencias a memoria dentro del programa. Las instrucciones de bifurcacin deben tener la direccin que haga referencia a la instruccin que se vaya a ejecutar a continucain. Las instrucciones que hagan referencia a datos deben contener la direccin del byte o de la palabra de datos referenciados. De algn modo, el hardware del procesador y el software del sistema operativo deben ser capaces de traducir las referencias a memorias encontrados en el cdigo del programa a las direcciones fsicas reales que reflejen la posicin actual del programa en memoria principal.
Informacin de Control del Proceso

Punto de entrada al Programa

Bloque De Control De Proceso

Instrucciones de salto

Referencia a Datos Cdigo

Cima Actual de la Pila


Pila datos

106

Figura 4.1: Requisitos de direccionamiento para un proceso.

3.2.2. PROTECCIN Cada proceso debe protegerse contra interferencias no deaseadas de otros procesos, tanto accidentales como intencionales. As pues, el cdigo de un proceso no puede hacer referencia a posiciones de memoria de otros procesos, con fines de lectura o escritura, sin permiso. Hasta cierto punto, satisfacer las exigencias de reubicacin aumenta la dificultad de satisfaccin de las exigencias de proteccin. Puesto que se desconoce la ubicacin de un programa en memoria principal, es imposible comprobar las direcciones absolutas durante la compilacin para asegurar la proteccin. Es ms, la mayora de los lenguajes de programacin permiten el clculo dinmico de direcciones durante la ejecucin, generando, por ejemplo, un ndice de un vector o un puntero a una estructura de datos. Por tanto, todas las referencias de memoria generadas por un proceso deben comprobarse durante la ejecucin para asegurar que slo hacen referencia al espacio de memoria destinado a dicho proceso. Afortunadamente, como se ver, los de proteccin. La imagen del proceso de la figura 4.1, ilustra las necesidades de protecin. Normalmente, un proceso de usuario no puede acceder a ninguna parte del sistema operativo, tanto programa como datos. De nuevo, el programa de un proceso no puede en general bifurcar hacia una instruccin de otro proceso. Adems, sin un acuerdo especial, el programa de un proceso no puede acceder el rea de datos de otro proceso. El procesador debe ser capaz de abandonar tales instrumentos en el momento de la ejecucin. Ntese que, en los trminos del ejemplo, las exigencias de proteccin de memoria pueden ser satisfechas por el procesador (hardware) en vez de que por el sistema operativo (software). mecanismos que respaldan la

reubicacin tambin forman parte bsica del cumplimiento de las necesidades

107

4.2.3. COMPARTICIN Cualquier mecanismo de proteccin que se implemente debe tener la flexibilidad de permitir el acceso a varios procesos a la misma zona de la memoria principal. Por ejemplo, si una serie de procesos estn ejecutando en un mismo programa, resultara beneficioso permitir a cada proceso que acceda a la misma copia del programa, en lugar de tener cada uno su propia copia aparte. Los procesos que cooperan en una tarea pueden necesitar acceso copartido a la misma estructura de datos. El sistema de administracin de memoria debe, por tanto, permitir acceso controlado a las reas compartidas de la memoria, sin comprometer la proteccin bsica. De nuevo, se ver que los mecanismos empleados para respaldar la reubicacin forman parte bsica de las capacidades de comparticicin.

4.2.4. ORGANIZACIN LGICA De forma casi invariable, la memoria principal de un sistema informtico se organiza como un espacio de direcciones lineal o unidimensionales que consta de una secuencia de bytes o palabras. La memoria secundaria, a nivel fsico, se organiza de forma similar. Si bien esta organizacin refleja fielmente el hardware de la mquina, no se corresponde con la forma en la que los programas estn construidos habitualmente. La mayora de los programados se organizan en mdulos, algunos de los cuales no son modificables (slo lectura, slo ejecucin) y otros contienen datos que se pueden modificar. Si el sistema operativo, hardware y los datos se organizaran en forma de mdulos de algn tipo, se conseguir una serie de ventajas, tales como: 1. Los mdulos pueden escribirse y compilarse independientemente, mientras que el sistema resuelve durante la ejecucin todas las referencias de un mdulo a otro. 2. Con un escaso coste adicional, pueden otorgarse varios grados de proteccin (slo lectura, slo ejecucin) a los distintos mdulos.

108

3.

Es imposible introducir mecanismo por medio de los cuales los procesos puedan compartir mdulos. La ventaja de ofrecer comparticin a nivel de mdulo es que esto se corresponde con la visin del problema que tiene el usuario y, por tanto, es fcil, para el usuario especificar la comparacin que desea.

4.2.5. ORGANIZACIN FSICA En la memoria del computador se organiza, al menos, dos niveles: memoria principal y memoria secundaria. La memoria principal ofrece un acceso rpido con un costo relativamente alto; adems, la memoria principal es voltil; esto es, no proporciona almacenamiento permanente. La memoria secundaria es ms lenta y barata que la memoria principal y normalmente no es voltil. De este modo, una memoria secundaria de gran capacidad puede permitir un almacenamiento a largo plazo de programas y datos, al tiempo que una memoria principal pequea mantiene los programas y datos de uso actual. En este esquema a dos niveles, la organizacin del flujo de informacin entre la memoria principal y la secundaria tiene un gran inters en el sistema, la responsabilidad de este flujo podra asignase al programador, pero esto es impracticable e indeseable, debido a dos razones: 1. La memoria principal disponible para un programa y sus datos pueden ser insuficiente, en este caso, el programador debe emplear una prctica que se conoce como superposicin (overlaying), en el cual el programa y los datos se organicen de tal forma que puede haber varios mdulos asignados a la misma regin de memoria, con un programa principal responsable del intercambio de los mdulos segn se necesiten. Incluso con la ayuda de herramientas de compilacin, la programacin superpuesta malgasta el tiempo del programador. 2. estar este espacio. Resulta claro entonces que la tarea de mover informacin entre los dos niveles 109 En un entorno multiprogramado, el programador no conoce durante la codificacin cuanto espacio habr disponible o donde

de memoria debe ser responsabilidad del sistema. Esta tarea es la esencia de la administracin de memoria.

4.3. CARGA DE PROGRAMAS EN MEMORIA PRINCIPAL La tarea central de cualquier sistema de administracin de memoria es traer los programas a memoria principal para su ejecucin en el procesador. En casi todos los sistemas multiprogramados modernos, esta tarea supone un esquema sofisticado conocido como memoria virtual. La memoria virtual est, a su vez, basado en el uso de una de dos tcnicas bsicas: segmentacin y/o paginacin. Antes de ver estas tcnicas de memoria virtual, se debe preparar el terreno considerando tcnicas ms simples que no requieren el uso de memoria virtual. Una de estas tcnicas, la particin, se ha venido usando con distintas variantes en algunos sistemas operativos ahora obsoletos. Las otras dos tcnicas la paginacin simple y la segmentacin simple, no se usan en solitario. No obstante, el estudio de la memoria virtual resultar ms sencillo si se consideran en primer lugar estas dos tcnicas, administracin de memoria. sin tener en cuenta la memoria virtual. La tabla 4.1. adelanta los mecanismos cubiertos en la

4.3.1. PARTICIN FIJA En la mayora de los esquemas de gestin de memoria, 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. El esquema ms sencillo de administracin de memoria disponible es dividirla en regiones con lmites fijos.

4.3.1.1. TAMAOS DE PARTICIN En la figura 4.2 se ofrecen ejemplos de dos alternativas de particin fija. Una posibilidad es emplear particiones de igual tamao. En este caso, cualquier proceso cuyo tamao sea menor o igual que el tamao de la particin puede

110

cargarse en cualquier particin libre. Si todas las particiones estn ocupadas y no hay procesos residentes en estado Listo o Ejecutando, el sistema operativo puede sacar un proceso de algunas de las particiones y cargar otro proceso de forma que haya trabajo para el procesador. Las particiones fijas de igual tamao plantean dos dificultades: Un programa puede ser demasiado grande para caber en la particin. En este caso, el programador debe disear el programa mediante superposiciones, para que solo una parte del programa este en memoria principal en cada instante. Cuando se necesita un mdulo que no esta presente, el programa de usuario debe cargar dicho mdulo en la particin del programa, superponindose a los programas y datos que se encuentren en ella. El uso de memoria principal es extremadamente ineficiente. Cualquier programa, sin importar lo pequeo que sea, ocupar una participacin completa. En el ejemplo. Puede haber un programa que ocupa menos de 128 kb de memoria y, an as, ocupara una participacin de 512 Kb cada vez que se cargase. Este fenmeno, en el que se malgasta el espacio interno de una participacin cuando el bloque de datos cargados sea ms pequeos que la participacin, se denomina fragmentacin interna; en la siguiente tabla 4.1 se podr observar las diversas tcnicas de administracin de memoria.
TCNICA Particin fija DESCRIPCIN La memoria principal de divide en un conjunto de particiones fijas durante la generacin del sistema. Un proceso se puede cargar en una particin de mayor o igual tamao. Las particiones se crean dinmicamente, de forma que cada proceso se carga en una particin de exactamente el mismo tamao que el proceso. VENTAJAS DESVENTAJAS

Sencilla de Empleo ineficiente de implementar; poca la memoria debido a la sobre carga del sistema fragmentacin interna; operativo. el nmero de procesos activos es fijo. No hay fragmentacin interna; uso ms eficiente de la memoria principal. Uso ineficiente del procesador debido a la necesidad de compactacin para contrarrestar la fragmentacin externa.

Particin dinmica

Paginacin

La memoria principal se divide No tiene fragmentacin Hay una pequea en un conjunto de marcos de externa cantidad de igual tamao. Cada proceso se fragmentacin interna.

111

simple

divide en una seria de pginas del mismo tamao que los marcos. Un proceso se carga situando todas sus pginas en marcos libre pero no necesariamente contiguos.

Cada proceso se divide en una No tiene fragmentacin Necesita compactacin seria de segmentos. Un proceso interna Segmentacin de carga situando todos sus simple segmentos en particiones dinmicas que no tiene porque ser contiguas. Memoria virtual paginada Como la paginacin simple, excepto que no hace falta cargar todas las pginas de un proceso. Las pginas no residentes que se necesiten se traern mas tarde de manera automtica. Como la segmentacin simple excepto que no es necesario cargar todos lo segmentos de un proceso. Los segmentos no residentes que se necesiten se traern mas tarde de forma automtica No hay fragmentacin Sobre carga por gestin externa; alto grado de compleja de memoria. multiprogramacin; gran espacio virtual para el proceso. No hay fragmentacin Sobrecarga por gestin interna alto grado de compleja de memoria. multiprogramacin; gran espacio virtual para el proceso; soporte de proteccin y comparticin.

Memoria virtual segmentado

Tabla 4.1: Tcnicas de administracin de memoria.

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

(a) Participaciones del mismo tamao

(b) Participaciones de distintos tamaos.

Pueden reducirse, aunque no solventarse, ambos problemas, por medio del empleo de particiones de tamaos distintos, como se muestra en la figura 4.2b. En este ejemplo, los programas de hasta 1Mb pueden alojarse sin superposicin. Las participaciones menores de 512Kb permiten alojar programas ms pequeos con un desperdicio menor.

Figura 4.2: Ejemplo de participacin esttica de una memoria de 4Mb.

4.3.1.2. ALGORITMO DE UBICACIN Con particiones del mismo tamao, la ubicacin de un proceso en memoria es trivial. Mientras haya alguna participacin libre, puede cargarse un proceso en esa participacin. Puesto que todas las participaciones son de igual tamao, no importa la participacin que se use. Si todas las particiones estn ocupadas con procesos que no estn listos para ejecutar, uno de esos procesos debe sacarse y hacer sitio a un nuevo decisin de planificacin. Con participaciones de distintos tamaos, hay dos maneras posibles de proceso. Cul debe expulsarse es una

asignar los procesos a las participaciones. La forma ms simple es asignar cada proceso a la participacin ms pequea en la que quepa. En este caso, hace falta una cola de planificacin para cada particin, que albergue los proceso expulsados cuyo destinado es dicha participacin (figura 4.3.a). La ventaja de este enfoque es que los procesos estn siempre asignados de forma que se minimiza la memoria desperdiciada dentro de cada participacin. Sin embargo, aunque esta tcnica parece ptima desde el punto de vista de una participacin individual, no lo es desde el punto de vista del sistema global. Considrese el caso de la figura 4.2.b, por ejemplo, donde no hay procesos con un tamao comprendido entre 768 K y 1M en un determinado instante. En este caso, la particin de 768K permanecer sin usar, incluso aunque algn proceso ms pequeo pudiera haber sido asignado a la misma, as pues, una solucin mejor sera emplear una nica cola para todos los 113

procesos (figura 4.3.b) cuando se va a cargar un proceso en memoria principal, se selecciona la particin ms pequea disponible que pueda albergar al proceso. Si todas las participaciones estn ocupadas, se debe tomar una decisin de intercambio. Puede darse preferencia al intercambio de la participacin ms pequea que pueda contener al proceso entrante. Tambin es posible considerar otros factores, tales como prioridades y preferencia para descargar procesos bloqueados antes que proceso listo.

Sistema
operativo

Sistema operativ o

Procesos Nuevos Procesos Nuevos

(a) Una cola de proceso por participacin.

(b) Cola nica proceso.

Figura 4.3: Asignacin de memoria con participacin fija.

El uso de particiones de distinto tamao proporciona cierto grado de flexibilidad a las particiones fijas. Adems, ambos tipos de esquema de participacin fija son relativamente simples y exigen un software del sistema operativo y una sobrecarga de procesamiento mnimo. Sin problemas siguientes: embargo, se plantean los

114

El nmero de particiones especificadas en el momento de la generacin del sistema limita el nmero de procesos activos (no suspendidos) el sistema.

Puesto que los tamaos de particin se programan en el momento de la generacin del sistema, los trabajos pequeos no hacen un uso eficiente del espacio de las particiones. En un entorno en el que los requisitos bsicos de almacenamiento de todos los procesos se conocen de antemano, pueden ser una tcnica razonable, pero en la mayora de los casos, ineficiente.

4.3.1.3. PARTICIN DINMICA Para superar algunas de las dificultades de la particin esttica, se desarroll una solucin denominada particin dinmica. Otra vez, este enfoque ha sido superado de largo por administraciones de memorias ms sofisticadas. Con la particin dinmica, las particiones son variables en nmero y longitud. Cuando se trae un proceso a memoria principal, se le asigna exactamente tanta memoria como necesita y no ms. En la figura 4.4. se muestra un ejemplo que usa 1Mb de memoria principal. Al principio, la memoria principal est vaca, exceptuando el sistema operativo (figura 4.4.a). se cargan los tres primeros procesos, empezando en donde acabo el sistema operativo y ocupando slo un espacio suficiente para cada proceso (figura 4.4.b, c y d). Esto deja un hueco al final de la memoria demasiado pequeo para un cuarto proceso. En algn momento, ninguna de los procesos en memoria est listo. As pues, el sistema operativo saca al proceso 2 (figura 4. 4.c), que deja sitio suficiente para cargar un nuevo proceso, el proceso 4 (figura 4.4.f) puesto que el proceso 4 es ms pequeo que el proceso 2 se crea otro hueco pequeo. Ms tarde, se alcanza un punto en el que ninguno de los procesos que estn en memoria principal estn listos y el proceso 2, que est en estado listo, pero suspendido, est disponible. Puesto que no hay suficiente sitio en memoria para el proceso 2, el sistema operativo expulsa al proceso 1 (figura 4.4.g) y carga de nuevo el proceso 2 (figura 4.4.h).

115

Como se muestra en el ejemplo, este mtodo comienza bien, pero, finalmente, desemboca en una situacin en la que hay un gran nmero de huecos pequeos en memoria. Conforme pasa el tiempo, la memoria comienza a estar ms fragmentada y su rendimiento decae. Este fenmeno se denomina fragmentacin externa y se refiere al hecho de que la memoria externa a todas las particiones se fragmenta cada vez ms a diferencia de la fragmentacin interna que se coment anteriormente. Una tcnica para superar la fragmentacin externa es la compactacin: de vez en cuando, el sistema operativo desplaza los procesos para que estn contiguos de forma que toda la memoria libre quede junta en un bloque. Por ejemplo, en la figura 4.4h, la compactacin produce un bloque de memoria libre de 256K. Este hueco puede ser suficiente para cargar un proceso adicional. La dificultad de la compactacin est en que es un procedimiento que consume tiempo, por lo que desperdicia tiempo del procesador. La compactacin necesita de la capacidad de reubicacin dinmica. Es decir, se deber poder mover un programa en una regin a otra de la memoria principal sin invalidar las referencias a memoria del programa.
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

Figura 4.4: Efectos de la participacin dinmica.

4.3.1.4. ALGORITMO DE UBICACIN Puesto que la compactacin de memoria consume tiempo, atae al diseador del sistema operativo decidir adecuadamente cmo asignar un proceso a memoria (como llenar los huecos). Cuando llega el momento de cargar o traer un proceso a memoria principal y, si hay libre ms de un bloque de memoria de tamao suficiente, el sistema operativo debe decidir cul asignar. Los tres algoritmos de ubicacin que se pueden considerar son el mejor ajuste (best- fit), el del primer ajuste (first fit) y el del siguiente ajuste (next fit). Todos ellos se limitan a elegir entre los bloques de memoria libres que son mayores o iguales que el proceso a traer. El mejor ajuste elige el bloque de tamao ms parecido al solicitando.

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

Figura 4.5: Ejemplo de una configuracin de memoria antes y despus de asignar un bloque de 16 Kb.

El primer ajuste comienza recorriendo la memoria desde el principio y escoge el primer bloque disponible que sea suficientemente grande. El siguiente ajuste recorre la memoria desde el lugar de la ltima ubicacin y elige el siguiente bloque disponible que sea suficientemente grande. La figura 4.5.a muestra un ejemplo de configuracin de la memoria despus de cierto nmero de ubicaciones y operaciones de descarga de procesos. El ltimo bloque usando fue de 22Kb, de donde se cre una participacin de 14Kb. La figura 4.5.b, muestra la diferencia entre los algoritmos de ubicacin del mejor primer y siguiente ajuste para una solicitud de 16kb. El mejor ajuste busca en la lista completa de bloques disponibles y emplea el hueco de 18KB, dejando un fragmento de 2Kb. El primer ajuste genera un fragmento de 6Kb y el siguiente ajuste origina un fragmento de 20Kb. Cul de estos mtodos el mejor, depender de la secuencia exacta de intercambio de procesos que se den y del tamao de estos procesos. El algoritmo del primer ajuste no slo es el ms sencillo, sino que

normalmente es tambin el mejor y ms rpido. El algoritmo del siguiente ajuste tiende a generar resultados algo peores que el del primer ajuste. El algoritmo del siguiente ajuste llevar frecuentemente a la asignacin de bloques libres del final de la memoria. El resultado es que el bloque de memoria libre ms grande, que suele

aparecer al final del espacio de memoria, se divide rpidamente en fragmentos pequeos. As pues, con el siguiente ajuste har falta una compactacin ms frecuente. Por otro lado, el algoritmo del primer ajuste puede poblar el extremo inicial de pequeas particiones libres que es necesario recorrer en las pasadas siguientes de algoritmo. El algoritmo del mejor ajuste, a pesar de su nombre, proporciona en general los peores resultados. Puesto que este algoritmo 118

busca

el hueco ms pequeo posible. Aunque cada solicitud de memoria

desperdicia siempre la menor cantidad, el resultado es que la memoria principal se llena rpidamente de bloques demasiado pequeos como para satisfacer las solicitudes de asignacin de memoria. As pues, se debe compactar ms frecuentemente que con los otros algoritmos. 4.3.1.5. ALGORITMOS DE REEMPLAZO En un sistema multiprogramado con particiones dinmicas, habr algn

momento en el que todos los procesos de memoria principal estn en estado bloqueado y la memoria sea insuficiente. Incluso tras la compactacin, para un proceso adicional. Para evitar desperdiciar el tiempo del procesador esperando a que un proceso activo se desbloquee, el sistema operativo expulsar uno de los procesos de memoria principal para hacer sitio a un proceso nuevo o un proceso listo, pero suspendido. Por lo tanto, el sistema operativo debe elegir que proceso reemplazar.

4.3.1.6. REUBICACIN Antes de considerar las formas de solucionar los defectos de las tcnicas de particin, se debe aclarar un punto oscuro, que tiene relacin con la ubicacin de los procesos en memoria. Cuando se emplea el esquema de particiones fijas de la figura 4.3.a, se puede esperar que un proceso sea asignado siempre a la misma particin. Es decir, la particin 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. En el caso de particiones de igual tamao y en el caso de una cola nica de procesos para particiones de distinto tamao, un proceso puede ocupar diferentes particiones a lo largo de su vida. Cuando al principio se crea la imagen de un proceso, se cargar en alguna particin de memoria principal. Posteriormente, el proceso puede ser descargado; cuando, ms tarde, vuelve a ser cargado, podr asignrsele una particin distinta de la anterior. Esto mismo se cumple con particiones dinmicas. Obsrvese en la figura 4.4.c, y 4.4.h, que el proceso 2 ocupa dos regiones de memoria distintas en las dos

119

ocasiones en las que se le trae a memoria. Es ms, cuando se usa compactaciones, los procesos son desplazados durante su estancia en memoria principal. Considrese ahora un proceso en memoria que incluya instrucciones y datos. Las instrucciones contendrn siguientes: Direcciones de elementos de datos, empleadas en instrucciones de carga, almacenamiento y en algunas instrucciones aritmticas y lgicas. Direcciones de instrucciones, empleadas para bifurcaciones e instrucciones de llamada. Ahora se demostrar que estas instrucciones no son fijas, si no que cambian cada vez que se Intercambia o desplaza un proceso. Para resolver este problema, se realiza una distincin entre varios tipos de direcciones. Una direccin lgica es una referencia a una posicin de memoria independiente de la asignacin actual de datos de memoria; se debe hacer una traduccin a direccin fsica antes de poder realizar un acceso a memoria. Una direccin relativa es un caso particular de direccin lgica, en el cual la direccin se expresa como una posicin relativa en algn punto conocido, habitualmente el comienzo del programa. Una direccin posicin real en memorial principal. fsica o direccin absoluta, es una referencias a memoria de los dos tipos

4.4. MEMORIA VIRTUAL En un sistema de jerarqua de memoria, los programas y datos se almacenan primero en la memoria auxiliar. Despus, se traen a la memoria principal partes de un programa o de datos, conforme los necesita la CPU. 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, igual a la totalidad de la memoria auxiliar, cada direccin a la que hace referencia la CPU recorre un mapeo de direccin de la supuesta direccin virtual a una direccin fsica en la memoria principal. Se usa la memoria virtual para dar a los programadores la ilusin de 120

que tienen a su disposicin una memoria muy grande, aunque la computadora tenga en realidad una memoria relativamente pequea. Un sistema de memoria virtual proporciona un mecanismo para trasladar direcciones generadas por programas a localidades correctas en la memoria principal. Esto se hace en una forma dinmica, mientras la CPU ejecuta programas. Una circuitera maneja en forma automtica la traduccin o el mapeo mediante una tabla de mapeo.

4.4.1. ESPACIO DE DIRECCIONAMIENTO Y ESPACIO DE MEMORIA A una direccin que usa un programador se la llamar direccin virtual y al conjunto de tales direcciones, espacio virtual. A una direccin en la memoria principal se la llama localidad o direccin fsica. El conjunto de tales localidades se llama espacio de memoria. Por lo tanto, el espacio de direccionamiento es el conjunto de direcciones generado por los programas, conforme hacen referencia a instrucciones y datos; el espacio de memoria consiste en las localidades reales de la memoria principal que se pueden acceder directamente para procesamiento. En la mayora de las computadoras los espacios de direccionamiento y de memoria son idnticos. Se permite que el especio de direccionamiento sea mayor que el espacio de la memoria en computadoras de memoria virtual. Como ejemplo, consideremos una computadora con una capacidad de

memoria principal de 32 K palabras (K =1024) se necesitan quince bits para especificar una direccin fsica en la memoria porque 32 K = 2 15, supongamos que la computadora tiene memoria auxiliar disponible para almacenar 2 20 = 1024 K palabras. Por lo tanto, la memoria auxiliar tiene capacidad para almacenar informacin equivalente a la capacidad de 32 memorias principales. Al representar el espacio de direccionamiento por N y el espacio de memoria por M, tenemos para este ejemplo N = 1024K y M = 32K. En un sistema de computadora de multiprogramacin, se transfieren los programas y datos a, y de la memoria auxiliar y de la memoria principal, con base en las demandas que impone la CPU. Supongamos que el programa 1 se

121

ejecuta en ese momento en la CPU. 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.6. Las partes de los programas y datos no necesitan estar en localidades contiguas en la memoria, porque la informacin se mueve hacia adentro y hacia fuera y pueden quedar espacios vacos en partes no adyacentes en la memoria. En un sistema de memoria virtual, se les dice a los programadores que tienen su disposicin todo el espacio de direccionamiento. Adems, el campo de direcciones del cdigo de instrucciones tiene una cantidad suficiente de bits para especificar todas las direcciones virtuales.
Memoria auxiliar

Memoria principal

Programa 1 Programa 1 Datos 1,1 Datos 1,2 Datos 1,1 Programa 2 Datos 2,1 Espacio de memoria M = 32k = 215

Espacio de direccin N = 1024k = 220

Figura 4.6: Relacin entre espacios de direccin y de memoria en un sistema de memoria virtual.

En

nuestro ejemplo,

el campo de direccin de un cdigo de instruccin las direcciones de memoria fsica deben referencia a

consistir en 20 bits, pero

especificarse con slo 15 bits. por lo tanto, la CPU har direccin debe tomarse de la memoria fsica,

instrucciones y datos con direcciones de 20 bits, pero la informacin en esta porque el acceso al almacenamiento auxiliar para palabras individuales sera prohibitivamente largo

122

(recuerde que para transferencias eficientes, el almacenamiento auxiliar mueve todo un registro a la memoria principal). Entonces se necesita una tabla como la que se muestra en la figura 4.7. El mapeo es una operacin dinmica, lo que significa que cada direccin se traduce inmediatamente, conforme la CPU hace referencia a una palabra. La tabla de mapeo debe almacenarse en una memoria separada como se muestra en la figura 4.7 o en la memoria principal. En el primer caso, se necesita una memoria adicional y un tiempo de acceso a memoria extra. 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.
Direccin virtual

Registros de direccin virtual (20 bits)

Tabla de mapeo de memoria

Registros de bfer de tabla de memoria (15 bits)

Memoria principal

Registros de bfer de tabla de memoria

Registros de bfer de memoria principal

Figura 4.7: Tabla de memoria para mapear una direccin virtual.

4.5. PROTECCIN DE MEMORIA Pueden asignarse proteccin de memoria a la direccin fsica o a la direccin lgica. La proteccin de memoria a travs de la direccin fsica puede hacerse al asignar a cada bloque en la memoria varios bits de proteccin que indican el tipo de acceso que se permite a su bloque a otro sera necesario actualizar los bits de proteccin de bloque. Un lugar mucho mejor para aplicar proteccin fsica. Esto puede hacerse al incluir informacin de proteccin dentro de la 123

tabla de segmento o en el circuito del registro de segmento de administracin de memoria.

CAPTULO 5 ADMINISTRACN DE LOS ARCHIVOS


5.1. INTRODUCCIN Todas las aplicaciones computarizadas necesitan almacenar y recuperar la informacin: generan. Independizando a la informacin de los procesos permitiendo el acceso a la misma a travs de varios procesos. Las condiciones esenciales para el almacenamiento de la informacin a largo plazo son: Debe ser posible almacenar una cantidad muy grande de informacin. utiliza. Debe ser posible que varios procesos tengan acceso concurrente a la informacin. La solucin es el almacenamiento de la informacin en discos y otros medios externos en unidades llamadas archivos: Los archivos deben ser persistentes, es decir que no deben verse afectados por la creacin o terminacin de un proceso. La informacin debe sobrevivir a la conclusin del proceso que la Superando las limitaciones del almacenamiento real. Trascendiendo a la duracin de los procesos que las utilizan o

124

Los archivos son una coleccin de datos con nombre. Pueden ser m anipulados como una unidad por operaciones como: open, close, create, destroy, copy, rename, list.

Los elementos de datos individuales dentro del archivo pueden ser manipulados por operaciones como: read, write, update, insert, delete.

El Sistema de Archivos es la parte del sistema de administracin del almacenamiento responsable, principalmente, de la administracin de los archivos del almacenamiento secundario. Es la parte del S. O. responsable de permitir compartir controladamente la informacin de los archivos.

5.2. FUNCIONES DEL ADMINISTRADOR DE ARCHIVOS El administrador de archivos tiene un trabajo complicado. Est a cargo de los componentes fsicos del sistema, sus recursos de informacin y de las polticas que se utilizan para almacenar y distribuir los archivos. A fin de desempear sus funciones, tiene que ejecutar estas cuatro tareas: 1. 2. Llevar el control de dnde se almacena cada archivo. Utilizar una poltica que determine dnde y cmo se almacenarn los archivos, asegurando el uso disponible y proporcionando archivos. 3. Asignar cada archivo cuando se ha aceptado el acceso de un usuario al mismo y registrar su uso. 4. Desasignar el archivo cuando ste es devuelto a almacenamiento y comunicar su disponibilidad a otros esperando. Por ejemplo, el sistema de archivos es como una biblioteca, 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

cuatro tareas: 1. Utiliza el catalogo de tarjetas para llevar el control de cada elemento de la coleccin; las tarjetas listan el nmero de identificacin y los detalles que ayudan a los clientes a encontrar cada libro. 2. La biblioteca se apoya en una poltica predeterminada para almacenar todo lo que est en la coleccin, incluyendo libros de tamao afuera de lo comn, revistas, grabaciones, mapas y cintas. stas se deben organizar fsicamente, de manera que las personas pueden encontrarlas cuando lo necesiten. 3. cuando se solicita, el libro se toma de la estantera y se registra el nombre del solicitante en el archivo de circulacin. 4. cuando el libro es devuelto, el bibliotecario elimina el regln del archivo de circulacin y vuelve a poner el elemento en la estantera. Es un sistema de cmputo, el, administrador de archivos controla sus archivos utilizando directorios que contienen sus nombres, localizacin fsica en el almacenamiento secundario e informacin importante respecto a cada archivo. La poltica predeterminada del administrador de archivos define dnde se almacena cada archivo y de que manera el sistema y los usuarios podrn tener acceso a ellos de una manera simple va comandos que son independientes de los detalles del dispositivo adems, la poltica debe establecer quin tendr acceso a qu material. Esto supone dos factores: flexibilidad de acceso a la informacin y su proteccin subsecuente. El administrador de archivos efecta lo anterior al permitir el acceso a archivos compartidos, proporcionar un acceso distribuido y permitir a los usuarios que examinen directorios pblicos. Mientras tanto, el sistema operativo debe proteger sus archivos contra el mal funcionamiento del sistema y proporcionar medios de seguridad mediante nmeros de cuenta, contrasea y cerraduras para observar la integridad de los datos y protegerse contra el mal uso. El sistema de computacin 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. 126

Por ltimo, el administrador de archivos desasigna un archivo y volviendo a escribirlo (si ha sido revisado) en el dispositivo de almacenamiento secundario. En seguida se notifica su disponibilidad a cualquier proceso que aguarde el acceso al archivo.

5.3. EL SISTEMA DE ARCHIVOS Un Archivo es un conjunto de registros relacionados. El Sistema de Archivos es un componente importante de un S. O. y suele contener: Mtodos de acceso relacionados con la manera de acceder a los datos almacenados en archivos. Administracin compartidos y asegurados. Administracin del almacenamiento auxiliar para la asignacin de espacio a los archivos en los dispositivos de almacenamiento secundario. Integridad del archivo para garantizar la integridad de la informacin del archivo. El sistema de archivos est relacionado especialmente con la administracin del espacio de almacenamiento secundario, fundamentalmente con el almacenamiento de disco. Una forma de organizacin de un sistema de archivos puede ser la siguiente: Se utiliza una raz para indicar en qu parte del disco comienza el directorio raz. El directorio raz apunta a los directorios de usuarios. El directorio de usuario contiene una entrada para cada uno de los archivos del usuario. Cada entrada de archivo apunta al lugar del disco donde est 127 de archivos referida a la provisin de

mecanismos para que los archivos sean almacenados, referenciados,

almacenado el archivo referenciado. Los nombres de archivos solo necesitan ser nicos dentro de un directorio de usuario dado. El nombre del sistema para un archivo dado debe ser nico para el sistema de archivos. En sistemas de archivo jerrquicos el nombre del sistema para un archivo suele estar formado por el nombre de la trayectoria del directorio raz al archivo.

5.4. ARCHIVOS Se considerar el punto de vista del usuario.

5.4.1. NOMBRE DE LOS ARCHIVOS Las reglas exactas para los nombres de archivos varan de sistema a sistema. Algunos sistemas de archivos distinguen entre las letras maysculas y minsculas, mientras que otros no. Muchos S. O. utilizan nombres de archivo con dos partes, separadas por un punto: La parte posterior al punto es la extensin de archivo y generalmente indica algo relativo al archivo, aunque las extensiones suelen ser meras convenciones.

5.4.2. ESTRUCTURA DE UN ARCHIVO Los archivos se pueden estructurar de varias maneras, las ms comunes son: Secuencia de bytes: El archivo es una serie no estructurada de bytes. Posee mxima flexibilidad. El S. O. no ayuda pero tampoco estorba.

128

Secuencia de registros: El archivo es una secuencia de registros de longitud fija, cada uno con su propia estructura interna.

Arbol: El archivo consta de un rbol de registros, no necesariamente de la misma longitud. Cada registro tiene un campo key (llave o clave) en una posicin fija del registro. El rbol se ordena mediante el campo de clave para permitir una rpida bsqueda de una clave particular.

5.4.3. TIPOS DE ARCHIVOS Muchos S. O. soportan varios tipos de archivos, por ejemplo: archivos regulares, directorios, archivos especiales de caracteres, archivos especiales de bloques, etc., donde: Los Archivos Regulares son aquellos que contienen informacin del usuario. Los Directorios son archivos de sistema para el mantenimiento de una estructura del sistema de archivos. Los Archivos Especiales de Caracteres: Tienen relacin con la E/S. Se utilizan para modelar dispositivos seriales de E/S (terminales, impresoras, redes, etc.). discos. Los Archivos Especiales de Bloques se utilizan para modelar

5.4.4. ACCESO A UN ARCHIVO Los tipos de acceso ms conocidos son: 129

Acceso Secuencial: el proceso lee en orden todos los registros del archivo comenzando por el principio, sin poder: Saltar registros. Leer en otro orden.

Acceso Aleatorio: el proceso puede leer los registros en cualquier orden utilizando dos mtodos para determinar el punto de inicio de la lectura: Cada operacin de lectura (read) da la posicin en el archivo con la cual iniciar. Una operacin especial (seek) establece la posicin de trabajo pudiendo luego leerse el archivo secuencialmente.

5.4.5. ATRIBUTOS DE ARCHIVO Cada archivo tiene: Su nombre y datos. Elementos adicionales llamados atributos, que varan

considerablemente de sistema a sistema. Algunos de los posibles atributos de archivo son: Proteccin: quin debe tener acceso y de qu forma. Contrasea: contrasea necesaria para acceder al archivo. Creador: identificador de la persona que cre el archivo. Propietario: propietario actual. Bandera exclusivo - para - lectura: 0 lectura / escritura, 1 para lectura exclusivamente. listas. Bandera de sistema: 0 archivo normal, 1 archivo de sistema. Bandera de ocultamiento: 0 normal, 1 para no exhibirse en

130

respaldo. -

Bandera de biblioteca: 0 ya se ha respaldado, 1 necesita

Bandera ascii / binario: 0 archivo en ascii, 1 archivo en binario. Bandera de acceso aleatorio: 0 solo acceso secuencial, 1 acceso aleatorio.

Bandera temporal: 0 normal, 1 eliminar al salir del proceso. Banderas de cerradura: 0 no bloqueado, distinto de 0 bloqueado.

archivo. -

Longitud del registro: nmero de bytes en un registro. Posicin de la llave: ajuste de la llave dentro de cada registro. Longitud de la llave: nmero de bytes en el campo llave. Tiempo de creacin: fecha y hora de creacin del archivo. Tiempo del ltimo acceso: fecha y hora del ltimo acceso al

Tiempo de la ltima modificacin: fecha y hora de la ltima modificacin al archivo.

archivo.

Tamao actual: nmero de bytes en el archivo. Tamao mximo: tamao mximo al que puede crecer el

5.4.6. OPERACIONES CON ARCHIVOS Las llamadas ms comunes al sistema relacionadas con los archivos son: Create (crear): el archivo se crea sin datos. Delete (eliminar): si el archivo ya no es necesario debe eliminarse para liberar espacio en disco. Ciertos S. O. eliminan automticamente un archivo no utilizado durante n das. Open (abrir): antes de utilizar un archivo, un proceso debe abrirlo. La finalidad es permitir que el sistema traslade los atributos y la lista 131

de direcciones en disco a la memoria principal para un rpido acceso en llamadas posteriores. Close (cerrar): cuando concluyen los accesos, los atributos y direcciones del disco ya no son necesarios, por lo que el archivo debe cerrarse y liberar la tabla de espacio interno. Read (leer): los datos se leen del archivo; quien hace la llamada debe especificar la cantidad de datos necesarios y proporcionar un buffer para colocarlos. Write (escribir): los datos se escriben en el archivo, en la posicin actual. El tamao del archivo puede aumentar (agregado de registros) o no (actualizacin de registros). Append (aadir): es una forma restringida de write. Solo puede aadir datos al final del archivo. Seek (buscar): especifica el punto donde posicionarse. Cambia la posicin del apuntador a la posicin activa en cierto lugar del archivo. Get attributes (obtener atributos): permite a los procesos obtener los atributos del archivo. Set attributes (establecer atributos): algunos atributos pueden ser determinados por el usuario y modificados luego de la creacin del archivo. La informacin relativa al modo de proteccin y la mayora de las banderas son un ejemplo obvio. Rename (cambiar de nombre): permite modificar el nombre de un archivo ya existente.

5.4.7. ARCHIVOS MAPEADOS A MEMORIA Algunos S. O. permiten asociar los archivos con un espacio de direcciones de un proceso en ejecucin. Se utilizan las llamadas al sistema map y unmap: Map: utiliza un nombre de archivo y una direccin virtual y hace

132

que el S. O. asocie al archivo con la direccin virtual en el espacio de direcciones, por lo cual las lecturas o escrituras de las reas de memoria asociadas al archivo se efectan tambin sobre el archivo mapeado. Unmap: elimina los archivos del espacio de direcciones y concluye la operacin de asociacin. El mapeo de archivos elimina la necesidad de programar la E/S directamente, facilitando la programacin. Los principales problemas relacionados son: Imposibilidad de conocer a priori la longitud del archivo de salida, el que podra superar a la memoria. Dificultad para compartir los archivos mapeados evitando inconsistencias, ya que las modificaciones hechas en las pginas no se vern reflejadas en el disco hasta que dichas pginas sean eliminadas de la memoria.

5.5. DIRECTORIOS Generalmente son utilizados por los S. O. para llevar un registro de los archivos. En muchos sistemas son a su vez tambin archivos.

5.5.1. SISTEMAS JERRQUICOS DE DIRECTORIOS El directorio contiene un conjunto de datos por cada archivo referenciado. Una posibilidad es que el directorio contenga por cada archivo referenciado: El nombre. Sus atributos. Las direcciones en disco donde se almacenan los datos.

Otra posibilidad es que cada entrada del directorio contenga: 133

El nombre del archivo. Un apuntador a otra estructura de datos donde se encuentran los atributos y las direcciones en disco.

Al abrir un archivo el S. O.: Busca en su directorio el nombre del archivo. Extrae los atributos y direcciones en disco. Graba esta informacin en una tabla de memoria real. Todas las referencias subsecuentes al archivo utilizarn la informacin de la memoria principal.

DIRECTORIO

ARCHIVOS

DIRECTORIO RAIZ

compartido DIRECTORIO por RAIZ Figura 5.1: Un solo directorio todos los usuarios.

DIRECTORIO DEL USUARIO

Figura 5.2: Un directorio por usuario.

El nmero y organizacin de directorios vara de sistema en sistema: Directorio nico: el sistema tiene un solo directorio con todos los archivos de todos los usuarios, tal como se ve en la figura 5.1. Un directorio por usuario: el sistema habilita un solo directorio por cada usuario, ver figura 5.2. Un rbol de directorios por usuario: el sistema permite que cada usuario tenga tantos directorios como necesite, respetando una jerarqua

134

general.

5.5.2. 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 mtodos para nombres de los archivos son los que se muestra en la figura. 5.3.
DIRECTORIO RAIZ

DIRECTORIO DEL USUARIO

SUBDIRECTORIOS DEL USUARIO

Figura 5.3: Un rbol arbitrario por usuario.

Ruta de Acceso Absoluta: Cada archivo tiene una ruta de acceso absoluta. Consta de la ruta de acceso desde el directorio raz hasta el archivo. Los componentes de la ruta de acceso se separan mediante algn carcter llamado separador.

Ruta de Acceso Relativa: Se utiliza junto con el concepto de directorio de trabajo o directorio activo. Todos los nombres que no comiencen en el directorio raz se toman en relacin con el directorio de trabajo. El nombre absoluto de la ruta de acceso siempre funciona, sin importar 135

cual sea el directorio de trabajo.

5.5.3. OPERACIONES CON DIRECTORIOS Las llamadas al sistema permitidas para el manejo de los directorios tienen variacin de sistema a sistema. Las ms comunes son las siguientes: Create (crear): se crea un directorio vaco. Delete (eliminar): se elimina un directorio, que debe estar vaco. Opendir (abrir directorio): se pueden leer los directorios: Antes de poder leer un directorio, ste debe ser abierto. Closedir (cerrar directorio): cuando se ha ledo un directorio, ste debe ser cerrado para liberar el espacio correspondiente de la tabla interna. utilice. Rename (cambiar de nombre): cambia el nombre de un directorio de manera similar al cambio para archivos. Link (ligar): es una tcnica que permite que un archivo aparezca en ms de un directorio: Especifica un archivo existente y el nombre de una ruta de acceso. Crea un enlace del archivo ya existente con el nombre especificado en la ruta de acceso. Unlink (desligar): se elimina una entrada del directorio. Si el archivo que se desea desligar aparece solo en un directorio (el caso normal): a) Se elimina del sistema de archivos. Readdir (leer directorio): regresa la siguiente entrada en un directorio abierto, sin importar el tipo de estructura de directorios que se

Si el archivo que se desea desligar, est presente en varios directorios:

136

a) Solo se elimina la ruta de acceso especificada. b) Las dems rutas permanecen.

5.6. IMPLANTACIN DEL SISTEMA DE ARCHIVOS Y SUS RELACIONES CON LA ASIGNACIN Y LIBERACIN DE ESPACIO Se consideran aspectos tales como: La forma de almacenamiento de archivos y directorios. La administracin del espacio en disco. La forma de hacerlo de manera eficiente y confiable.

Se deben tener presentes problemas tales como la fragmentacin creciente del espacio en disco: Ocasiona problemas de performance al hacer que los archivos se desperdiguen a travs de bloques muy dispersos. Una tcnica para aliviar el problema de la fragmentacin consiste en realizar peridicamente: Condensacin: se pueden reorganizar los archivos expresamente o automticamente segn algn criterio predefinido. Recoleccin de basura o residuos: se puede hacer fuera de lnea o en lnea, con el sistema activo, segn la implementacin.

5.6.1. IMPLANTACIN DE ARCHIVOS El aspecto clave de la implantacin del almacenamiento de archivos es el registro de los bloques asociados a cada archivo. Algunos de los mtodos utilizados son los siguientes: Asignacin contigua o adyacente: Los archivos son asignados a reas contiguas de

almacenamiento secundario.

137

Las principales ventajas son: a) Facilidad de implantacin, ya que solo se precisa el nmero del bloque de inicio para localizar un archivo. b) Rendimiento excelente respecto de la E / S. Los principales defectos son: a) Se debe conocer el tamao mximo del archivo al crearlo. b) Produce una gran fragmentacin de los discos.

Asignacin no contigua: Son esquemas de almacenamiento ms dinmicos, destacndose los siguientes: e) Asignacin encadenada orientada hacia el sector: El disco se considera compuesto de sectores individuales. Los archivos constan de varios sectores que pueden estar dispersos por todo el disco. Los sectores que pertenecen a un archivo comn contienen apuntadores de uno a otro formando una lista encadenada. Una lista de espacio libre contiene entradas para todos los sectores libres del disco. Las ampliaciones o reducciones en el tamao de los archivos se resuelven actualizando la lista de espacio libre y no hay necesidad de condensacin. Las principales desventajas son: Debido a la posible dispersin en el disco, la recuperacin de registros lgicamente contiguos puede significar largas bsquedas. El mantenimiento de la estructura de listas encadenadas significa una sobrecarga en tiempo de ejecucin.

138

Los apuntadores de la estructura de lista consumen espacio en disco. f) Asignacin por bloques: Es ms eficiente y reduce la sobrecarga en ejecucin. Es una mezcla de los mtodos de asignacin contigua y la no contigua. Se asignan bloques de sectores contiguos en vez de sectores individuales. El sistema trata de asignar nuevos bloques a un archivo eligiendo bloques libres lo ms prximos posible a los bloques del archivo existentes. Las formas ms comunes de implementar la asignacin por bloques son: Encadenamiento de bloques. Encadenamiento de bloques de ndice. Transformacin de archivos orientada hacia bloques. Encadenamiento de bloques o lista ligada: Las entradas en el directorio de usuarios apuntan al primer bloque de cada archivo. Cada uno de los bloques de longitud que forman un archivo contiene dos partes: Un bloque de datos. Un apuntador al bloque siguiente. Cada bloque contiene varios sectores. Frecuentemente el tamao de un bloque se corresponde con el de una pista completa del disco.
.

139

DIRECTORIO DE USUARIOS DIRECTORIO DE USUARIOS


ARCHIVO ARCHIVO LOCALIZACIN 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. A. 6 B.F.15

DATOS

BLOQUES FISICO 2

DATOS

B.DE. A. 3 B.F.10

B.DE. A. 4 B.F.12

B.DE. A. 5 B.F.18

DATOS

DATOS

DATOS

Figura 5.4: Encadenamiento de bloques o lista ligada de bloques.

Localizar un registro determinado requiere: Buscar en la cadena de bloques hasta encontrar el bloque apropiado. Buscar en el bloque hasta encontrar el registro.

El examen de la cadena desde el principio puede ser lento ya que debe realizarse de bloque en bloque, y pueden estar dispersos por todo el disco.

La insercin y el retiro son inmediatos, dado que se deben

140

modificar los apuntadores del bloque procedente. Se pueden usar listas de encadenamiento doble, hacia adelante y hacia atrs, con lo que se facilita la bsqueda, ver figura. 5.4. Encadenamiento de bloques de ndices: Los apuntadores son colocados en varios bloques de ndices separados: Cada bloque de ndices contiene un nmero fijo de elementos. Cada entrada contiene un identificador de registros y un apuntador a ese registro, tal como se muestra en la figura 5.5.
DIRECTORIO DE USUARIOS
ARCHIVO ARCHIVO LOCALIZACIN

LOCAL IZADO RR

BLOQUES DE INDICES

BLOQUES DE CONTINUACIN DE INDICE

Figura 5.5: Encadenamiento de bloques de ndice.

Si es necesario utilizar ms de un bloque de ndices para describir un archivo, se encadena una serie de bloques de ndices. La gran ventaja es que la bsqueda puede realizarse en los propios bloques de ndices. Los bloques de ndices pueden mantenerse juntos en el almacenamiento secundario para acortar la bsqueda, pero para mejor performance podran mantenerse en el almacenamiento

141

primario. La principal desventaja es que las inserciones pueden requerir la reconstruccin completa de los bloques de ndices: Una posibilidad es dejar vaca una parte de los bloques de ndices para facilitar inserciones futuras y retardar las reconstrucciones. Es suficiente que el dato del directorio contenga el nmero de bloque inicial para localizar todos los bloques restantes, sin importar el tamao del archivo. Transformacin de archivos orientada hacia bloques (Ver figura 5.6.): Se utilizan nmeros de bloques en vez de apuntadores. Los nmeros de bloques se convierten fcilmente a direcciones de bloques gracias a la geometra del disco. Se conserva un mapa del archivo, conteniendo una entrada para cada bloque del disco. Las entradas en el directorio del usuario apuntan a la primera entrada al mapa del archivo para cada archivo. Cada entrada al mapa del archivo contiene el nmero del bloque siguiente de ese archivo. La entrada al mapa del archivo correspondiente a la ltima entrada de un archivo determinado se ajusta a algn valor centinela (nil) para indicar que se alcanz el ltimo bloque de un archivo. El sistema puede mantener una lista de bloques libres. La principal ventaja es que las cercanas fsicas del disco se reflejan en el mapa del archivo. Nodos-i (nodos ndices): Se asocia a cada archivo una pequea tabla, llamada nodo-i 142

(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. En rigor, almacena solo las primeras direcciones en disco: Si el archivo es pequeo, toda la informacin est en el nodo-i.

MAPA DEL ARCHIVO DIRECTORIO DE USUARIOS ARCHIVOS A B C LOCALIZACIN 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

Figura 5.6: Transformacin de archivos orientada hacia bloques.

Si el archivo es grande, una de las direcciones en el nodo-i es la direccin de un bloque en el disco llamado bloque simplemente indirecto: Contiene las direcciones en disco adicionales. Si resulta insuficiente, otra direccin en el nodo-i, el bloque doblemente indirecto, contiene la direccin de un bloque que presenta una lista de los bloques simplemente indirectos: Cada bloque simplemente indirecto apunta a un grupo de bloques de datos. De ser necesario se pueden utilizar bloques triple mente indirectos.

144

5.6.2. IMPLANTACIN DE DIRECTORIOS Para abrir un archivo el S. O. utiliza informacin del directorio: El directorio contiene la informacin necesaria para encontrar los bloques en el disco. El tipo de informacin vara segn el sistema.

La principal funcin del sistema de directorios es asociar el nombre del archivo con la informacin necesaria para localizar los datos. Un aspecto ntimamente ligado con esto es la posicin de almacenamiento de los atributos: Una posibilidad es almacenarlos en forma directa dentro del dato del directorio. Otra posibilidad es almacenar los atributos en el nodo-i en vez de utilizar la entrada del directorio.

5.6.3. ARCHIVOS COMPARTIDOS Frecuentemente conviene que los archivos compartidos aparezcan

simultneamenteNODO en distintos directorios de distintos usuarios. I El propio sistema de archivos es una grfica dirigida acclica en vez de un rbol.
BLOQUE SIMPLEMENTE INDIRECTO
ATRIBUTOS

La conexin entre un directorio y un archivo de otro directorio al cual comparten se denomina enlace. 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. EN DISCO
DIRECCIONES DATOS DE

LOS aBLOQUES DE Se debe evitar que los cambios hechos por un usuario travs de

un directorio no sean visibles por los dems usuarios, para lo que se consideraran dos soluciones posibles. Primera solucin:

145
BLOQUE TRIPLEMENTE INDIRECTO

Figura 5.7: Esquema de un nodo-i.

Los bloques del disco no se enlistan en los directorios, sino en una pequea estructura de datos asociada al propio archivo.

Los directorios apuntaran solo en una pequea estructura de datos, que podra ser el nodo-i (Ver Figura 5.7.).

Segunda solucin: El enlace se produce haciendo que el sistema cree un nuevo archivo de tipo link. El archivo link: Ingresa al directorio del usuario que accede a un archivo de otro directorio y usuario. 146

Solo contiene el nombre de la ruta de acceso del archivo al cual se enlaza. Este criterio se denomina enlace simblico.

Desventajas de la primera solucin : La creacin de un enlace: No modifica la propiedad respecto de un archivo. Aumenta el contador de enlaces del nodo-i: El sistema sabe el nmero de entradas de directorio que apuntan en cierto momento al archivo. Si el propietario inicial del archivo intenta eliminarlo, surge un problema para el sistema: Si elimina el archivo y limpia el nodo-i, el directorio que enlazo al archivo tendr una entrada que apunta a un nodo-i no vlido. Si el nodo-i se reasigna a otro archivo el enlace apuntar al archivo incorrecto. El sistema: Puede ver por medio del contador de enlaces en el nodo-i que el archivo sigue utilizndose. No puede localizar todas las entradas de directorio asociadas a ese archivo para eliminarlas.

La solucin podra ser: archivo. Dejar intacto el nodo-i: Se dara el caso que el directorio que posee el enlace es el nico que 147 Eliminar la entrada del directorio inicialmente propietario del

posee una entrada de directorio para un archivo de otro directorio, para el cual dicho archivo ya no existe. Esto no ocurre con los enlaces simblicos 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. Cuando el propietario elimina un archivo, este se destruye.

Desventajas de la segunda solucin: El principal problema es su costo excesivo, especialmente en accesos a disco, puesto que se debe leer el archivo que contiene la ruta de acceso, analizarla y seguirla componente a componente hasta alcanzar el nodo-i. Se precisa un nodo-i adicional por cada enlace simblico y un bloque adicional en disco para almacenar la ruta de acceso. Los archivos pueden tener dos o ms rutas de acceso, debido a lo cual, en bsquedas genricas se podra encontrar el mismo archivo por distintas rutas y tratrselo como si fueran archivos distintos. Los enlaces simblicos tienen la ventaja de que se pueden utilizar para enlazar archivos en otras mquinas, en cualquier parte del mundo; se debe proporcionar solo la direccin de la red de la mquina donde reside el archivo y su ruta de acceso en esa mquina.

CAPTULO 6 ENTRADA / SALIDA


6.1. INTRODUCCIN Una de las funciones principales de un S. O. es el control de todos los dispositivos de E /S de la computadora. 148

Las principales funciones relacionadas son: sistema: Debe ser sencilla y fcil de usar. Debe ser la misma (preferentemente) para todos los dispositivos (independencia del dispositivo). El cdigo de E/S representa una fraccin significativa del S. O. El uso inapropiado de los dispositivos de E/S frecuentemente genera ineficiencias del sistema, lo que afecta la performance global. Enviar comandos a los dispositivos. Detectar las interrupciones. Controlar los errores. Proporcionar una interfaz entre los dispositivos y el resto del

6.2. 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. Funciones que realiza. Errores que puede informar.

6.2.1. DISPOSITIVOS DE E/S Se pueden clasificar en dos grandes categoras: Dispositivos de bloque. Dispositivos de carcter.

Las principales caractersticas de los dispositivos de bloque son:

149

La informacin se almacena en bloques de tamao fijo. Cada bloque tiene su propia direccin. Los tamaos ms comunes de los bloques van desde los 128 bytes hasta los 1.024 bytes.

Se puede leer o escribir en un bloque de forma independiente de los dems, en cualquier momento.

Un ejemplo tpico de dispositivos de bloque son los discos. Las principales caractersticas de los dispositivos de carcter son: La informacin se transfiere como un flujo de caracteres, sin sujetarse a una estructura de bloques.

No se pueden utilizar direcciones. No tienen una operacin de bsqueda. Un ejemplo tpico de dispositivos de carcter son las impresoras de lnea, terminales, interfaces de una red, ratones, etc.

Algunos dispositivos no se ajustan a este programa de clasificacin, por ejemplo los relojes, que no tienen direcciones por medio de bloques y no generan o aceptan flujos de caracteres. El sistema de archivos solo trabaja con dispositivos de bloque abstractos, por lo que encarga la parte dependiente del dispositivo a un software de menor nivel, el software manejador del dispositivo.

6.2.2. CONTROLADORES DE DISPOSITIVOS Las unidades de E/S generalmente constan de: Un componente mecnico. Un componente electrnico, el controlador del dispositivo o adaptador. Muchos controladores pueden manejar ms de un dispositivo. 150

El S. O. generalmente trabaja con el controlador y no con el dispositivo. Los modelos ms frecuentes de comunicacin entre la cpu y los controladores son: Para la mayora de las micro y mini computadoras: Modelo de bus del sistema. Para la mayora de los mainframes: Modelo de varios buses y computadoras especializadas en E/S llamadas canales de E/S. La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel: La comunicacin es mediante un flujo de bits en serie que: Comienza con un prembulo. Sigue con una serie de bits (de un sector de disco, por ejemplo). Concluye con una suma para verificacin o un cdigo corrector de errores. El prembulo: Se escribe al dar formato al disco. Contiene el nmero de cilindro y sector, el tamao de sector y otros datos similares. El Controlador Debe: Convertir el flujo de bits en serie en un bloque de bytes. Efectuar cualquier correccin de errores necesarias. Copiar el bloque en la memoria principal.

Cada controlador posee registros que utiliza para comunicarse con la cpu: Pueden ser parte del espacio normal de direcciones de la memoria: E/S mapeada a memoria. Pueden utilizar un espacio de direcciones especial para la E/S, 151

asignando a cada controlador una parte de l. El S. O. realiza la E/S al escribir comandos en los registros de los controladores; los parmetros de los comandos tambin se cargan en los registros de los controladores. Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo. Al terminar el comando, el controlador provoca una interrupcin para permitir que el S. O.: Obtenga el control de la cpu. Verifique los resultados de la operacin.

La cpu obtiene los resultados y el estado del dispositivo al leer uno o ms bytes de informacin de los registros del controlador. Ejemplos de controladores, sus direcciones de E/S y sus vectores de interrupcin en la PC IBM pueden verse en la Tabla 6.1.

CONTROLADOR DE E/S RELOJ TECLADO DISCO DURO IMPRESORA DISCO FLEXIBLE Rs 232 primario Rs 232 secundario

DIRECCIN DE E/S 040 - 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.1: Controladores de E/S, direcciones de E/S y vector de interrupciones.

6.2.3. ACCESO DIRECTO A MEMORIA (DMA) Muchos controladores, especialmente los correspondientes a dispositivos de bloque, permiten el DMA; ver figura 6.1. Si se lee el disco sin DMA:

152

unidad:

El controlador lee en serie el bloque (uno o ms sectores) de la

La lectura es bit por bit. Los bits del bloque se graban en el buffer interno del controlador. Se calcula la suma de verificacin para corroborar que no existen errores de lectura. El controlador provoca una interrupcin. El S. O. lee el bloque del disco por medio del buffer del controlador: La lectura es por byte o palabra a la vez. En cada iteracin de este ciclo se lee un byte o una palabra del registro del controlador y se almacena en memoria. Se desperdicia tiempo de la cpu.

DMA se ide para liberar a la cpu de este trabajo de bajo nivel. La cpu le proporciona al controlador: La direccin del bloque en el disco. La direccin en memoria adonde debe ir el bloque. El nmero de bytes por transferir.

Luego de que el controlador ley todo el bloque del dispositivo a su buffer y de que corrobor la suma de verificacin: Copia el primer byte o palabra a la memoria principal. Lo hace en la direccin especificada por medio de la direccin de memoria de DMA. Incrementa la direccin DMA y decrementa el contador DMA en el nmero de bytes que acaba de transferir.
MEMORIA CONTROLADOR DE DISCO UNIDAD BUFFER CPU CONTADOR REFISTROS DEL DMA DIREC. EN MEMORIA

153
BUS DEL SISTEMA

CONTADOR

Figura 6.1: Un controlador realiza completamente una transferencia DMA.

Se repite este proceso hasta que el contador se anula y por lo tanto el controlador provoca una interrupcin.

Al iniciar su ejecucin el S. O. luego de la interrupcin provocada, no debe copiar el bloque en la memoria, porque ya se encuentra ah.

El controlador necesita un buffer interno porque una vez iniciada una transferencia del disco: Los bits siguen llegando del disco constantemente. No interesa si el controlador est listo o no para recibirlos. El controlador intentara escribir los datos en la memoria directamente: Tendra que recurrir al bus del sistema para c/u de las palabras (o bytes) transferidas. El bus podra estar ocupado por otro dispositivo y el controlador debera esperar. Si la siguiente palabra llegara antes de que la anterior hubiera sido almacenada, el controlador la tendra que almacenar en alguna parte. Si el bloque se guarda en un buffer interno: El bus no se necesita sino hasta que el DMA comienza. La transferencia DMA a la memoria ya no es un aspecto crtico del tiempo. Los controladores simples no pueden atender la E/S simultnea:

154

Figura 6.2: Factores de separacin: sin separacin, separacin simple y separacin doble.

Mientras transfieren a la memoria, el sector que pasa debajo de la cabeza del disco se pierde; es decir que el bloque siguiente al recin ledo se pierde.

La lectura de una pista completa se har en dos rotaciones completas, una para los bloques pares y otra para los impares.

Si el tiempo necesario para una transferencia de un bloque del controlador a la memoria por medio del bus es mayor que el tiempo necesario para leer un bloque del disco: Sera necesario leer un bloque y luego saltar dos o ms bloques. El salto de bloques (Ver Figura 6.2): Se ejecuta para darle tiempo al controlador para la transferencia de los datos a la memoria. Se llama separacin. Al formatear el disco, los bloques se numeran tomando en cuenta el factor de separacin. Esto permite al S. O.: Leer los bloques con numeracin consecutiva. Conservar la mxima velocidad posible del hardware.

6.3. PRINCIPIOS DEL SOFTWARE DE E/S

155

La idea bsica es organizar el software como una serie de capas donde (ver figura 6.3): Las capas inferiores se encarguen de ocultar las peculiaridades del hardware a las capas superiores. Las capas superiores deben presentar una interfaz agradable, limpia y regular a los usuarios.

Figura 6.3: Capas del sistema de entrada / salida y las principales funciones de cada capa.

6.3.1. 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, sin tener que modificar los programas para cada tipo de dispositivo. El problema debe ser resuelto por el S. O.

El objetivo de lograr nombres uniformes est muy relacionado con el de independencia del dispositivo. Todos los archivos y dispositivos adquieren direcciones de la misma forma, es decir mediante el nombre de su ruta de acceso.

156

Otro aspecto importante del software es el manejo de errores de E/S: Generalmente los errores deben manejarse lo ms cerca posible del hardware. Solo si los niveles inferiores no pueden resolver el problema, se informa a los niveles superiores. Generalmente la recuperacin se puede hacer en un nivel inferior y de forma transparente. Otro aspecto clave son las transferencias sncronas (por bloques) o asncronas (controlada por interruptores): La mayora de la E/S es asncrona: la cpu inicia la transferencia y realiza otras tareas hasta una interrupcin. La programacin es ms fcil si la E/S es sncrona (por bloques): el programa se suspende automticamente hasta que los datos estn disponibles en el buffer. El S. O. se encarga de hacer que operaciones controladas por interruptores que parezcan del tipo de bloques para el usuario. Tambin el S. O. debe administrar los dispositivos compartidos (ej.: discos) y los de uso exclusivo (ej.: impresoras). Generalmente el software de E/S se estructura en capas: Manejadores de interrupciones. Directivas de dispositivos. Software de S. O. independiente de los dispositivos. Software a nivel usuario.

6.3.2. MANEJADORES DE INTERRUPCIONES Las interrupciones deben ocultarse en el S. O.: Cada proceso que inicie una operacin de E/S se bloquea hasta que termina la E /S y ocurra la interrupcin. 157

El procedimiento de interrupcin realiza lo necesario para desbloquear el proceso que lo inicio.

6.3.3. MANEJADORES DE DISPOSITIVOS Todo el cdigo que depende de los dispositivos aparece en los manejadores de dispositivos. Cada controlador posee uno o ms registros de dispositivos: Se utilizan para darle comandos. Los manejadores de dispositivos proveen estos comandos y verifican su ejecucin adecuada. La labor de un manejador de dispositivos es la de: Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo. Verificar la ejecucin de dichas solicitudes.

Si al recibir una solicitud el manejador est ocupado con otra solicitud, agregara la nueva solicitud a una cola de solicitudes pendientes. La solicitud de E/S, por ejemplo para un disco, se debe traducir de trminos abstractos a trminos 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. Verificar si el brazo est colocado en el cilindro adecuado, etc. Resumiendo: debe decidir cules son las operaciones necesarias del controlador y su orden. Enva los comandos al controlador al escribir en los registros de dispositivo del mismo.

158

Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo; una interrupcin lo libera de este bloqueo.

Al finalizar la operacin debe verificar los errores. Si todo esta o.k. transferir los datos al software independiente del dispositivo.

llam.

Regresa informacin de estado sobre los errores a quien lo

Inicia otra solicitud pendiente o queda en espera.

6.4. DISCOS - HARDWARE PARA DISCOS 6.4.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. Menor precio por bit. La informacin no se pierde al apagar la computadora.

Un uso inapropiado de los discos puede generar ineficiencia, en especial en sistemas con multiprogramacin.

6.4.2. HARDWARE PARA DISCOS Los discos estn organizados en cilindros, pistas y sectores. El nmero tpico de sectores por pista vara entre 8 y 32 (o ms). Todos los sectores tienen igual nmero de bytes. Los sectores cercanos a la orilla del disco sern mayores fsicamente que los cercanos al anillo. Un controlador puede realizar bsquedas en una o ms unidades al mismo

159

tiempo: otra. Muchos controladores pueden: Leer o escribir en una unidad. Buscar en otra. Son las bsquedas traslapadas. Mientras el controlador y el software esperan el fin de una bsqueda en una unidad, el controlador puede iniciar una bsqueda en

Los controladores no pueden leer o escribir en dos unidades al mismo tiempo. La capacidad de bsquedas traslapadas puede reducir considerablemente el tiempo promedio de acceso.

6.5. OPERACIN DE ALMACENAMIENTO DE DISCO DE CABEZA MVIL Los datos se graban en una serie de discos magnticos o platos (Ver figura 6.4). El eje comn de los discos gira a una velocidad del orden de 4.000 o ms revoluciones por minuto. Se lee o escribe mediante una serie de cabezas de lectura - escritura: Se dispone de una por cada superficie de disco.

160

Figura 6.4: Esquema de un disco de cabeza mvil.

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 rotacin desde la posicin actual hasta la adyacente al cabezal se llama tiempo de latencia.

Todas las cabezas de lectura - escritura estn montadas sobre una barra o conjunto de brazo mvil: Puede moverse hacia adentro o hacia afuera, en lo que se denomina operacin de bsqueda. Para una posicin dada, la serie de pistas accesibles forman un cilindro vertical. A los tiempos de bsqueda y de latencia se debe agregar el tiempo de transmisin propiamente dicha, ver figura 6.5. El tiempo total de acceso a un registro particular: Involucra movimientos mecnicos. Generalmente es del orden de centsimas de segundo, aunque el tiempo de latencia sea de algunas milsimas de segundo (7 a 12 aproximadamente).

161

Figura 6.5: Componentes del acceso a un disco.

6.6. ALGORITMOS DE PROGRAMACIN DEL BRAZO DEL DISCO En la mayora de los discos, el tiempo de bsqueda supera al de retraso rotacional y al de transferencia, debido a ello, la reduccin del tiempo promedio de bsqueda 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 bsqueda. Es posible que mientras el brazo realiza una bsqueda para una solicitud, otros procesos generen otras solicitudes.

6.7. PORQU ES NECESARIA LA PLANIFICACIN DE DISCOS En los sistemas de multiprogramacin muchos procesos pueden estar generando peticiones de E/S sobre discos: La generacin de peticiones puede ser mucho ms rpida que la atencin de las mismas: Se construyen lneas de espera o colas para cada dispositivo. Para reducir el tiempo de bsqueda de registros se ordena la cola de peticiones; esto se denomina planificacin de disco. La planificacin de disco implica: Un examen cuidadoso de las peticiones pendientes para determinar la forma ms eficiente de servirlas. espera. Un reordenamiento de la cola de peticiones para servirlas 162 Un anlisis de las relaciones posicionales entre las peticiones en

minimizando los movimientos mecnicos. Los tipos ms comunes de planificacin son: Optimizacin de la bsqueda. Optimizacin rotacional (latencia).

Generalmente los tiempos de bsqueda superan a los de latencia, aunque la diferencia disminuye: Muchos algoritmos de planificacin se concentran en la reduccin de los tiempos de bsqueda para un conjunto de peticiones. Generalmente la reduccin de la latencia recin tiene efectos bajo cargas de trabajo muy pesadas. Bajo condiciones de carga ligera (promedio bajo de longitud de la cola), es aceptable el desempeo del mtodo FCFS (primero en llegar, primero en ser servido). Bajo condiciones de carga media o pesada, es recomendable un algoritmo de planificacin de l as colas de requerimientos.

6.8. CARACTERSTICAS DESEABLES DE LAS POLTICAS DE PLANIFICACIN DE DISCOS Los principales criterios de categorizacin de las polticas de planificacin son: Capacidad de ejecucin. Media del tiempo de respuesta. Varianza de los tiempos de respuesta (predecibilidad).

Una poltica de planificacin debe intentar maximizar la capacidad de ejecucin: Maximizar el nmero de peticiones servidas por unidad de tiempo. Minimizar la media del tiempo de respuesta. Mejorar el rendimiento global, quizs a costa de las peticiones

163

individuales. La planificacin 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. La varianza es un trmino estadstico que indica hasta qu punto tienden a desviarse del promedio de todos los elementos los elementos individuales. A menor varianza mayor predecibilidad. Se desea una poltica de planificacin que minimice la varianza, es decir que maximice la predecibilidad. No debe haber peticiones que puedan experimentar niveles de servicio errticos.

6.9. OPTIMIZACIN DE LA BSQUEDA EN DISCOS Las estrategias ms comunes de optimizacin de la bsqueda son las siguientes: FCFS. SSTF. SCAN. SCAN de N - Pasos. C - SCAN. Esquema Eschenbach.

6.9.1. PLANIFICACIN FCFS (PRIMERO EN LLEGAR, PRIMERO EN SER SERVIDO) Una peticin no puede ser desplazada por la llegada de una peticin con prioridad ms alta.

164

No hay reordenamiento de la cola de peticiones pendientes. Se ignoran las relaciones posicionales entre las peticiones pendientes. Ofrece una varianza pequea aunque perjudica a las peticiones situadas al final de la cola.

6.9.2. PLANIFICACIN SSTF (MENOR TIEMPO DE BSQUEDA PRIMERO) El brazo del disco se sita en la siguiente peticin que minimice el movimiento del brazo. No respeta el orden de llegada de las peticiones a la cola. Tiende a favorecer a las pistas del centro del disco. La media de tiempos de respuesta tiende a ser ms baja que con FCFS, para cargas moderadas. Las varianzas tienden a ser mayores que con FCFS por el efecto de las pistas interiores y exteriores.

6.9.3. PLANIFICACIN SCAN El brazo del disco se desplaza sirviendo a todas las peticiones que encuentra a su paso. Cambia de direccin cuando ya no hay peticiones pendientes en la direccin actual. Ha sido la base de la mayora de las estrategias de planificacin implementadas. Elimina las discriminaciones de SSTF y tiene menor varianza. Las pistas exteriores son menos visitadas que las intermedias, pero no es tan grave como con SSTF.

6.9.4. PLANIFICACIN SCAN DE N - PASOS

165

La estrategia de movimiento del brazo es como en SCAN; solo da servicio a las peticiones que se encuentran en espera cuando comienza un recorrido particular. Las peticiones que llegan durante un recorrido son agrupadas y ordenadas y sern atendidas durante el recorrido de regreso. Posee menor varianza de los tiempos de respuesta si se compara con las planificaciones SSTF y SCAN convencionales.

6.9.5. PLANIFICACIN C - SCAN (BSQUEDA CIRCULAR) El brazo se mueve del cilindro exterior al interior, sirviendo a las peticiones sobre una base de bsqueda ms corta. Finalizado el recorrido hacia el interior, salta a la peticin ms cercana al cilindro exterior y reanuda su desplazamiento hacia el interior. No discrimina a los cilindros exterior e interior. La varianza de los tiempos de respuesta es muy pequea.

6.9.6. ESQUEMA ESCHENBACH El brazo del disco se mueve como en C - SCAN, pero: Las peticiones se reordenan para ser servidas dentro de un cilindro para tomar ventaja de la posicin rotacional. Si dos peticiones trasladan posiciones de sectores dentro de un cilindro, solo se sirve una en el movimiento actual del brazo del disco. Esta estrategia tiene en cuenta el retraso rotacional.

6.9.7. CONCLUSIONES Mediante trabajos de simulacin y de laboratorio se demostr lo siguiente:

166

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

167

BIBLIOGRAFIA

ANDREW S. TANENBAUM. "Sistemas Operativos Distribuidos", Prentice Hall (1996). CARRETERO PREZ, JESS; GARCA CARBALLEIRA, FLIX, DE MIGUEL ANASAGASTI, PEDRO; PREZ COSTOYA, FERNANDO. "Sistemas Operativos. Una visin aplicada. McGrawHill, 2001. DEITEL, H. M., Sistemas Iberoamericana, 1993. Operativos (2/Ed.), Addison_Wesley

FINKEL, R. A., Fundamentos de Sistemas Operativos . Un Estudio Actual de los Sistemas Operativos, Anaya Multimedia, 1990. MILENKOVIC, M., Sistemas Operativos. Conceptos y Diseo (2/Ed), McGrawHill, 1994. STALLINGS, W. Organizacin y Arquitectura de Computadores. Diseo para Optimizar Prestaciones (4/Ed.), Prentice Hall, 1997. TANENBAUM, A. S., Y WOODHULL, A. S. Sistemas Operativos. Diseo e Implementacin (2/Ed.), Prentice Hall, 1997. GEORGE COULOURIS, JEAN DOLLIMORE, TIM KINDBERG. "Distributed Systems, Concepts and Design", Addison-Wesley (1994). ABRAHAM SILBERSCHATZ; PETER GALVIN; GREG GAYNE: "Operating System Concepts" (6th. ed.). John Wiley & Sons, Inc 2002. ANDREW S. TANENBAUM. "Modern Operating System" (2nd ed.). Prentice Hall 2001. SILBERSCHATZ, A., Y GALVIN, P. B. Operating System Concepts (4/Ed. o siguientes), Addison-Wesley, 1994. STALLINGS, W. Operating Systems (2/Ed.), Prentice Hall, 1995. TANENBAUM, A. S., Modern Operating Systems, Prentice Hall, 1992. BEN-ARI, M. Principles of Concurrent Programming Prentice Hall, 1982. NUTT, G. Operating Systems. A Modern Perspective, Addison-Wesley Longman, 2000.

168

Das könnte Ihnen auch gefallen