Sistemas Operativos y Telecomunicaciones Generaciones Generación 0 (1940-1945) Carencia total de sistemas operativos y todas las operaciones se realizan en lenguaje de maquinas. Generación 1 (1945-1955) Aparecen otros dispositivos para el procesamiento interno de la información. También hay carencia de sistemas operativos y los trabajos se controlan utilizando lenguaje de máquina. 2da. Generación (1955-1965) Irrumpen los transistores en reemplazo de las válvulas y comienza el sistema de procesamiento por lotes también llamado “diferido” o “procesamiento batch”. Aparece en esta generación el “multiprocesamiento” que es la posibilidad de utilizar varios procesadores en un mismo sistema incrementando el poder de procesamiento. Surge en esta etapa también la “multiprogramación” que implica la posibilidad de encontrar al mismo tiempo distintos programas de usuario en el almacenamiento principal cambiando el procesador de un trabajo a otro. Se produce lo que se conoce como “independencia de dispositivo”, los programas del usuario especifican las características de los dispositivos que requieren los archivos y es el sistema operativo el que asigna según los requerimientos y las disponibilidades. 3era. Generación (1965-1980) Aparecen los circuitos integrados, se difunde la multiprogramación que conlleva la partición de la memoria en porciones físicas lo que permite ejecutar distintos trabajos en cada una de ellas u el consecuente aprovechamiento de tiempo de espera en las operaciones de entrada / salida. Aparece también la protección por hardware del contenido de cada partición de memoria. Surgen también las técnicas de “SPOOLING” Surgen también lenguajes de control de tareas, uno de los mas comunes “JCL” (Job Control Lenguaje ) que especifican el trabajo y los recursos necesarios. Aparece también las opciones de tiempo compartido “TSO” (Time Sharing Options) que es una variante de la multiprogramación con usuarios conectados mediante terminales en línea permitiendo la operación de modo interactivo a conversacional. Surgen también los sistemas de tiempo real; las computadoras de rango medio y las capas de software entre el usuario y el hardware. 4ta. Generación (1980 al presente) A partir de las computadoras personales aparece un software amigable destinado a usuarios profesionales y con una interfaz gráfica muy desarrollada. Se desarrollan sistemas operativos en red y sistemas operativos distribuidos. Cada máquina ejecuta localmente su propio sistema operativo pero con el agregado de un controlador para la interfaz de la red con su software de bajo nivel y el software de conexión y acceso a archivos remotos. Los sistemas operativos distribuidos permiten que un programa se ejecute mediante varios procesadores a la vez, maximizando el paralelismo. Aparecen también emuladores de terminal para el acceso a equipos remotos desde computadoras personales, creando un ambiente de trabajo según el concepto de máquina virtual que la aísla del funcionamiento interno de la máquina. Proliferan los sistemas de gestión de base de datos accesibles mediante redes de comunicación. Sistema Operativo Conjunto de programa de proceso con las rutinas de control necesarias para mantener continuamente operativo al ordenador. El objetivo primario de un sistema operativo es optimizar todos los recursos del sistema para soportar todos los requerimientos, lo que se realiza mediante: a) b) Programas de sistemas que controlan la operación de la computadora en si. Programas de aplicación que resuelven los problemas de los usuarios. En este contexto el sistema operativo protege y libera al programador de la complejidad del hardware, colocando un nivel de software por sobre el hardware para controlar todas las partes del sistema y presentar al usuario una interfaz gráfica o maquina virtual. En este contexto un sistema de cómputos incluye: a) b) Programas de sistema como ser compiladores editores, interpretes de comando. Programas de aplicación comercial, científicos, técnicos, juegos, etc. El sistema operativo se trata de un software que generalmente se localiza en la memoria de solo lectura (ROM) Buscan las instrucciones que se encuentran en lenguaje de máquina y las ejecuta como una serie de pequeños pasos que sirven para desplazar datos, hacer operaciones aritméticas y comparar valores. Los dispositivos de entrada / salida se controlan al cargar valores en registros del dispositivo. El sistema operativo administra básicamente los recursos y sus principales características son: Definir la interfaz del usuario Compartir el hardware entre usuarios Permitir al usuario compartir los datos Planificar recursos Facilitar las operaciones de entrada / salida Recuperarse de los errores Los principales recursos administrados por el sistema operativo son: Procesador / procesadores Almacenamiento Los dispositivos de entrada / salida Los sistemas operativos representan una interfaz con operadores, programadores de aplicaciones, programadores del sistema, programas, hardware y usuarios. La interfaz entre el sistema operativo y los programas de usuarios se define como el conjunto de instrucciones ampliadas que proporciona el sistema operativo y son las “llamadas al sistema”. Estas crean, eliminan y utilizan objetos del software controlados por el sistema operativo entre los que se encuentran procesos y archivos. Un proceso es el concepto central de cualquier sistema operativo básicamente se trata de un programa en ejecución con todo lo que esto implica: el ejecutable, sus datos, la pila de instrucciones, contadores, y otros registros además de toda la información necesaria para ejecutar el programa. La información de control relacionada con los procesadores se almacena en la tabla de procesos y es administrada por el sistema operativo, en realidad se trata de un arreglo de estructuras, una por cada proceso existente en ese momento. Un proceso suspendido consta de un espacio de dirección y los datos pertinentes de la tabla de procesos. Un proceso puede crear otros procesos los que a su vez pueden generar nuevos procesos conformando un árbol de procesos. Los archivos son fundamentales para conservar los datos. Una de las funciones principales del sistema operativo es brindar independencia de dispositivos. Muchos sistemas operativos soportan el concepto de directorio como una forma de agrupar archivos; donde cada directorio se estructura jerárquicamente de manera tal que a cada archivo le corresponde una ruta de acceso. Llamadas al Sistema: permiten al programa comunicarse con el sistema operativo y solicitarle servicios. A cada llamada le corresponde un procedimiento que ponen los parámetros de los llamadas en un lugar específico para luego ejecutar como instrucción tipo “TRAP” es llamado a procedimiento protegido para iniciar la operación, luego de TRAP el sistema operativo recupera el control y examina los parámetros de manera que si son validos ejecuta el trabajo solicitado. Luego de terminar el sistema operativo coloca un código de estado en un registro especial indicando si tuvo éxito o fracaso y ejecuta una instrucción de tipo “RETURN FRON TRAP” para devolver el control al procedimiento. Estructura de los Sistemas Operativos De acuerdo con la organización interna se los puede clasificar de la siguiente manera: 1° Sistemas Monolíticos: no tiene una estructura propiamente dicha, se trata de una colección de procedimientos que se pueden llamar entre si; cada procedimiento posee una interfaz perfectamente definida en términos de parámetros y resultados. 2° Sistemas con Capas: se trata de una generalización del modelo de estructuras de un sistema monolítico organizándose el sistema operativo como una jerarquía de capas cada una de ellas construida sobre la inmediata anterior. La capa 0 proporciona la multiprogramación básica alternando entre procesos cuando ocurren las interrupciones o expiran los cronómetros. La capa 1 administra la memoria. La capa 2 administra la comunicación entre cada proceso y la consola del operador; por sobre esta capa cada proceso tiene su propia consola de operados. La capa 3 controla los dispositivos de entrada / salida y almacena en buffers los flujos de información entre ellos. Cada proceso puede trabajar con dispositivos de entrada / salida abstractos en lugar de los dispositivos reales. La capa 4 aloja los programas del usuario, los que no tienen que preocuparse ni por el proceso, ni por la memoria, ni por la consola del operador ni por el control de entrada / salida. La capa 5 es la que localiza el proceso operador del sistema. 3° Máquinas Virtuales: se separan totalmente las funciones de multiprogramación y de máquina extendida, poseen un elemento central llamado “monitor “ que se ejecuta en el hardware, realiza la multiprogramación y proporciona varias máquinas virtuales, las que se instrumentan como copias exactas del hardware y todo lo que posee una máquina real. Las distintas máquinas virtuales pueden ejecutar distintos sistemas operativos. Soportan periféricos virtuales . Uno de los ejemplos es la estructura VM / 370 de IBM (Virtual Machina) 4° Modelo Cliente – Servidor: los sistemas operativos modernos suelen mover el código a capas superiores y mantener un núcleo mínimo de manera muy similar al VM / 370, implantando la mayoría de las funciones del sistema operativo en los procesos de usuario. Un proceso de usuario (proceso cliente) envía una solicitud a un proceso servidor, el que realiza el trabajo regresando la respuesta. Los servidores se ejecutan como procesos en modo de usuario. No tienen acceso directo al hardware por lo que se aíslan y acotan mas fácilmente los problemas. Se adapta su uso en los sistemas distribuidos. Tendencias: las principales tendencias en los sistemas operativos son: Soporte generalizado para el multiprocesamiento Eficiencia en el soporte de la ejecución concurrente de programas Distribución del control entre procesadores localizados Soporte de paralelismo masivo con alto grado de concurrencia Proliferación de redes de sistema distribuyendo tareas en diferentes equipos Concepto de almacenamiento virtual El Hardware Los aspectos principales del hardware en relación con los sistemas operativos son: 1° El Registro de Relocalización: Permite reubicar de forma dinámica los programas en la memoria, la dirección base del programa en la memoria principal se coloca en el registro de relocalización y se añade a cada dirección desarrollada por un programa en ejecución 2° Interrupciones y Escrutinio: las interrupciones permiten a una unidad o dispositivo obtener la inmediata atención de otra de manera que la primera pueda informar el cambio de estado. Escrutinio es la técnica que permite que una unidad verifique el estado de otra de funcionamiento independiente. 3° Utilización de los Buffers: son áreas de almacenamiento primario destinada a contener datos durante transferencias de entrada / salida. No puede haber simultaneidad en las operaciones de lectura o grabación de los datos en el buffer y su procesamiento. 4° Dispositivos Periféricos: son los que permiten el almacenamiento de grandes volúmenes de información fuera del almacenamiento primario. Existen diversos dispositivos secuenciales y de acceso directo con características y prestaciones muy variadas. 5° Protección del Almacenamiento: limita el número de direcciones que un programa puede referenciar, pudiendo utilizar claves de protección de almacenamiento, anexar a pareas de almacenamiento primario: un programa solo puede acceder a direcciones de almacenamiento cuyas claves de protección concuerden con las del programa. Es esencial en los sistemas multiusuario y se implementan mediante registros de límites que definen las direcciones inferior y superior del bloque de almacenamiento asignado a un determinado programa. 6° Temporizadores y Relojes: los temporizadores de intervalos previenen que un solo usuario monopolice el procesador en sistemas multiusuario; el temporizador genera también una interrupción al procesador cuando expira el intervalo asignado. El reloj horario permite al computador hacer un seguimiento de la hora con una exactitud de una millonésima de segundo. 7° Operaciones en Línea y Fuera de Línea: consideraremos una operación en línea cuando los periféricos utilizados están conectadas al procesador y fuera de línea cuando los periféricos utilizados están conectados a unidades de control que no están conectadas al sistema central. 8° Canales de Entrada y Salida: están dedicados al manejo de la entrada / salida con independencia del procesador principal. Tienen acceso directo al almacenamiento principal para guardar o recuperar información; evitan al procesador principal el manejo de la entrada / salida incrementando la concurrencia. Los principales tipos de canales son selectores y multiprocesadores. 9° Dirección de Base mas Desplazamiento: todas las direcciones son añadidas al contenido de un registro base de manera que los programas mas independientes de la localización. 10° Instrucciones Privilegiadas: corresponden a distintos estados de ejecución; los programas de usuario corren bajo el estado de problema o de usuario y tienen acceso a un subconjunto del conjunto de instrucciones de la máquina. El sistema operativo corre bajo el estado supervisor y de núcleo, teniendo acceso a todo el conjunto de instrucciones de la máquina. Las instrucciones privilegiadas son aquellas a las que no se tiene acceso un estado de problema. 11° Almacenamiento Virtual: Permite a los programas referenciar direcciones que no se corresponden con las direcciones reales disponibles en el almacenamiento primario; sin embargo son traducidas en tiempo de ejecución dinámicamente por el hardware a las direcciones reales de instrucciones y datos del almacenamiento principal. Se utilizan técnicas de paginación que son bloques de datos de tamaño fijo que interactúan entre el almacenamiento primario y el secundario. Y segmentación que identifica las unidades lógicas de los programas y datos para facilitar el control de acceso. 12° Multiprocesamiento: es cuando varios procesadores comparten un almacenamiento primario compón y un solo sistema operativo. Se hace necesario secuencial izar el acceso a las direcciones de almacenamiento compartido para que dos o mas procesadores no intenten modificarla al mismo tiempo o modificarla uno mientras otro intenta leerla. 13° Acceso Directo a la Memoria: esto requiere de una sola interrupción al procesador por cada bloque de caracteres transferidos durante la entrada o salida. Esto mejora significativamente la performance. Resulta muy útil para procesos con alto requerimiento de entrada / salida y es responsable de la operatoria del canal “DMA” (Direct Memory Acces) que es un hardware responsable de la operación de los dispositivos de entrada / salida. 14° Canalización: es una técnica de hardware para explotar cierto tipo de paralelismo durante el procesamiento de instrucciones, los que pueden estar simultáneamente en diferentes estados de ejecución. 2346 15° Jerarquía del Almacenamiento: Básicamente existen 3 categorías: Primario: también llamada memoria principal. Secundario: compuesta por distintos soportes de almacenamiento como ser discos, cintas, etc. Y el almacenamiento Caché que se trata de una memoria muy veloz diseñada para amortiguar la diferencia de velocidad de ejecución de los distintos periféricos y de los programas en ejecución. Al bajar en la jerarquía desciende el costo y la velocidad, pero aumenta la capacidad. El Software Consiste en las instrucciones y datos que definen para el hardware los algoritmos necesarios para la resolución de problemas. Los aspectos mas destacados en relación con los sistemas operativos son: 1° El Lenguaje de Máquina: que es un lenguaje de programación que el ordenador puede comprender directamente; es totalmente dependiente del equipo ya que generalmente no puede ser ejecutado en ningún otro equipo de otro fabricante. Los ensambladores y compiladores se desarrollaron para incrementar la velocidad de programación y reducir los errores de codificación. Mediante los ensambladores son traducidos al lenguaje de máquina al tiempo que se incorporan macroinstrucciones para atender la entrada / salida. Los compiladores abordan lenguaje de alto nivel traduciéndolo al lenguaje de máquina y resolviendo el problema de la dependencia respecto a la máquina. Se logra mayor velocidad de programación y generan módulos ejecutables transportables y que pueden ser utilizados con menores requerimientos de hardware. En la entrada tendremos el SOURCE o programa fuente que escribe el programador en un determinado lenguaje. En la salida tendremos el programa objeto o ejecutable que atenderá todos los requerimientos de la programación en un lenguaje de máquina. 2° Sistema de Control de Entrada / Salida ( IOCS ): Liberan al programador de aplicaciones de la complejidad de la administración de los programas de canal, coordinación de canales y procesadores y del control de la entrada / salida. Es una tendencia actual para que los desarrolladores de aplicaciones se concentren en la producción de software orientados a las aplicaciones y no al hardware. 3° La utilización del SPOOL (Simultaneous Peripheral Operations On-Line): se trata de dispositivos de alta velocidad, en general discos que se interponen entre un programa de ejecución y un dispositivo de baja velocidad, como ser una impresora, relacionando con el programa en la entrada / salida, este evita demoras en la ejecución como consecuencia del paso de periféricos lentos. 4° Cargadores absolutos y de reubicación: los programas se ejecutan en el almacenamiento digital. Una asignación es la asociación de instrucciones y datos con direcciones particulares del almacenamiento. El cargador es quien coloca las instrucciones y datos dentro de las direcciones del almacenamiento principal; el cargador absoluto coloca las instrucciones y datos de direcciones especificas indicadas por el programa en lenguaje de máquina y el cargador de relocalización disponiendo de la disponibilidad en el almacenamiento primario al momento de realizar la carga, lo podrá hacer en distintos lugares. 5° La Memoria Fija: el concepto de microprogramación fue aplicado a gran escala por los primeros sistemas /360 de IBM en la década del ´60 permitiendo cargar fácilmente los microprogramas en el almacenamiento principal desde donde son ejecutados permitiendo variar dinámicamente los conjuntos de instrucciones de máquina. La microprogramación introduce una capa por debajo del lenguaje de máquina donde cada instrucción es implementada por un micro programa completo. 6° Micro Códigos Vertical y Horizontal: el micro código vertical es similar a la ejecución de instrucciones en lenguaje de máquina y especifican el movimiento de uno o varios datos entre registros. 2346El micro código horizontal esta constituido por micro instrucciones que requieren mayor cantidad de bits, pudiendo especificar la operación paralela de movimiento de datos entre muchos o todos los registros de datos de la unidad de control; es mas complejo y mas poderoso que el micro código vertical. 7° Micro Diagnósticos: se puede intercalar el micro diagnóstico con las instrucciones de programa en lenguaje de máquina. En general los computadores personales, proporcionan un ambiente de propósito general para ejecutar programas de software moldeando el sistema computacional según las necesidades del usuario. Algunos sistemas de usuarios pueden efectuar esta adaptación por medio de micro código, permitiendo efectuar una mayor detección y corrección de errores a un nivel XXXXXXXX Las funciones implementadas frecuentemente en micro códigos son las siguientes: Manejo de interrupciones Mantenimiento de distinto tipos de estructuras de datos Sincronización de acceso a datos compartidos y otros usuarios Operaciones de manipulaciones de bits en forma eficiente Intercambio rápido del procesador entre los usuarios de un sistema de usuarios múltiples Secuencias de llamados y regreso a procedimientos. Procesos y Administración del Procesador: el concepto central de cualquier sistema operativo es el proceso. Se trata de una abstracción de un programa en ejecución también llamado “tarea”. Si bien no hay un acuerdo universal sobre la definición del proceso, algunas definiciones aceptadas son: Programa que se esta ejecutando Actividad asincrónica Emplazamiento del control de un procedimiento que esta siendo ejecutado Aquello que se manifiesta por la existencia en el sistema operativo de un bloque de control de proceso Entidad a la cual son asignados los procesadores Unidad despachable En los sistemas de multiprogramación la CPU alterna de programa en programa, es decir ejecuta en un cierto instante un solo programa intercambiando muy rápidamente entre uno y otro. El paralelismo real de hardware se da en la ejecución de instrucciones de programas con mas de un procesador de instrucciones en uso simultáneamente. El objetivo es aumentar el paralelismo en la ejecución superponiendo ejecución de instrucción de programa con la ejecución de operaciones de entrada / salida. La jerarquía de procesos obliga a los sistemas operativos a disponer de una forma de crear y destruir procesos cuando se requiera durante la operación; debiendo efectuar las siguientes consideraciones con relación a los estados del proceso: cada proceso es una entidad independiente que puede interactuar con otros procesos; los procesos pueden bloquearse en su ejecución esperando datos que aún no están disponibles o bien porque el sistema operativo asigno la CPU a otro proceso. Los estados que un proceso pueden tener son: En Ejecución: esta utilizando la CPU en este instante Listo: se detiene en forma temporal para que se ejecute otro proceso Bloquear: no se puede ejecutar debido a la ocurrencia de algún evento externo Son posibles 4 transiciones entre estos estados. Durante su existencia todo 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 listos y una “lista de bloqueados” para los bloqueados. La lista de listos se mantiene en orden prioritario mientras que la lista de bloqueados se encuentra desordenada ya que los procesos se desbloquean en el orden en que ocurren los eventos que se están esperando. Al admitirse un proceso en el sistema se crea un proceso equivalente y es insertado en el último lugar de la lista de listos; cuando se asigna la CPU al primer proceso de la lista de listos, esta operación se denomina despacho y es ejecutado por una entidad del sistema operativo llamada “despachador” El bloqueo es la única transición de estado iniciado por el propio proceso del usuario, las otras transiciones son iniciadas por entidades ajenas al proceso. La manifestación de un proceso en un sistema operativo es un bloque de control de procesos (PCB) con la siguiente información: Estado actual del proceso Identificación única del proceso Prioridad del proceso Registros y apuntadores para localizar la memoria del proceso Registros y apuntadores para asignar recursos Área para preservar registros Cuando el sistema operativo cambia la atención de la CPU entre procesos utiliza las áreas de preservación del PCB para conservar la información que le permita reiniciar el proceso cuando disponga nuevamente de la CPU Los sistemas que administran los procesos deben poder crear, destruir, suspender, reanudar, cambiar la prioridad, bloquear, iniciar o despachar un proceso. La creación de un proceso significa darle nombre, insertarlo en la lista de listos, determinar la prioridad inicial, crear el PCB y asignar los recursos iniciales. La destrucción de un proceso implica borrarlo del sistema, devolver sus recursos al sistema, eliminarlo de todas las listas del sistema y borrar su PCB Reanudar un proceso implica reiniciarlo en el punto donde fue suspendido; un proceso suspendido no puede proseguir hasta que otro proceso lo reanude. Se denomina tabla de procesos al conjunto de información de control sobre los procesos en ejecución. Procesamiento de Interrupciones: una interrupción es un evento que altera la secuencia en que el procesador ejecuta las instrucciones y es generada por el hardware del computador. Cuando ocurre una interrupción el sistema operativo: toma el control, salva el estado del proceso interrumpido en su PCB, analiza la interrupción y transfiere el control a la rutina apropiada para la manipulación de la interrupción. Una interrupción puede ser iniciada por un proceso en ejecución o por un evento que puede o no estar relacionado con un proceso en ejecución. Las interrupciones se pueden clasificar por tipos según el siguiente detalle: SVC (Supervisor Call): se trata de una petición generada por el usuario para un servicio en particular por ejemplo una operación de entrada / salida o la petición de mas memoria. de Entrada / Salida: son iniciados por el hardware indicando a la CPU que ha cambiado el estado de un canal o dispositivo por ejemplo la finalización de una operación de entrada / salida o la ocurrencia de un error. Externas: son causadas por distintos eventos, por ejemplo la expiración del tiempo asignado al proceso. de Verificación de Programa: son causadas por errores producidos durante la ejecución de procesos por ejemplo intento de división por cero, intento de ejecutar un código de operación invalido o de ejecutar una instrucción privilegiada. De Verificación de Máquina: estas son ocasionadas por un mal funcionamiento del hardware (rotura del disco). Los sistemas operativos poseen rutinas manipuladoras de interrupciones para procesar cada tipo diferente de interrupción. Cuando se produce como interrupción el sistema operativo realiza las siguientes acciones: 1) 2) Salva el estado del proceso que lo genera Dirige el control al manipulador de interrupciones adecuado Los sistemas operativos guardan la información de control en las PSW (Program Status Word). Palabra de Estado del Programa. La PSW actual almacena la dirección de la próxima instrucción que será ejecutada e indica los tipos de instrucción que en ese momento están habilitadas e inhabilitadas. En un sistema con un solo procesador existen 1 PSW actual, 6 PSW nuevas y 6 PSW viejas en ambos casos, una para cada tipo de interrupción. Cuando ocurre una interrupción, la PSW actual es almacenada en la PSW vieja para este tipo de interrupción y la PSW nueva pasa a la actual. La PSW actual contiene la dirección del manipulador interrupción adecuado; el manipulador de interrupciones procesa la interrupción y luego la CPU es enviada al proceso que estaba en ejecución al momento de la interrupción o al proceso de listos que tenga la mas alta prioridad. El Núcleo del Sistema Operativo El núcleo controla todas las operaciones que implican procesos y generalmente permanece en el almacenamiento primario. El proceso de interrupciones se incluye en el núcleo ya que debe ser rápido para optimizar el uso de los recursos del sistema y proveer tiempos de respuestas aceptables a los usuarios interactivos. El núcleo del sistema operativo realiza las siguientes funciones: 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) Manipulación de interrupciones Creación y destrucción de procesos Cambio de estados de procesos Despacho Suspensión y reanudación de procesos Sincronización de procesos Comunicación entre procesos Manipulación de bloques de control de acceso Soporte para las operaciones de entrada / salida Soporte para la asignación y desasignación de almacenamiento Soporte para los sistemas de archivos Soporte para los llamados y retornos a procedimientos Soporte para funciones contables Planificación de Procesos Cuando mas de un proceso puede ser ejecutado el sistema operativo debe decidir cual de ellas debe ejecutarse en primer termino. El planificador es la porción del sistema operativo que decide, utilizando el algoritmo de planificación en base a los siguientes criterios: CRITERIO 1) Equidad DESCRIPCIÓN Garantiza que cada proceso tenga la porción de CPU necesaria 2) Eficacia Mantener la CPU ocupada el mayor tiempo posible 3) Tiempo de Respuesta Minimizar el tiempo de respuesta para los usuarios interactivos 4) Tiempo de Regreso Minimizar el tiempo de espera de los usuarios por lotes (batch) para obtener los resultados 5) Rendimiento Maximizar el número de tareas procesadas por hora Cada proceso es único e impredecible; puede requerir intensivamente operaciones de entrada / salida o intensivamente la CPU; como el planificador del sistema operativo no tiene la certeza cuanto tiempo transcurrirá hasta que un proceso se bloquee, ya sea por una operación de entrada / salida o por otra razón, la planificación del procesador será: a) Planificación Apropiativa: es la estrategia que permite que los procesos ejecutables sean suspendidos temporalmente b) Planificación No Apropiativa: es la estrategia que permite la ejecución de un proceso hasta terminar. Consideraremos 3 niveles de planificación: 1) 2) 3) Planificación de Alto Nivel: también llamado planificación de admisión, determina a que procesos de los va a permitir competir por los recursos del sistema Planificación de Nivel Intermedio: esta planificación determina cuales son los procesos a los que se les puede permitir competir por la CPU, responde a fluctuaciones en el corto plazo de la carga del sistema, efectuando suspensiones y activaciones / reanudaciones de procesos; ayuda a alcanzar metas en el rendimiento total del sistema. Planificación de Bajo Nivel: determina a que procesos de la lista de listos se le asigna la CPU cuando esta queda disponible y despacha la CPU al proceso; el despachador del sistema operativo reside en el almacenamiento primario. Objetivos de la Planificación Los objetivos de la planificación del procesador son las siguientes: Planificación Justa: todos los procesos deben ser tratados de igual manera y ningún proceso puede ser postergado indefinidamente Maximizar la Capacidad de Ejecución: es decir el numero de procesos servidos por unidad de tiempo. Maximizar el numero de usuarios interactivos que reciban tiempos de respuestas aceptables La ejecución de un trabajo debe ser predecible, es decir ejecutarse en el mismo tiempo independientemente de la carga del sistema Minimizar la sobrecarga Equilibrar el uso de recursos Equilibrar la respuesta y la utilización de recursos Evitar la postergación indefinida: mientras un proceso espera por un recurso su prioridad debe aumentar, de esta manera la prioridad llegara a ser tan alta que finalmente recibirá el recurso esperado Asegurar la prioridad favoreciendo a los procesos con prioridades mas altas Dar mejor tratamiento a los procesos que muestran en comportamiento deseable, es decir una baja tasa de paginación Degradarse suavemente con cargas pesadas, es decir no colapsar con una exigente carga del sistema Criterios de Planificación Todo mecanismo de planificación debe considerar entre otras cosas la limitación de un proceso a las operaciones de entrada / salida; la limitación de un proceso al tiempo de uso de la CPU; que tipo de proceso por lote o interactivo; que urgencias tienen las respuestas ya que no son las mismas para los procesos de tiempo real que los procesos de batch; la prioridad de los procesos; el tiempo de ejecución real que debe recibir el proceso; el tiempo adicional que puede necesitar para terminar el proceso. Las disciplinas de la planificación pueden ser Apropiativas, cuando una vez que se le ha otorgado a la CPU cuando a un proceso le puede ser retirada y la No Apropiativa cuando una vez otorgado a la CPU no le puede ser retirada. Las principales características de una planificación apropiativa son: Máxima utilidad para procesos de alta prioridad que requieren atención rápida, garantizan buenos tiempos de respuestas en sistemas interactivos de tiempo compartido; mayores costos en recursos ya que requieren mantener muchos procesos en el almacenamiento principal en espera de la CPU la que también implica sobrecarga. Las principales características de la Planificación No Apropiativa son: Los trabajos largos hacen esperar a los trabajos cortos, sin embargo logran mayor equidad en el tratamiento de los procesos haciendo mas predecibles los tiempos de respuesta. PRIORIDADES pueden ser de distintos tipos: 1) Asignadas automáticamente por el sistema 2) Asignadas desde el exterior 3) Dinámicas: responden al cambio, la prioridad inicial asignada puede durar poco tiempo y luego ser reajustado a un mayor o menos valor; los mecanismos de implementación son mas complicados e implican una sobrecarga mayor que para los esquemas estáticos. Finalmente las prioridades asignadas arbitrariamente necesitan un mecanismo del sistema para distinguir entre procesos sin importarle cual es el más importante. 4) Estáticas: no cambian, poseen mecanismos de implementación sencillos, implican una sobrecarga relativamente baja 5) Asignadas racionalmente 6) Asignadas arbitrariamente Multiprocesamiento Es una tendencia que consiste en configurar un sistema de cómputos con varios procesadores. Si bien no se trata de un enfoque nuevo, posee grandes perspectivas en función del gran desarrollo que han tenido los microprocesadores; al punto de concebir sistemas distribuidos con cientos de microprocesadores. Si un procesador falla los restantes quedaran operando lo cual no es automático y requiere de un cuidadoso diseño; si un procesador falla deberá informarlo de alguna manera a los demás para que se hagan cargo de su trabajo; esto implica que el sistema operativo debe determinar que un procesador ha fallado, para no asignarlo y para ajustar su estrategia de asignación de recursos, para evitar la sobrecarga del sistema grabado. Explotación del Paralelismo La mayoría de los sistemas de multiprocesamiento tienen como meta el incremento en la capacidad de ejecución; la programación sigue siendo esencialmente secuencial y generalmente no se explota la concurrencia; esto es así ya que las personas piensan en forma secuencial y ningún lenguaje humano proporciona expresiones adecuadas de paralelismo. El hardware tradicional también esta orientado hacia la operación secuencial y es muy difícil depurar programas en paralelo. Lo deseable seria que los sistemas operativos y compiladores pudieran detectar e implementar el paralelismo automáticamente Organización del Hardware del Multiprocesador La clave esta en determinar los medios de conexión de los procesadores múltiples y los procesadores de entrada / salida a las unidades de almacenamiento. Los multiprocesadores se caracterizan por: 1) 2) 3) Un multiprocesador contiene 2 o mas procesadores con capacidades semejantes Todos los procesadores comparten el almacenamiento el acceso a un almacenamiento común, a canales de entrada / salida, unidades de control y diversos dispositivos Todo es controlado por un sistema operativo que proporciona interacción entre procesadores y sus programas a nivel de trabajo, área, paso, archivo y elementos de datos Todo indica que el uso de multiprocesadores se incrementara considerablemente en virtud de la reducción de costos, consecuencia de los avances de la micro-electrónica. El previsible desarrollo de lenguajes que permitan a los usuarios expresar el paralelismo y consecuentemente el progreso de la detección automática del paralelismo Administración de Memoria La organización y administración de la memoria principal, memoria primaria o memoria real es uno de los factores mas importantes en el diseño de los sistemas operativos; los términos memoria y almacenamiento se consideran equivalentes Tanto los datos como los programas deben estar en el almacenamiento principal para poder ejecutarlos y reverenciarlos directamente. Se considera almacenamiento secundario o almacenamiento auxiliar al que generalmente esta soportado en discos La parte del sistema operativo que administra la memoria de aquellas que se están utilizando como de aquellas que no; asigna espacio en memoria a los procesos cuando estos lo necesitan y libera el espacio asignado a procesos que han terminado. Organización del Almacenamiento Se entiende por organización de almacenamiento a la manera de considerarlo. Si se encuentran varios programas de usuarios, se considerará a cada uno la misma cantidad de espacio o se decidirá el almacenamiento a proporcionar a peticiones de diferente tamaño Se utilizará un esquema rígido de número y tamaño de particiones o un esquema dinámico y adaptable Se requerirá que los trabajos de usuarios sean diseñados para funciones en una partición específica o se permitirá que se ejecuten en cualquiera que quepan Se requerirá o no que cada trabajo sea colocado en un bloque contiguo de memoria Independientemente de la organización se debe decidir sobre las estrategias que se utilizaran para optimizar el rendimiento, donde se ejecutará el programa que se ejecutará a continuación: se priorizará el tiempo de ejecución o el uso del almacenamiento; con que criterio se desplazarán los programas; cual de la lista de listos; cual de la lista de listos se colocará en la memoria Hemos dicho que tanto los programas como los datos tienen que estar en la memoria principal para poder ejecutarse o ser referido. Tanto los programas como los datos que no son necesarios de inmediato se pueden mantener en el almacenamiento secundario El almacenamiento principal es mas costoso y pequeño que el secundario pero tiene acceso mas rápido; los sistemas con varios niveles de almacenamiento requieren destinar recursos para administrar el movimiento de programas y datos entre niveles. Un nivel adicional es la memoria caché de alta velocidad que posee las siguientes características: Es mas rápida y costosa que la memoria principal, impone al sistema un nivel mas de traspaso Si bien los programas se ejecutan mucho mas rápido en la memoria caché que es la memoria principal, se espera que la sobrecarga que supone el traspaso de programas de un nivel de memoria a otras sea mucho menor que la mejora en el rendimiento obtenida Las estrategias de administración del almacenamiento están dirigidas al mejor uso posible del almacenamiento principal, y se dividen en las siguientes categorías: 1) Estrategias de Búsqueda: están relacionadas con la oportunidad de obtener el siguiente fragmento de programa o de datos para su inserción en la memoria principal. Esta estrategia puede ser de búsqueda por demanda cuando el siguiente fragmento de programas o datos se carga en el almacenamiento principal por una referencia de algún programa en ejecución 2) Estrategias de Colocación: están relacionadas con la determinación del lugar de la memoria donde se cargará un programa nuevo 3) Estrategias de Reposición: están relacionadas con la determinación de que un fragmento de programa o de datos pueda desplazar para dar lugar a un nuevo programa La asignación contigua de almacenamiento implica que cada programa ocupa un bloque contiguo y sencillo de localizadores de almacenamiento. En la asignación no contigua el programa se divide en bloques o segmentos que pueden almacenarse en direcciones no necesariamente adyacentes por lo que es mas compleja pero mas eficiente que la asignación contigua Si se utiliza asignación contigua de memoria la protección suele implementarse con varios registros de límites para los extremos superior e inferior de la partición, indicando también el tamaño de la partición o región La fragmentación del almacenamiento ocurre en todos los sistemas independientemente de la organización de la memoria En los sistemas operativos de multiprogramación con partición fija la fragmentación se produce cuando los trabajos del usuario no llenan completamente sus particiones o porque una partición permanece sin usar porque es demasiado pequeña para alojar un trabajo que está en espera Utilizaremos multiprogramación con particiones variables para que los procesos puedan ocupar tato espacio como el que necesiten, obviamente sin superar el espacio disponible de memoria. Si bien no hay limites fijos de memoria se consideran esquemas de asignación contigua ya que los programas deben ocupar posiciones adyacentes de almacenamiento Los procesos que terminan van dejando espacios disponibles de memoria principal llamados agujeros, los que podrán ser utilizados para nuevos trabajos dando lugar en su finalización a nuevos agujeros mas pequeños generando un desperdicio de memoria principal. Podría llegar a ocurrir que los agujeros (áreas de memoria libre) distribuidos por todo el almacenamiento principal constituyan una cantidad importante de memoria de manera que podría ser suficiente para muchos de los procesos de la lista de listos; es por ello que se hace necesaria utilizar alguna compresión o compactación de almacenamiento, es decir pasar todas las áreas ocupadas a uno de los extremos de la memoria principal dejando un solo agujero grande de memoria libre contigua; esta técnica se conoce como recogido de residuos y su principal desventaja es que consume mucho recursos del sistema. Introducción a la Organización del Almacenamiento Virtual Esto significa la capacidad de direccional un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario; esta tecnología surgió a principios de la década del ´60 y los métodos mas comunes de implementación son: 1) 2) 3) Técnicas de Paginación Técnicas de Segmentación Combinación de ambas técnicas Las direcciones generadas por los programas en su ejecución no son necesariamente aquellas contenidas en la memoria real ya que las direcciones virtuales suelen seleccionarse dentro de un número mayor de direcciones que las disponibles en el almacenamiento primario Con el transcurso del tiempo la evolución en las organizaciones de almacenamiento podrían resumirse en: REAL a) b) b1) b2) Sistema dedicado a un solo equipo Sistema de multiprogramación de memoria REAL en partición fija, absoluta o reubicable multiprogramación en partición variable Virtual Multiprogramación en Almacenamiento Virtual a) Paginación Pura b) Segmentación Pura c) Combinación de las 2 anteriores La clave del concepto de memoria virtual está en la disociación de las direcciones a las que hace referencia un programa y a las direcciones disponibles en la memoria real (almacenamiento primario) Son direcciones reales aquellas que disponibles en el almacenamiento primario y direcciones virtuales las retenidas por un proceso en ejecución El espacio de direcciones reales es el número de direcciones reales disponibles en el ordenador; el espacio de direcciones virtuales es el número de direcciones virtuales a las que puede hacer referencia un proceso Si bien los procesos hacen referencia a direcciones virtuales estas deben ser ejecutadas en el almacenamiento primario, es decir en la memoria real: las direcciones virtuales deben ser transformadas en direcciones reales mientras el proceso esta en ejecución, esta traducción de direcciones debe hacerse rápidamente para no degradar el sistema Las direcciones contiguas dentro del espacio de direcciones virtuales de un proceso no necesariamente tienen que ser contiguas en el almacenamiento principal, a esto se lo conoce como contigüidad artificial Conceptos Básicos de Paginación Frecuentemente diferenciamos entre paginación pura y la combinación de paginación y segmentación. Las páginas se transfieren del almacenamiento secundario al primario en bloques llamados “marcos de páginas” tienen el mismo tamaño que las páginas y comienzan en direcciones de almacenamiento real que son múltiplos enteros del tamaño fijo de la página de manera de poder colocar una nueva página en cualquier marco de página disponible. Segmentación En los sistemas de segmentación, un programa y sus datos pueden ocupar varios bloques separados de almacenamiento real, los que si bien deben ser porciones contiguas de almacenamiento, no necesitan ser de igual tamaño y los bloques separados no necesariamente tiene que ser adyacentes. Se complica la protección de bloques de memoria en los procesos de usuario ya que es mas difícil limitar el rango de acceso de cualquier programa. Un proceso solo puede ejecutarse si el segmento actual como mínimo esta en el almacenamiento primario, el resto de los almacenamientos se van transfiriendo del almacenamiento secundario al primario como unidades completas a medida que se van necesitando. Un nuevo segmento puede ser colocado en una serie disponible de fracciones contiguas del almacenamiento primario de tamaño suficiente para alojar al segmento. Para la traducción dinámica de direcciones se utiliza “tabla de mapa de segmentos” Cuando se implementa el mapa de segmentos para diferentes procesos, se requiere una cuidadosa administración por parte del sistema operativo. Las diferentes organizaciones de almacenamiento virtual, como hemos visto pueden ser implementadas como: paginación, segmentación, y segmentación y paginación Para operar en los sistemas de almacenamiento virtual se utilizara alguna de las siguientes estrategias: 1. Estrategias de Búsqueda: cuando una pagina o segmento debe ser traído del almacenamiento secundario al primario aquí se podrá usar: A. Estrategia de Búsqueda por Demanda: que esperan a que el proceso haga referencia a una pagina o segmento antes de al almacenamiento primario. B. Estrategias de Búsqueda Anticipada: que trata de determinar por adelantado que paginas o segmentos hará referencias el proceso para traerlas al almacenamiento primario antes de que estas sean explícitamente referenciados. 2. Estrategias de Colocación: como una nueva pagina o segmento pueden ser colocados dentro de cualquier marca de paginación disponible o direcciones contiguas en el almacenamiento primario, es el SO quien toma la decisión acerca del lugar donde se colocara una nueva pagina o segmento en el almacenamiento primario. 3. Estrategias de Reposición: trata la decisión de cual pagina o segmento desplazan o renueve para hacer sitio a una nueva pagina o segmento cuando el almacenamiento primario esta comprometido. Las principales estrategias de reposición de pagina son: A. Principio de Optimización: para obtener un rendimiento óptimo indica la paginación que se va a reponer; es una de las que no se va a utilizar en el futuro durante un periodo de tiempo; el único inconveniente es que no es posible predecir si se va a utilizar a no B. Reposición de Paginas al Azar: este método es raramente utilizado y consiste en escoger al azar la pagina que va ser remplazadas; ya que todos las paginas tienen la misma probabilidad de ser remplazadas, incluyéndolas a la que a ser referenciadas a continuación (la peor selección). C. Reposición de Paginación por el Sistema (FIFO): en esta estrategia se registran el momento en que cada pagina ingresa al almacenamiento primario y para remplazar una pagina se selecciona aquella que ha permanecido mas tiempo almacenadas; el inconveniente que presenta es que se pueden reemplazar paginas muy usadas las que serán llamadas de nuevo al almacenamiento primario casi de inmediato. D. Reposición de Paginas Usadas Menos Recientemente: se basa en la heurística de que el pasado reciente es un buen indicador del futuro próximo; requiere que cada pagina reciba un indicador de tiempo cada vez que se referencia, por lo que es seleccionada para ser remplazada la pagina que no ha sido utilizada durante el mayor periodo de tiempo. E. Reposición de Pagina Frecuentemente Menos Usada: en esta estrategia interesa la intensidad de uso que ha tenido cada pagina por eso es seleccionada aquello que ha sido usada cada menos frecuencia o que ha sido referida con menos intensidad. F. Reposición de Pagina No Usada Recientemente: esta estrategia presupone que las paginas que no han tenido uso reciente tiene poca probabilidad de ser utilizada en el futuro próximo y pueden ser remplazadas por otras nuevas. Localidad El concepto de localidad expresa que los procesos tienden a hacer referencia al almacenamiento en patrones no uniformes y muy localizados. La localidad es una propiedad empírica (observada) que se manifiesta en el tiempo y en el espacio (localización temporal). Se apoya en la utilización de ciclos (loops); subrutinas, pilas, variables usadas para contar y totalizar. Espacialmente la localidad hace referencia a una localidad y la probabilidad de que las localidades cercanas también sean referenciadas, utiliza recorrido de arreglos; ejecución secuencial de códigos y las normas de programación que inciden a los programadores a colocar las definiciones de variables relacionadas próximas entre si. Conjunto de Trabajo Se trata de una colección de páginas a las cuales un proceso hace activamente referencia; de una manera que para que un programa se ejecute efectivamente su conjunto de trabajo debe mantenerse en el almacenamiento primario para evitar la hiper paginación Los conjuntos de trabajo cambian mientras un proceso esta en ejecución, es por ello que se debe evitar un exceso del compromiso del almacenamiento primario y la consecuente hiper paginación Paginación por Demanda En esta estrategia las paginas son cargadas por demanda es decir no son elevadas del almacenamiento secundario al primario hasta que son referenciadas explícitamente por un proceso en ejecución. Esto garantiza que solo las paginas que necesita el proceso son traídas al almacenamiento principal es mínima El principal inconveniente esta en aquellos procesos que requieren acumular sus paginas, la creciente cantidad de almacenamiento primario afectada al proceso que espera pagina se incrementa y consecuentemente lo hace el producto espacio tiempo que indica la cantidad de almacenamiento y la cantidad de tiempo que usa un proceso. Paginación Anticipada El sistema operativo intenta predecir que paginas va a necesitar un proceso y a continuación las pre-carga cuando hay espacio disponible mientras el proceso ejecuta las paginas actuales, el sistema estará cargando las paginas nuevas que están disponibles cuando el proceso las requiera, esto reduce el tiempo de ejecución de los procesos Liberación de Paginas Un proceso de usuario puede permitir una liberación voluntaria de pagina cuando no necesitará mas esas paginas. Se puede eliminar de memoria estos desperdicios para acelerar la ejecución de los procesos. El inconveniente que se presenta es la incorporación de comandos de liberación de paginas en los programas de usuarios lo que le puede retrasar el desarrollo de aplicaciones. Los compiladores y sistemas operativos deberían detectar automáticamente situaciones de liberación de página mucho antes de lo que es posible, con los problemas de usuarios. Tamaño de Pagina El almacenamiento real se divide en marcos, o celdas de paginas de tamaño fijo. Las consideraciones para determinar el tamaño de pagina son las siguientes: 1. Cuanto mas pequeño sea el tamaño de una pagina, mas paginas y marcos de paginas habrá y mayores las tablas de paginas; el desperdicio del almacenamiento debido al tamaño excesivo de las tablas de paginas se llama “fragmentación de tablas” lo que refleja la necesidad de paginas mas grandes. 2. Con paginas grandes encontraremos cantidad de información que nunca llegara a ser referenciada por lo que se paginara hacia el almacenamiento primario 3. Con las transferencias de Entrada / Salida (paginación de disco) consumen bastante tiempo, se deben minimizar la paginación que un proceso requiera; esto implica la necesidad de paginas grandes 4. Los programas tienden a mostrar la propiedad de dirección de referencia y esta dirección tiende a ser pequeña la cual indica la necesidad de paginas pequeñas 5. Los procedimientos y datos de los usuarios rara vez comprenden un numero entero de paginas por lo que los sistemas de paginación experimentan una fragmentación interna siendo el desperdicio promedio de media pagina no usada y que se ubicara en la última pagina del segmento; esto indica la necesidad de páginas pequeñas. En base de datos las consideraciones anteriores, los tamaños de paginas mas utilizadas son 512 bytes 1,2 Kb y 4 Kb. Archivos Todas las aplicaciones que utilicen un ordenador necesitan almacenar y recuperar la información; deben trascender a la duración de los procesos que los utilizan o generan; independizar la información de los procesos, permitiendo el acceso a la misma y superar las limitaciones del almacenamiento real. Las condiciones esenciales para el almacenamiento de la información a largo plazo son: la posibilidad de almacenar grandes volúmenes de información, lo que debe sobrevivir a la conclusión del proceso que la utiliza y posibilitar el acceso concurrente. La solución a este planteo es el almacenamiento de la información en diversos medios externos en unidades llamadas archivos. Los archivos son una colección de datos con nombre; deben ser persistentes, es decir que no deben verse afectados por la creación o terminación de un proceso; pueden ser manipulados por operaciones como abrir, cerrar, crear, eliminar, copiar, renombrar y listar. Los elementos de datos individuales dentro del archivo pueden ser manipulados por operaciones con lectura, grabación, regrabación y borrado. Funciones del Sistema de Archivos El sistema operativo es responsable de permitir y compartir controladamente la información de los archivos. Los usuarios deben poder crear, modificar y borrar archivos; también ordenar la transferencia de información entre archivos. Se deben proporcionar posibilidades de respaldo (back up) y recuperación para prevenirse contra la perdida accidental de la información o la destrucción maliciosa. Se deben poder referenciar los archivos completamente mediante nombres simbólicos de manera que tenga independencia de dispositivos; y en ambientes sensibles el sistema de archivos debe proporcionar posibilidades de cifrado y descifrado de la información. El Sistema de Archivos Un archivo es un conjunto de registros relacionados; es un conjunto heterogéneo de datos. El sistema de archivos suele contener: 1. 2. 3. Métodos de Acceso: para las distintas formas de acceder a los datos almacenados Administración de Archivos: por medio de mecanismos que permiten almacenarlos, reverenciarlos, compartirlos y resguardarlos Integridad de los Archivos: para garantizar la integridad de la información Los nombres de los archivos necesitan ser únicos solamente en un directorio de usuario dado Los reglas utilizadas para los nombres de archivos, varían de sistema a sistema; algunos distinguen las letras mayúsculas de las minúsculas y muchos sistemas operativos utilizan nombres de archivos en 2 partes separadas por un punto, siendo la parte derecha la extensión que generalmente indica algo relativo al archivo. Estructura de un Archivo Las estructuras mas comunes son: 1. 2. 3. Secuenciales: conformados por una serie no estructurada de bytes, poseen máxima flexibilidad Secuencia de Registros: en este caso el archivo es una secuencia de registros de longitud fija, cada uno con su propia estructura interna El Árbol: el archivo consta de un árbol de registros no necesariamente de la misma longitud donde cada registro tiene un campo clave en una posición física de registros. Tipos de Archivos Muchos sistemas operativos soportan distintos tipos de archivos: Archivos regulares son aquellos que contiene información del usuario; los directorios son archivos del sistema para el mantenimiento de la estructura del sistema de archivos y archivos especiales que tienen relación con la Entrada / Salida (terminales, impresoras, redes, etc.) Acceso a un Archivo Los mas conocidos son el Acceso Secuencial es en donde el proceso lee en orden todos los registros del archivo comenzando por el primero sin poder saltar registros o leer en otro orden. Acceso Aleatorio que es aquel en que el proceso puede leer los registros en cualquier orden y para determinar el punto de inicio de la lectura, pudiendo hacerlo a través de un READ o a través de un SEEK Cada archivo posee los siguientes atributos: Nombre y Datos; Protección (que tiene acceso y de que forma); Contraseña; Creador; Propietario; Indicador de Exclusividad (Lectura / Escritura); Indicador de ocultamiento; Indicador de Sistema (archivo normal o de sistema); Indicador de biblioteca (si se ha resguardado o no); Indicador de acceso aleatorio (acceso secuencial o aleatorio); Temporalidad (si tiene que ser eliminado al finalizar el proceso); Indicador de protección (bloqueado o no); Longitud del registro en bytes; Posición de la clave; Longitud de la clave en bytes; Fecha y hora de creación; Fecha y hora del último acceso; fecha y hora de la última modificación; Tamaño actual del número de bytes; Tamaño máximo al que puede crecer el archivo Operaciones con Archivos Las operaciones relacionadas con los archivos son: creación, eliminación, apertura, cierre, lectura, escritura, añadir, buscar, obtener atributos, establecer atributos y renombrar. Directorios Son utilizados por los sistemas operativos para llevar un registro de los archivos de manera que al abrir un archivo el sistema operativo busca en su directorio el nombre del archivo, extrae los atributos, y direcciones en disco; graba esta información en una tabla en memoria real y todas las referencias subsecuentes al archivo para utilizar dicha información Rutas de Acceso Cuando el sistema de archivos esta organizado como un árbol de directorios, se necesita una forma de determinar los nombres de los archivos; los principales métodos para el nombre de los archivos son: ruta de acceso absoluta donde cada archivo tiene una ruta de acceso absoluta desde el directorio raíz hasta el archivo y los componentes de la ruta de acceso (PATH) se separan mediante un carácter llamado separador Ruta de Acceso Relativa Se utiliza en el concepto de directorio de trabajo o directorio archivo de manera que el nombre absoluto de la ruta de acceso funciona sin importar cual es el directorio de trabajo Operaciones con Directorios Las mas comunes son: creación, eliminación, renombre, linkear, deslinkear (esta técnica permite que un archivo aparezca en mas de un directorio) Implantación de Archivos El aspecto clave en la implantación de un sistema de archivos es el registro de los bloques asociados a cada archivo, los métodos mas utilizados son: asignación contigua o adyacente, los archivos son asignados a áreas contiguas de almacenamiento secundario. Las principales ventajas son: facilidad de implantación ya que solo se precisa el número de bloque de inicio para localizar un archivo y tiene excelente rendimiento respecto de la Entrada / Salida. Las desventajas son: que produce una gran fragmentación de los discos y se debe conocer el tamaño máximo del archivo el momento de crearlo. Asignación No Contigua Son esquemas de almacenamiento dinámico en los que el disco se considera compuesto de sectores individuales, de manera que cuando los archivos constan de varios sectores los mismos pueden estar dispersos por todo el disco; los cuales contienen apuntadores de un sector a otro formando una lista encadenada. Las ampliaciones o reducciones en el tamaño de los archivos se resuelve actualizando la lista de espacio libre que contiene entradas para todos los sectores libres del disco. Las principales desventajas son debido a la dispersión en el disco y la recuperación de registros lógicamente contiguos puede significar largas búsquedas. El mantenimiento de la estructura de listos encadenados significa una sobrecarga en tiempo de ejecución y los apuntadores de la estructura de lista consumen espacio en disco. Asignación por Bloques Es mas eficiente y reduce la sobrecarga en ejecución, es una combinación de los métodos de asignación contigua y no contigua, ya que asigna bloques de sectores antiguos en lugar de sectores individuales, eligiendo bloques libres lo mas próximo posible a los bloques existentes del archivo. Implantación de Directorios Para abrir un archivo el sistema operativo utiliza información del directorio que contiene la información necesaria para encontrar los bloques del disco. La principal función del sistema de directorios es asociar el nombre del archivo con la posición del almacenamiento de los atributos que se puede almacenar directamente dentro del dato del directorio. Administración del Espacio en Disco Básicamente existen 2 estrategias para almacenar un archivo de “N” bytes, la primera de ellas es asignando los “N” bytes consecutivos en el disco, lo que tiene como dificultad que si el archivo crece, probablemente tendrá que desplazarse en el disco lo cual podrá afectar seriamente el rendimiento. La otra forma es dividir el archivo en un cierto número de bloques no necesariamente adyacentes; generalmente se utilizan bloques de ta2346maño fijo, siendo el sector, la pista o el cilindro los candidatos obvios como unidades de asignación. Deben tener presente que el tiempo de lectura de un bloque de disco es la suma de los tiempos de búsqueda (SEARCH) de posicionamiento (SEEK) también conocido como “demora rotacional” y el tiempo de transferencia. Confiabilidad de los Sistemas de Archivos Es necesario proteger la información contenida en los sistemas de archivos efectuando los resguardos correspondientes. Las perdidas generalmente se deben a problemas de hardware, de software, hechos externos, etc. Los problemas de hardware se solucionan reemplazando el componente defectuoso Cuando el problema es por soft se debe tratar de replicar el error para hacer las correcciones correspondientes. Las copias de seguridad, de respaldo o back up deben realizarse con frecuencia, estableciendo un plan de contingencia para el caso de la pérdida total de información. Las estrategias de respaldo consiste en dividir los discos en áreas de datos para un lado y de software por el otro. Cada noche o en el momento que se establezca, se puede ir realizando una copia diaria solo de aquellos archivos modificados desde el último respaldo, estos generalmente se hace en cintas dedicadas a los respaldos diarios entre respaldos completos. Desempeño del Sistema de Archivos El acceso a discos es mucho mas lento que el acceso a las memorias, los tiempos se miden en milisegundos y nanosegundos respectivamente; como se debe reducir el numero de accesos a discos, la técnica mas común es a través de la memoria caché que desde el punto de vista lógico pertenece al disco pero se mantiene en memoria por una cuestión de rendimiento El caché puede se tanto de lectura como de escritura y permite aumentar el rendimiento de los sistemas de archivos por la reducción en la cantidad de movimientos del brazo del disco. Descriptor de Archivos Es un bloque de control que contiene la información que el sistema necesita para administrar un archivo; se trata de una estructura muy dependiente del sistema que incluye generalmente la siguiente información: nombre simbólico del archivo; localización en el almacenamiento secundario; organización del archivo y método de acceso; tipo de dispositivo; datos de control de acceso; tipo de archivo; (datos, programa objeto, programa fuente, etc.); disposición (permanente o temporal); fecha de creación; fecha de destrucción; fecha de la última modificación; estadística de las actividades de acceso (cant. De lecturas, grabaciones, etc.) Seguridad Los sistemas de archivos contienen información muy valiosa para las organizaciones por lo que los sistemas de archivos deben protegerla. Entendemos por seguridad a los problemas relativos a la garantía de que los archivos no sean leídos o modificados por personal no autorizado; esto incluye aspectos técnicos, de administración, legales y políticos. Las facetas mas importantes de la seguridad son: la pérdida de datos y los intrusos. Las causas más comunes de la pérdida de datos son: actos y hechos diversos tales como incendios, inundaciones, terremotos, conflictos armados, roedores, etc. Errores de hardware tales como fallas en la CPU, sectores defectuosos, cintas ilegibles, errores de telecomunicaciones, etc. Errores humanos como ser montaje incorrecto de discos o cintas, entrada incorrecta de datos, ejecución de programas fuera de tiempo, etc. La mayoría de estas causas se pueden enfrentar con los respaldos adecuados (copias del back up en un lugar alejado de los datos originales) Respecto al problema de los intrusos se clasifican en “pasivos” a aquellos que solo desean leer archivos que no están autorizados y “activos” cuando se pretende realizar cambios no autorizados a los datos. Algunos tipo de intrusiones son: curiosidad casual de usuarios no técnicos; curiosidad casual de personal técnicamente capacitado, es lo que se conoce como husmeando. Intentos de liberados, por obtener algún beneficio económico y espionaje comercial o militar. Otro problema de la seguridad es la privacía: la protección de las personas respecto del mal uso de la información, implica aspectos legales y morales. También cabe señalar la posibilidad de ataque por parte de lo que se conoce como “troyanos”: modifica un programa normal para que además de su función usual, realice otras adversas; o modificar el software de manera que la víctima utilice una versión modificada. Los virus constituyen una categoría especial, de ataque representan un enorme problema para los usuarios. Los virus difieren de los gusanos en lo siguiente: un virus esta contenido en un programa existente mientras que un gusano es un programa completo en si mismo. Ambos intentan diseminarse y hasta provocar en algunos casos un daño severo. Generalmente los virus se ejecutan e intentan reproducirse cada vez que utilizamos el programa que los aloja. Autenticación del Usuario Muchos esquemas de protección se basan en las hipótesis que el sistema conoce la identidad de cada usuario, por lo que la mayoría de los métodos de autenticación de usuarios se basan en la identificación de algo conocido por el usuario; algo que posee el usuario ; algo que es el usuario, etc. Las contraseñas (password o palabra reservada) son la forma de autenticación mas utilizadas, son de fácil comprensión e implementación; deben almacenarse encriptadas y a su vez prever intentos de ataque. Es conveniente que el sistema obligue al usuario a cambiar periódicamente sus contraseñas. La Identificación Física Es la posibilidad de la verificación del usuario a partir de una tarjeta o PIN que puede ser reconocido por un dispositivo magnético; otro aspecto consiste en la medición de características físicas difíciles de reproducir como ser las huellas digitales, el iris o la voz. Algunas de las medidas preventivas pueden ser también la cantidad de intentos de accesos fallidos y por otra parte registrar todos los accesos. Muchos objetos del sistema necesitan protección tales como la CPU, segmentos de memoria, unidades de disco, terminales, impresoras, procesos, archivos, base de datos, etc. Cada uno de estos objetos se referencia por un nombre y tiene habilitadas un conjunto de operaciones que pueden realizarse sobre él. Al conjunto de parejas, objeto-derechos se lo llama dominio de protección, cada pareja determina un objeto y un conjunto de operaciones que pueden realizarse; un derecho es el permiso para realizar alguna de las operaciones. Puede ocurrir que un objeto se encuentre en varios dominios con distintos derechos en cada uno. Los procesos pueden alterar entre los dominios durante la ejecución; una llamada al sistema operativo provoca una alternancia de dominio y en algunos sistemas operativos los dominios se conocen como anillos. Una de las formas en que el Sistema Operativo lleva un registro de los objetos que pertenecen a cada dominio es mediante una matriz: los renglones son los dominios y las columnas son los objetos. Cada elemento de la matriz contiene los derechos correspondientes al objeto en ese mismo dominio como ser lectura, escritura, ejecución, etc. Modelos de Protección Las matrices de protección son dinámicas, se pueden identificar 6 operaciones primitivas en la matriz de protección: crear o eliminar un objeto, crear o eliminar un dominio, crear o eliminar un derecho. Las primitivas se pueden combinar en comandos de protección que pueden ser ejecutados por programas de usuarios para modificar la matriz de protección. Estos modelos de protección determinan lo que puede realizar un proceso en cualquier momento, pero no determinan lo que no están autorizados a realizar Control de Acceso por Clases de Usuarios Una matriz de control de acceso puede llegar a ser tan grande que no resulte practica mantenerla por eso se suelen utilizar técnicas que permitan controlar el acceso a varias clases de usuarios como ser: Propietario: el usuario que creo el archivo Usuario Especificado: el propietario que especifica quienes pueden usar el archivo Grupo o Proyecto: los diferentes miembros de un grupo de trabajo sobre un proyecto Público: se trata de un archivo que puede ser accedido por cualquier usuario permitiéndole leer o ejecutar, pero no escribir sobre el archivo Entrada y Salida Una de las funciones principales del sistema operativo es el control de todos los dispositivos de Entrada / Salida, siendo las funciones relacionadas: el envío de comandos a los dispositivos; la detección de interrupciones; el control de los errores y el de proporcionar una interfaz entre los dispositivos y el resto del sistema. El uso inapropiado de los dispositivos de Entrada / Salida genera ineficiencias que afectan la performance global. Los dispositivos de Entrada / Salida se clasifican en 2 categorías: Dispositivos de Bloque: en los que la información se almacena en bloques de tamaño fijo; cada bloque tiene su propia dirección; su tamaño va de 128 a 1024 bytes; se puede leer o escribir en un bloque independiente de los demás en cualquier momento y un ejemplo típico de estos dispositivo son los discos Dispositivos de Carácter: en los que la información se transfiere como un flujo de caracteres; no sujeto a una estructura de bloques; no se pueden utilizar direcciones; no tienen operaciones de búsqueda; y los ejemplos típicos son las impresoras de línea, el teclado, el mouse, etc Algunos otros dispositivos no se ajustan a este esquema de clasificación como por ejemplo el reloj interno, que no tiene direcciones por medio de bloques, ni genera o acepta flujo de caracteres. Los controladores de dispositivos en las unidades de Entrada / Salida constan de un componente mecánico y un componente electrónico que es el controlador del dispositivo o adaptador. Los controladores pueden manejar mas de un dispositivo de muy bajo nivel; la comunicación se realiza mediante un flujo de bits en serie que comienza con un preámbulo que contiene el número de cilindro, y sector, tamaño del sector y otros datos similares, continúa con una serie de bits y concluye con una suma para verificación a un código conector de errores. El controlador debe convertir el flujo de bits en serie (tren de bits) en un bloque de bytes, efectuar cualquier corrección de errores necesaria y copiar el bloque en la memoria principal. Principios de Software de Entrada / Salida La idea básica consiste en organizar el software como una serie de capas donde las capas inferiores oculten peculiaridades del hardware a las capas superiores y estas presenten una interfaz Standard a los usuarios. El concepto clave es la independencia de los dispositivos, es decir los programas (el software) debe poder utilizar archivos sin tener que modificar el programa para tipos de dispositivos. Este problema es resuelto por el sistema operativo. Otro aspecto importante es el manejo de los errores de Entrada / Salida: deben manejarse lo mas cerca posible del hardware y generalmente hacer la recuperación en un nivel inferior y de forma transparente. Otro aspecto clave son las transferencias sincrónicas (por bloques) o asincrónicas (controlada por interrupciones). La mayoría de la Entrada / Salida es asincrónica, la CPU inicia la transferencia y realiza otras tareas hasta que se produce una interrupción. La programación en general se maneja la Entrada / Salida de forma sincrónica, es decir por bloques; el programa se suspende automáticamente hasta que los datos estén disponibles en el buffer; es el sistema operativo el que se encarga de hacer que las operaciones asincrónicas parezcan del tipo sincrónicas para el usuario; es también quien administra dispositivos compartidos (discos) y de uso exclusivo (impresoras) El software de Entrada / Salida se estructura en capas: 1er. capa: se encuentran los controladores de interrupciones 2da. capa: están las directivas de los dispositivos 3er. capa: se encuentra el software del sistema operativo 4ta. capa: el software a nivel de usuario Cada proceso que inicia una operación de Entrada / Salida se bloquea hasta que termina la Entrada / Salida y ocurra la interrupción, el procedimiento de interrupción realiza todo lo necesario para desbloquear el proceso que la inició. Entre otras cosas los controladores de dispositivos deben aceptar las solicitudes abstractas que le hace el software independiente del dispositivo y verificar la ejecución de dichas solicitudes; existe una cola de solicitudes pendientes que utilizará el controlador si al recibir una solicitud esta ocupada con otro. La solicitud de Entrada / Salida por ejemplo para un disco se debe traducir de términos abstractos a concretos, el controlador de disco debe entre otras cosas verificar si el motor de la unidad funciona, verificar si el brazo esta colocado en el cilindro adecuado, decidir cuales serán las operaciones necesarias del controlador y su orden, enviar comandos al controlador al escribir los registros de dispositivos del mismo, liberar cuando el dispositivo se bloquea, verificar los errores al finalizar la operación, si todo esta correcto transferir los datos al software independiente del dispositivo, regresar información de estado sobre los errores a quien los llamó y finalmente iniciar otra solicitud pendiente o quedar en espera. Controladores de Dispositivos Cada proceso que se inicia si requiere una operación de Entrada / Salida se bloquea hasta que se termine y ocurra la interrupción. El procedimiento que captura la información realiza todo lo necesario para desbloquear el proceso que lo inició. El controlador de dispositivos aceptará solicitudes abstractas que le hace el software independiente del dispositivo y verificará la ejecución de dichas solicitudes. Si al recibir una solicitud el controlador esta ocupado la agregará a una cola de solicitudes pendientes. Para un disco la solicitud de Entrada / Salida se traduce de términos abstractos a concretos; debe también estimar el lugar donde se encuentra físicamente el bloque solicitado; verifica que la unidad funcione; si el brazo de la cabeza lecto/grabadora está colocado en el cilindro adecuado, etc.; decide cuales son las operaciones necesarias del controlador y el orden en que deben realizarse; envía comandos al controlador al escribir en los registros del dispositivo del mismo; libera al dispositivo de bloqueos; verifica la existencia de errores al terminar la operación transfiriendo si todo esta correcto los datos al software independiente del dispositivo; regresa información de estado, sobre los errores al proceso que lo llamó y finalmente inicia una solicitud pendiente o quede en espera. El software de Entrada / Salida independiente del dispositivo realiza las siguientes funciones: provee una interfaz uniforme para los controladores de dispositivos, asigna nombres a los dispositivos; utiliza los buffers; proporciona en tamaño de bloques independientes del dispositivo; asigna espacio a los dispositivos por bloques; asigna y libera a los dispositivos de uso exclusivo; protege al dispositivo e informa de errores. La mayoría del software de Entrada / Salida se encuentra en el Sistema Operativo, una parte en bibliotecas ligadas entre si como programas de usuarios y otra parte de la biblioteca estándar de Entrada / Salida que tiene procedimientos que se ejecutan como parte de los programas de usuarios. Otra categoría importante al software de Entrada / Salida a nivel de usuario es el Spool (System Periferial Operation On Line) Un ejemplo típico lo constituyen las impresoras en línea ya que los procesos de usuarios no abren el archivo correspondiente a la impresora; se crea un directorio de spooling. El proceso genera todo el archivo a imprimir y lo coloca en el directorio de spooling; evitando el problema de tener un proceso de usuario que tenga este recurso tomado por largo tiempo; luego un proceso especial debe imprimir los archivos que se encuentran en el directorio de spool. Los discos presentan muchas ventajas con respecto al uso de la memoria principal como almacenamiento, estas son: mayor capacidad de almacenamiento, menor precio por bit de información almacenada, información que no se pierda al apagar la computadora. Los discos están organizados en cilindros, pistas y sectores, donde todos los sectores tiene igual número de bytes. Un uso inapropiado de los discos puede generar ineficiencia sobre todo en sistemas de multiprogramación. Un controlador puede realizar búsquedas en una o más unidades de al mismo tiempo, es lo que se conoce como búsquedas “traslapadas”; esta capacidad de búsqueda traslapada puede reducir considerablemente el tiempo promedio de acceso; esta tecnología que permite el trabajo conjunto de varios dispositivos de disco hacen que si una unidad sale de servicio el sistema pueda continuar trabajando. Este diseño se conoce como RAID (Redundant Arraid of Inexpensive Disk). Cada nivel de RAID ofrece una combinación especifica de tolerancia a fallos, rendimientos y cotos y está diseñado para satisfacer de diferentes necesidades de almacenamiento. La mayoría de los niveles RAID pueden satisfacer de manera efectiva solo uno o dos de los criterios mencionados. Resulta frecuente el uso de varios niveles RAID para distintas aplicaciones del mismo servidor. Oficialmente existen 7 niveles diferentes numerados del 0 al 6: RAID 0: es la más alta trasferencia sin tolerancia a fallos RAID 1: es discos en espejo con redundancia; más rápido y mas seguro que un disco. RAID 0+1: es una combinación de RAID o y 1. Proporcionando velocidad y tolerancia a fallos simultáneamente RAID 2: es acceso paralelo con discos especializados y redundancia a través del código “HAMMING” que se utiliza tanto para protección como para corrección de errores. RAID 3: acceso asincrónico con un disco dedicado a paridad. La operación de Entrada / Salida accede a todos os discos al mismo tiempo RAID 4: acceso independiente con un disco dedicado a paridad, se usa para guardar archivos de gran tamaño o aplicaciones graficas RAID 5: acceso independiente de paridad distribuida, ofreciendo tolerancia al fallo y optimizando la capacidad del sistema RAID 6: acceso independiente de doble paridad. Es similar al RAID 5 pero incluye un segundo esquema de paridad distribuido por los distintos discos. Los niveles más populares y utilizados son RAID 0, 1, 0+1 y 5 Los errores más comunes en discos son: Errores de Programación: cuando un programa de usuario solicita un sector inexistente. Error Temporal en la Suma de Verificación (Paridad): provocado por polvo en la cabeza lecto/grabadora. Error Permanente de Paridad: provocado por un bloque del disco dañado físicamente Error de Búsqueda de: cuando el brazo es enviado a un cilindro y se posiciona en otro Error del Controlador: cuando el controlador no acepta los comandos. Discos en RAM Utilizan una parte de la memoria principal para almacenar los bloques. Presentan la ventaja de tener acceso instantáneo, ya que no tienen memoria rotacional ni de posicionamiento en las búsquedas y son adecuadas para el almacenamiento de datos con accesos frecuentes. Los relojes o cronómetros son esenciales para la operación de sistema de tiempo compartido; registran la hora del día y evitan que un proceso monopolice la CPU. El software del reloj toma generalmente la forma de un controlador de dispositivo aunque no se tratan de un dispositivo de bloqueo ni de carácter; provocan una interrupción por cada ciclo de voltaje a 50 o 60 hertz. Las principales funciones del software del controlador del reloj son: Mantener la hora del día a tiempo real Evitar que los procesos se ejecuten mas tiempo del permitido. Mantienen un registro del uso de la CPU Proporcionan cronómetros para cuidar partes del sistema y realizan estadísticas, resúmenes y monitoreos. En algunos casos pueden simular varios relojes virtuales con un único reloj físico Recursos El Sistema Operativo es un administrador de recursos, estos pueden ser Apropiativos como la Unidad de Control, y la Memoria Principal o No Apropiativos como son los periféricos (unidades de discos, cintas, impresoras) es decir que no pueden sacarse de los procesos a los que están asignados. Los recursos pueden ser compartidos entre varios procesos o estar dedicados a procesos individuales. También ciertos programas son recursos de uso compartido, se carga una copia del código de en la memoria o bien se habilitan copias de la estructura de datos una para cada usuario. Si bien el código puede ser utilizado para varios usuarios a la vez no puede cambiar durante la ejecución; se lo denomina reentrante y puede ser compartido simultáneamente por varios procesos. Si el código puede ser cambiado se inicializa cada vez que se utiliza se denomina reutilizable en serie y puede ser usado solo por un proceso a la vez. La secuencia de eventos para utilizar un recurso es la siguiente: Si el recurso no esta disponible cuando se lo solicita, el proceso solicitante debe esperar, dependiendo del sistema operativo o bien se bloquea automáticamente y se despierta cuando el recurso esta disponible o bien la solicitud falla y el proceso debe intentar nuevamente. Las áreas o aspectos principales de los bloqueos son: Prevención del Bloqueo: el interés esta en condicionar el sistema para que elimine toda posibilidad de que esto se produzca; estos métodos dan como resultado una pobre utilización de los recursos. Evitación del Bloqueo: aquí la meta es imponer condiciones menos estrictas que a la prevención, para lograr una mejor utilización de los recursos; cuando aparece el bloqueo o una posibilidad de que este se produzca, el sistema lo evita. Detección del Bloqueo: se utiliza en sistemas que voluntaria e involuntariamente estos ocurran. La meta es detectar con precisión los procesos y recursos implicados en el bloqueo y en algunos casos elimina el bloqueo detectado. Recuperación del Bloqueo: se utiliza para despejar los bloqueos de un sistema para que se terminen los procesos estancados continúen operando sin ellos o se liberen los recursos correspondientes. . Esto se logra cancelando el o los procesos bloqueados que luego se reinician de forma normal. Actualmente la tendencia en los Sistemas Operativos es que tengan una consideración mucho mayor debido a: 1. La orientación hacia la operación asincrónica en paralelo y el incremento del multiprocesamiento y de operaciones concurrentes. 2. La asignación dinámica de recursos que es la capacidad de los procesos de adquirir y liberar recursos según las necesidades. 3. La consideración de los datos como un recurso, lo que implica incrementar la capacidad del Sistema Operativo para administrar una gran número de recursos. Sistemas Distribuidos Una de las razones para la tendencia hacia la descentralización es la economía; el poder de cómputos de una CPU es proporcional al cuadrado de su precio. Esta premisa si bien fue aplicable a la tecnología MAINFRAME de las décadas del 70´y 80´no es aplicable a la tecnología de los microprocesadores, ya que la solución mas eficaz en cuanto a costos es limitarse a un gran número de CPU baratos reunidos en un mismo sistema. Los sistemas distribuidos tiene una potencia en relación precio / desempeño mayor que la de un único sistema centralizado. Llamamos sistemas distribuidos en sentido amplio cuando existen varios CPU conectados entre sí y trabajen de manera conjunta. Ciertas aplicaciones como un sistema de automatización de una fábrica son distribuidas en forma inherente ya que controla los robots y máquinas en la línea de montaje, cada uno de los cuales es controlado por su propia computadora y las distintas computadoras están interconectadas. Una de las ventajas de los sistemas distribuidos es una mayor confiabilidad ya que el distribuidor la carga de trabajo en varias máquinas la falla en una de ellas no afectará a las demás; la carga de trabajo puede redistribuirse. Si una máquina se descompone sobrevive el sistema como un todo. Otra ventaja es la posibilidad de crecimiento; se pueden añadir procesadores al sistema permitiendo un incremento gradual según las necesidades. Otra de las ventajas de los sistemas distribuidos es la de satisfacer la necesidad de muchos usuarios sobre ciertos datos como ser los sistemas de reservas de pasajes y por supuesto compartir otros recursos como ser programas y periféricos costosos. A través de ellos se logra una mejor comunicación entre los empleados a través del correo electrónico. La principal desventaja esta representada por el software ya que le diseño, implantación y uso del software distribuido presenta numerosos inconvenientes. Deben satisfacer los siguientes interrogantes: Qué tipo de Sistema Operativo, Lenguaje de Programación y Aplicaciones son adecuadas para estos sistemas. Qué tanto debe hacer el sistema y que tanto deben hacer los usuarios La respuesta a estos interrogantes no es uniforme por la diversidad de criterios y de interpretaciones al respecto. Otro problema potencial tiene que ver con las redes de comunicaciones al considerar problemas por perdidas de mensajes, saturación de tráfico, expansión, etc. Otro problema tiene que ver con la seguridad, ya que los datos que se van a compartir deben organizarse adecuadamente para evitar cualquier ilícito que pueda llevarse a cabo sobre ellos. Todos los sistemas distribuidos constan de varios CPU interconectados entre si mediante una de las topologías conocidas. Consideraremos una característica esencial el número de flujo de instrucciones y el número de flujo de datos, esta clasificación incluye: SISD (Single Instruction Single Data) un flujo de instrucciones y un flujo de datos SIMD (Single Instruction Multiple Data) un flujo de instrucciones y múltiple flujo de datos; instruye mediante una instrucción a varias unidades de datos para que la ejecute en paralelo cada una con sus propios datos MISD (Multiple Instruction Single Data) varios flujos de instrucciones y un solo flujo de datos; este esquema no se representa en la práctica. MIMD (Multiple Instruction Multiple Data) varios flujos de de instrucciones y varios flujos de datos; se trata de un grupo de computadoras independientes cada una con su programa y datos Cuando nos encontramos con un grupo de PC conectadas mediante una red se puede clasificar según la arquitectura: De interconexión: en esquema de bus cuando existe una sola red, cable o medio que conecte a todas las máquinas, por ej.: Internet por Cable Esquema con Conmutador: cuando no existe una sola conexión vertebral, hay múltiples conexiones y distintos patrones de conexión y se decide explícitamente la conmutación en cada etapa para dirigir el mensaje a través de una de los cables de salida. La importancia del software supera frecuentemente a la del hardware ya que los Sistemas Operativos no se los puede encasillar fácilmente como el hardware, sin embargo se los puede clasificar en débilmente acoplados o fuertemente acoplados. El software débilmente acoplado permite en un sistema distribuido que las maquinas y usuarios sean independientes entre sí y que interactúen en cierto grado siempre que sea necesario. Los equipos individuales se distinguen fácilmente. Los Sistemas Operativos de redes representan una solución muy utilizada para estaciones de trabajo conectadas mediante una LAN (Local Area Network), cada usuario tiene una estación de trabajo para su uso exclusivo, con su propio Sistema Operativo y donde la mayoría de los requerimientos se resuelven localmente. El Sistema Operativo de este tipo de ambientes debe controlar las estaciones de trabajo en lo individual, controlar los servidores de archivos y encargarse de la comunicación entre los servidores. No necesariamente todos los equipos interconectados deben ejecutar el mismo Sistema Operativo, pero tanto cliente como servidores deben coincidir en el formato y significado de los mensajes que intercambian. De este modo cada equipo tiene un alto grado de autonomía y existen pocos requisitos a lo largo de todo el sistema. Los aspectos claves en el diseño de Sistemas Operativos distribuidos son: 1. Transparencia: los usuarios deben percibir que todos los equipos conectados con un sistema de tiempos compartidos de un solo procesador; desde los usuarios la transparencia se logra cuando sus pedidos se satisfacen con ejecuciones en paralelo de distintas máquinas, utilizando una variedad de servidores de archivos. Desde el punto de vista de los programas significa diseñar la interfaz de llamadas al sistema de manera que no sea visible la existencia de varios procesadores En un sistema distribuido existen distintos tipos de trasparencia a saber: De Localización: cuando los usuarios no pueden indicar la localización de los recursos De Migración: cuando los recursos se pueden mover sin cambiar los nombres De Réplica: cuando los usuarios no pueden indicar el número de copias existentes De Concurrencia: cuando los usuarios comparten recursos de manera automática Paralelismo: cuando las actividades ocurren en paralelo sin el conocimiento del usuario 2. Flexibilidad: es de fundamental importancia, existen 2 corrientes de pensamiento en cuanto a la estructura de los sistemas distribuidos: Nucleomonolítico: cuando cada máquina ejecuta un núcleo tradicional que proporciona la mayoría de los servicios. Micronúcleo (microkernel): donde el núcleo debe proporcionar lo menos posible y el grueso de los servicios del Sistema Operativo se debe obtener a partir de los servidores al nivel del usuario. 3. Confiabilidad: es un objetivo muy importante de los sistemas distribuidos, el que si un máquina falla alguna otra deberá encargarse del trabajo. Un aspecto de la confiabilidad es la disponibilidad que se refiere a la fracción de tiempo en que se puede utilizar el sistema. La disponibilidad se mejora mediante un diseño que no exija el funcionamiento simultáneo de un número sustancial de componentes críticos y mediante la redundancia que es la duplicidad de componentes claves tanto del software como del hardware. Otros aspectos de la confiabilidad son la seguridad que implica la protección de los recursos contra el uso no autorizado. Otro aspecto es la tolerancia a fallas, las que se deben ocultar brindando una recuperación transparente para el usuario aunque haya degradación de la performance 4. Desempeño: cuando se ejecuta una aplicación en un sistema distribuido, su ejecución debe parecer igual a la realizada de un único procesador. Algunas métricas del desempeño son: Tiempo de respuesta Rendimiento (número de trabajos por hora) Uso del sistema y cantidad consumida de la capacidad de la red Velocidad de Proceso Velocidad de la Comunicación dentro de un mismo procesador. Para optimizar el desempeño de sebe minimizar el número de mensajes 5. Escalabilidad: es la tendencia al crecimiento geométrico de los usuarios conectados a los sistemas distribuidos. Existen cuellos de botella potenciales que se deben evitar en los sistemas distribuidos de gran escala como ser componentes centralizados (un solo servidor de correo para todos los usuarios) Tablas centralizadas (un único índice telefónico en línea) Algoritmos centralizados (realización de un ruteo con base en la información completa) Comunicación de los Sistemas Distribuidos La diferencia entre un sistema distribuido y un sistema de un único procesador es la comunicación entre procesos, ya que en un sistema de un solo procesador, las comunicaciones suponen implícitamente la existencia de memoria compartida y es por ello que la comunicación entre procesos debe sujetarse a reglas conocidas como protocolos. Para los sistemas distribuidos en una WAN (Wide Area Network) o Red de Área Amplia, estos protocolos toman la forma de capas, cada una con sus propios metas y reglas. Debido a la ausencia de memoria compartida, cuando un proceso A necesita comunicarse con otro B: 1. Construye el mensaje en su propio espacio de direcciones 2. Ejecuta una llamada al sistema operativo que busque el mensaje y lo envíe por medio de la red hacia B 3. Para evitar el caos A y B deben coincidir en el alfabeto utilizado Los puntos de acuerdos necesarios incluyen: 1. Como sabe el receptor cual es el último bit del mensaje 2. Como determina si un mensaje esta domado o perdido y en ese caso que debe hacer 3. Que longitud tiene los números, cadenas y otros elementos de datos y cuál es la forma en que están representados La Organización Internacional de de Estándares (ISO - International Organization for Standardization) desarrollo un modelo de referencia que: 1. Identifica de manera clara los distintos niveles de copia 2. Estandariza los nombres de los niveles o capas 3. Señala cual nivel o capa debe realizar que trabajo Este modelo conocido como Modelo de Referencia para Interconexión de Sistemas Abiertos (Modelo ISO-OSI), esta diseñado para permitir la comunicación entre sistemas abiertos, mediante reglas estándares que establecen el formato, contenido y significado de los mensajes tanto recibidos, como enviados. El Modelo ISO-OSI distingue 2 tipos principales de protocolos: Orientados a la Conexión: en este caso antes de intercambiar datos el emisor y el receptor establecen de una manera explícita una conexión, negocian el protocolo a utilizar y al finalizar terminan o cierran la conexión El teléfono representa un sistema de comunicación orientado hacia la conexión Sin Conexión: aquí no es necesario una configuración de antemano, el emisor transmite el mensaje cuando esta listo. Un buzón de correo electrónico es un ejemplo de comunicación sin conexión. de equipos que intercambian información; las que pueden proceder de distintos fabricantes, con variedad de hardware y software. Para posibilitar la comunicación es necesario un conjunto de redes formales para su interacción llamadas protocolos. En lugar de tener un solo protocolo que especifique todos los detalles de las formas posibles de comunicación entre computadoras, este se divide en partes que son más fáciles de diseñar, analizar, implementar y probar. Esta partición del problema da origen a un conjunto de protocolos diferentes relacionados llamados Familia de Protocolos: el conjunto de protocolos TCP / IP surgieron de 2 conjuntos previamente desarrollados, primero el Protocolo de Control de Transmisión (TCP) y el Protocolo de Internet (IP), son la base de internet, como son compatibles con cualquier Sistema Operativo y con cualquier tipo de hardware, tanto en Redes de Área Local (LAN) como en Redes de Área Extensa (WAN). En internet se diferencian 4 niveles o capas en los que se agrupan protocolos y que se relacionan con los niveles OSI (de 7 capas) de la siguiente manera: 1. De Aplicación: que se corresponde con los niveles OSI de aplicación, presentación y sesión. Invoca programas que acceden a servicios de la red; interactúa con uno o más protocolos de transporte para enviar y o recibir datos, ya sea en forma de mensajes o en forma de flujo de bytes. Se incluyen protocolos que proporcionan servicios como: Correo Electrónico (SMTP), Transferencia de Archivos (FTP), Conexión Remota (TELNET), HTTP, SNMP, DNS. 2. De Transporte: coincide con el nivel de transporte del modelo OSI, los protocolos de este nivel TCP y UDP manejan los datos y proporcionan fiabilidad necesaria en el transporte de los mismos; comunicación extremo a extremo desde un programa de aplicación a otro; regula el flujo de información asegurándose que los datos lleguen sin errores y en la secuencia correcta y realiza entre estas la verificación por suma para asegurar que la información no sufrió alteraciones durante la transmisión. 3. De Internet: se corresponde con el nivel de red del modelo OSI, incluye al protocolo IP y se encarga de enviar los paquetes de información a sus destinos correspondientes. Controla la comunicación entre un equipo y otro y decide que rutas deben seguir los paquetes de información para alcanzar su destino. Desencapsula los paquetes recibidos, pasando a la capa superior la información dirigida a una aplicación. 4. De Enlace: se corresponde a los niveles de enlace de datos de nivel físico del modelo OSI; estos protocolos son los encargados de la transmisión a través del medio físico al que se encuentra conectado el equipo, como puede ser una línea punto a punto o una Red Eternet. Emite al medio físico los flujos de bytes, recibiendo los que de el provienen. Conceptualmente enviar un mensaje desde un programa de aplicación en un equipo hacia un programa de aplicación en otro significa transferir el mensaje hacia abajo por las capas sucesivas del software de protocolo del equipo emisor, enviar el mensaje a través de la red para luego transferir el mensaje hacia arriba a través de las sucesivas capas de software de protocolo en el equipo receptor. Cuando el equipo emisor emite un mensaje la capa del protocolo IP la coloca en un datagrama y lo envía a través de la red, solo cuando se alcanza el equipo receptor en el destino el protocolo IP extrae el mensaje y lo pasa hacia arriba a la capa superior del software de protocolo. Modelo TCP / IP INTERNET ISO / OSI Aplicación Aplicación Presentación Sesión Transporte Red Internet Enlace de Datos Enlace Enlace Físico Para que en una red 2 computadoras puedan comunicarse entre sí, deben estar identificadas con precisión. Este identificador puede estar definido en los niveles bajos (Identificador Físico) o en los niveles altos (Identificador Lógico) dependiendo del protocolo utilizado. TCP / IP utiliza un identificador denominado Dirección Internet o Dirección IP, cuya longitud es de 32 bits (octetos) que identifica tanto a la red a la que pertenece como a ella misma dentro de la red; especifica la conexión entre redes y se representa escrita de forma decimal separada por puntos. Clases de Direcciones IP Clase Número de Redes Número de Nodos Rango de Direcciones IP A 127 16.777.215 1.0.0.0 a 127.0.0.0 B 4095 65.535 128.0.0.0 a 191.255.0.0 C 2.097.151 255 192.0.0.0 a 223.255.255.0 La clase A queda definida con el primer octeto de la dirección y se utiliza en grandes redes con muchos dispositivos. La clase B queda definida con los 2 primeros octetos de la dirección y se utiliza para redes de mediano tamaño. La clase C con los primeros 3 octetos y se utiliza para redes pequeñas con menos de 256 dispositivos. El resto de las direcciones son de tipo MULTICAST y se utiliza para enviar simultáneamente un único flujo de datos a distintos dispositivos. Una dirección IP tiene 2 partes bien diferenciadas, los números de la izquierda indican la red y se denominan NET ID (Identificador de Red). Los números de la derecha indican los equipos dentro de esa red y se les denomina HOTS ID (Identificador de Host). Veamos el siguiente ejemplo: La red 194.28.12.0 contiene los equipos 194.28.12.1 al 194.28.12.4 (cada equipo dentro de la red se enumera de forma incremental) La dirección física de un dispositivo dentro de la red es diferente a la dirección IP. El caso más común es la dirección ETERNET que tiene 48 bits y que identifica a cada placa de red que conforma una red. Para que los daros encuentren su destino debe existir una tabla que relacione una dirección con otra y en TCP / IP el Protocolo de Resolución de Direcciones (ARP) es quien gestiona dicha tabla. No siempre estamos en presencia de direcciones IP fijas ya que la mayoría de las veces son asignadas dinámicamente. Las empresas que brindan los servicios de internet cuando un usuario inicia su sesión eligen alguna dirección disponible de manera que al desconectarse pueda ser utilizada por otro usuario. Por esta razón, la dirección IP varía entre una conexión y otra. Hay empresas que proveen el servicio de resolución DNS para las IP dinámicas para subsanar este inconveniente. Cuando los bits reservados para los equipos de la red se reemplazan por “0” se obtiene lo que se llama dirección de red y esta puede ser asignada a ningún equipo de la red Es habitual que una organización solo un equipo tenga conexión a internet y el resto de los equipos de la red acceden a internet a través de aquel (PROXY). En este caso si bien solo el equipo esta conectado a internet necesita reservar una dirección IP, el resto de los equipos necesitan una dirección IP para comunicarse entre ellos. Las direcciones reservadas son las siguientes: 1. Direcciones IP Privadas Clase A: 10.0.0.1 a 10.255.255.254 lo que hacen posible la creación de grandes redes privadas que incluyen miles de equipos 2. Direcciones IP Privadas Clase B: 172.16.0.1 a 172.31.255.254 lo que hacen posible la creación de redes privadas de tamaño mediano. 3. Direcciones IP Privadas Clase C: 192.168.0.1 a 192.168.0.254 permiten establecer pequeñas redes privadas. El mapeo de conversión de direcciones IP a direcciones físicas se puede hacer de 3 formas: 1. Forma Estática por Tablas: tiene un alto costo de mantenimiento. 2. Por Aplicación de Algoritmo: pudiendo no lograrse una homogénea distribución de direcciones, existiendo una remota posibilidad de duplicación de direcciones y presenta cierta dificultad par elegir el algoritmo mas eficiente. 3. Dinámica: se realiza una consulta que se emite a todos los equipos de la red, mediante un solo mensaje por el poseedor de cierta dirección IP. Los protocolos TCP / IP están enfocados en la transmisión de paquetes de información buscando la independencia de las arquitecturas de la red. Arquitecturas como ETERNET logra la comunicación solo mediante el conocimiento de la dirección física de manera que cada equipo que opere con el protocolo IP debe contar con algún procedimiento para la traslación de la dirección IP a la dirección física de la computadora con la que establezca comunicación. Protocolo de Resolución de Direcciones (ARD) Le permite a un equipo obtener la dirección física de un equipo destino ubicado en la misma red física proporcionando solamente la dirección IP destino Tanto las direcciones IP como físicas de las computadoras que consulta son incluidas en cada emisión ARD, el equipo que contesta toma esta información y actualiza su tabla de conversión. ARD es un protocolo de bajo nivel que oculta el direccionamiento de la red de las capas inferiores permitiendo asignar a elección direcciones IP a los equipos en una red física. Formato del mensaje del ARP CAMPO DESCRIPCIÓN HLEN Longitud de dirección del hardware PLEN Longitud de dirección del protocolo OPERACIÓN Indica si el mensaje es de consulta o de respuesta HW EMISOR Dirección física del emisor IP EMISOR Dirección IP del emisor HW DESTINO Dirección física del destino IP DESTINO Dirección IP del destino El protocolo de internet está orientado a no conexión, fragmenta los paquetes si es necesario, si un paquete no es recibido permanecerá en la red durante un tiempo finito, realiza el mejor esfuerzo para la distribución de paquetes cuyo tamaño máximo es de 65.535 bytes y solo realiza verificación por suma al encabezado del paquete, no a los datos que este contiene.