Apuntes de Sistemas Operativos

Anuncio
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.
Documentos relacionados
Descargar