Unidad 5 Administración de Dispositivos de E/S

lunes, 23 de enero de 2012 - Publicado por Sistemas Operativos 1 en 16:49


5.1 Principios del Hardware de I/O

El enfoque que se considerará tiene que ver con la interfaz que desde el hardware se presenta al software.
  • Comandos que acepta el hardware.
  • Funciones que realiza.
  • Errores que puede informar
5.1.1 Dispositivos de I/O

Se pueden clasificar en dos grandes categorías:
  • Dispositivos de bloque.
  • Dispositivos de carácter.
Las principales características de los dispositivos de bloque son:
  • La información se almacena en bloques de tamaño fijo.
  • Cada bloque tiene su propia dirección.
  • Los tamaños más comunes de los bloques van desde los 128 bytes hasta los 1.024 bytes.
  • Se puede leer o escribir en un bloque de forma independiente de los demás, en cualquier momento.
  • Un ejemplo típico de dispositivos de bloque son los discos.
Las principales características de los dispositivos de carácter son:
  • La información se transfiere como un flujo de caracteres, sin sujetarse a una estructura de bloques.
  • No se pueden utilizar direcciones.
  • No tienen una operación de búsqueda.
  • Unos ejemplos típicos de dispositivos de carácter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.
Algunos dispositivos no se ajustan a este esquema de clasificación, por ejemplo los relojes, que no tienen direcciones por medio de bloques y no generan o aceptan flujos de caracteres.
El sistema de archivos solo trabaja con dispositivos de bloque abstractos, por lo que encarga la parte dependiente del dispositivo a un software de menor nivel, el software manejador del dispositivo.

5.1.2 Controladores de dispositivos

Las unidades de e / s generalmente constan de:
  • Un componente mecánico.
  • Un componente electrónico, el controlador del dispositivo o adaptador.
Muchos controladores pueden manejar más de un dispositivo.
El S. O. generalmente trabaja con el controlador y no con el dispositivo.
Los modelos más frecuentes de comunicación entre la CPU y los controladores son:
  • Para la mayoría de las micro y mini computadoras:
    • Modelo de bus del sistema.
  • Para la mayoría de los mainframes:
    • Modelo de varios buses y computadoras especializadas en e / s llamadas canales de e / s.
La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel:
  • La comunicación es mediante un flujo de bits en serie que:
    • Comienza con un preámbulo.
    • Sigue con una serie de bits (de un sector de disco, por ej.).
    • Concluye con una suma para verificación o un código corrector de errores.
  • El preámbulo:
    • Se escribe al dar formato al disco.
    • Contiene el número de cilindro y sector, el tamaño de sector y otros datos similares.
El controlador debe:
  • Convertir el flujo de bits en serie en un bloque de bytes.
  • Efectuar cualquier corrección de errores necesaria.
  • Copiar el bloque en la memoria principal.
Cada controlador posee registros que utiliza para comunicarse con la CPU:
  • Pueden ser parte del espacio normal de direcciones de la memoria: e / s mapeada a memoria.
  • Pueden utilizar un espacio de direcciones especial para la e / s, asignando a cada controlador una parte de él.
El S. O. realiza la e / s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores.
Al aceptar el comando, la CPU puede dejar al controlador y dedicarse a otro trabajo.
Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.:
  • Obtenga el control de la CPU.
  • Verifique los resultados de la operación.
La CPU obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlador.

5.2 Principios de Software de I/O

La idea básica es organizar el software como una serie de capas donde:
  • Las capas inferiores se encarguen de ocultar las peculiaridades del hardware a las capas superiores.
  • Las capas superiores deben presentar una interfaz agradable, limpia y regular a los usuarios.
5.2.1 Objetivos del Software de I/O

Un concepto clave es la independencia del dispositivo:
  • Debe ser posible escribir programas que se puedan utilizar con archivos en distintos dispositivos, sin tener que modificar los programas para cada tipo de dispositivo.
  • El problema debe ser resuelto por el S. O.
El objetivo de lograr nombres uniformes está muy relacionado con el de independencia del dispositivo.
Todos los archivos y dispositivos adquieren direcciones de la misma forma, es decir mediante el nombre de su ruta de acceso.
Otro aspecto importante del software es el manejo de errores de e / s:
  • Generalmente los errores deben manejarse lo más cerca posible del hardware.
  • Solo si los niveles inferiores no pueden resolver el problema, se informa a los niveles superiores.
  • Generalmente la recuperación se puede hacer en un nivel inferior y de forma transparente.
Otro aspecto clave son las transferencias síncronas (por bloques) o asíncronas (controlada por interruptores):
  • La mayoría de la e / s es asíncrona: la CPU inicia la transferencia y realiza otras tareas hasta una interrupción.
  • La programación es más fácil si la e / s es síncrona (por bloques): el programa se suspende automáticamente hasta que los datos estén disponibles en el buffer.
El S. O. se encarga de hacer que operaciones controladas por interruptores parezcan del tipo de bloques para el usuario.
También el S. O. debe administrar los dispositivos compartidos (ej.: discos) y los de uso exclusivo (ej.: impresoras).
Generalmente el software de e / s se estructura en capas
  • Manejadores de interrupciones.
  • Directivas de dispositivos.
  • Software de S. O. independiente de los dispositivos.
  • Software a nivel usuario.
5.2.2 Manejadores de Interrupciones

Las interrupciones deben ocultarse en el S. O.
  • Cada proceso que inicie una operación de e / s se bloquea hasta que termina la e / s y ocurra la interrupción.
  • El procedimiento de interrupción realiza lo necesario para desbloquear el proceso que lo inicio.
5.2.3  Manejador de dispositivos

Todo el código que depende de los dispositivos aparece en los manejadores de dispositivos.
Cada controlador posee uno o más registros de dispositivos:
  • Se utilizan para darle los comandos.
  • Los manejadores de dispositivos proveen estos comandos y verifican su ejecución adecuada.
La labor de un manejador de dispositivos es la de:
  • Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo.
  • Verificar la ejecución de dichas solicitudes.
Si al recibir una solicitud el manejador está ocupado con otra solicitud, agregara la nueva solicitud a una cola de solicitudes pendientes.
La solicitud de e / s, por ej. Para un disco, se debe traducir de términos abstractos a términos concretos:
  • El manejador de disco debe:
    • Estimar el lugar donde se encuentra en realidad el bloque solicitado.
    • Verificar si el motor de la unidad funciona.
    • Verificar si el brazo está colocado en el cilindro adecuado, etc.
    • Resumiendo: debe decidir cuáles son las operaciones necesarias del controlador y su orden.
    • Envía los comandos al controlador al escribir en los registros de dispositivo del mismo.
    • Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo; una interrupción lo libera de este bloqueo.
    • Al finalizar la operación debe verificar los errores.
    • Si todo esta correcto transferirá los datos al software independiente del dispositivo.
    • Regresa información de estado sobre los errores a quien lo llamó.
    • Inicia otra solicitud pendiente o queda en espera.

5.2.4 Software de I/0 Independiente de los dispositivos

Funciones generalmente realizadas por el software independiente del dispositivo:
  • Interfaz uniforme para los manejadores de dispositivos.
  • Nombres de los dispositivos.
  • Protección del dispositivo.
  • Proporcionar un tamaño de bloque independiente del dispositivo.
  • Uso de buffers.
  • Asignación de espacio en los dispositivos por bloques.
  • Asignación y liberación de los dispositivos de uso exclusivo.
  • Informe de errores.
Las funciones básicas del software independiente del dispositivo son:
  • Efectuar las funciones de e / s comunes a todos los dispositivos.
  • Proporcionar una interfaz uniforme del software a nivel usuario.
El software independiente del dispositivo asocia los nombres simbólicos de los dispositivos con el nombre adecuado.
Un nombre de dispositivo determina de manera única el nodo-i de un archivo especial:
  • Este nodo-i contiene el número principal del dispositivo, que se utiliza para localizar el manejador apropiado.
  • El nodo-i contiene también el número secundario de dispositivo, que se transfiere como parámetro al manejador para determinar la unidad por leer o escribir.
El software independiente del dispositivo debe:
  • Ocultar a los niveles superiores los diferentes tamaños de sector de los distintos discos.
  • Proporcionar un tamaño uniforme de los bloques, por ej.: considerar varios sectores físicos como un solo bloque lógico.

5.2.5 Espacio del usuario para software de I/0

La mayoría del software de e / s está dentro del S. O.
Una pequeña parte consta de bibliotecas ligadas entre sí con los programas del usuario.
La biblioteca estándar de e / s contiene varios procedimientos relacionados con e / s y todos se ejecutan como parte de los programas del usuario.
Otra categoría importante de software de e / s a nivel usuario es el sistema de spooling.
El spooling es una forma de trabajar con los dispositivos de e /s de uso exclusivo en un sistema de multiprogramación:
  • El ejemplo típico lo constituye la impresora de líneas.
  • Los procesos de usuario no abren el archivo correspondiente a la impresora.
  • Se crea un proceso especial, llamado demonio en algunos sistemas.
  • Se crea un directorio de spooling.
Para imprimir un archivo:
  • Un proceso genera todo el archivo por imprimir y lo coloca en el directorio de spooling.
  • El proceso especial, único con permiso para utilizar el archivo especial de la impresora, debe imprimir los archivos en el directorio.
  • Se evita el posible problema de tener un proceso de usuario que mantenga un recurso tomado largo tiempo.
Un esquema similar también es aplicable para la transferencia de archivos entre equipos conectados:
  • Un usuario coloca un archivo en un directorio de spooling de la red.
  • Posteriormente, el proceso especial lo toma y transmite. Un ej. son los sistemas de correo electrónico.

5.3 Discos RAM

Utilizan una parte de la memoria principal asignada con anterioridad para almacenar los bloques.
Tienen la ventaja del acceso instantáneo:
  • No hay demora rotacional o debida a las búsquedas.
  • Son adecuados para el almacenamiento de programas o datos con accesos muy frecuentes.
Los bloques de almacenamiento tienen el mismo tamaño que en los discos reales.
Cuando el manejador debe leer de o escribir en un bloque de un disco en RAM, calcula el lugar de la memoria donde se encuentra el bloque solicitado y lee o escribe en el mismo.

5.4 Discos

Las siguientes son las principales ventajas con respecto del uso de la memoria principal como almacenamiento.
  • Mucha mayor capacidad de espacio de almacenamiento.
  • Menor precio por bit.
  • La información no se pierde al apagar la computadora.
Un uso inapropiado de los discos puede generar ineficiencia, en especial en sistemas con multiprogramación.

5.4.1 Hardware de discos

Los discos están organizados en cilindros, pistas y sectores.
El número típico de sectores por pista varía entre 8 y 32 (o más).
Todos los sectores tienen igual número de bytes.
Los sectores cercanos a la orilla del disco serán mayores físicamente que los cercanos al anillo.
Un controlador puede realizar búsquedas en una o más unidades al mismo tiempo:
  • Son las búsquedas traslapadas.
  • Mientras el controlador y el software esperan el fin de una búsqueda en una unidad, el controlador puede iniciar una búsqueda en otra.
Muchos controladores pueden:
  • Leer o escribir en una unidad.
  • Buscar en otra.
Los controladores no pueden leer o escribir en dos unidades al mismo tiempo.
La capacidad de búsquedas traslapadas puede reducir considerablemente el tiempo promedio de acceso.

5.5. Relojes

Los relojes o cronómetros son esenciales para la operación de sistemas de tiempo compartido 
Registran la hora del día.
Evitan que un proceso monopolice la CPU.
El software para reloj toma generalmente la forma de un manejador de dispositivo, aunque no es un dispositivo de bloque ni de carácter.
Los relojes más sencillos trabajan con la línea de corriente eléctrica de 110 o 220 voltios y provocan una interrupción por cada ciclo de voltaje, a 50 o 60 hz.
Otro tipo de relojes consta de tres componentes:
  • Un oscilador de cristal, un contador y un registro.
  • Una pieza de cristal de cuarzo se monta en una estructura bajo tensión:
    • Genera una señal periódica de muy alta precisión, generalmente entre 5 y 100 mhz.
    • La señal se alimenta en el contador para que cuente en forma descendente hasta cero.
    • Cuando el contador llega a cero, provoca una interrupción de la CPU.
Los relojes programables tienen varios modos de operación:
  • Modo de una instancia:
    • Cuando el reloj se inicializa, copia el valor del registro en el contador.
    • Decremento el contador en cada pulso del cristal.
    • Cuando el contador llega a cero provoca una interrupción y se detiene hasta ser nuevamente inicializado por el software.
  • Modo de onda cuadrada:
    • Luego de llegar a cero y provocar la interrupción, el registro se copia de manera automática en el contador.
    • Todo el programa se repite en forma indefinida.
    • Las interrupciones periódicas se llaman marcas del reloj.
La ventaja del reloj programable es que su frecuencia de interrupción puede ser controlada por el software.

5.5.2 Software Reloj

Las principales funciones del software manejador del reloj son:
  • Mantener la hora del día o tiempo real.
  • Evitar que los procesos se ejecuten durante más tiempo del permitido.
  • Mantener un registro del uso de la CPU.
  • Controlar llamadas al sistema tipo “alarm” por parte de los procesos del usuario.
  • Proporcionar cronómetros guardianes de partes del propio sistema.
  • Realizar resúmenes, monitoreo y recolección de estadísticas.
El software manejador del reloj puede tener que simular varios relojes virtuales con un único reloj físico.

5.6 Terminales

Las terminales tienen gran número de formas distintas.
  • El manejador de la terminal debe ocultar estas diferencias.
  • La parte independiente del dispositivo en el S. O. y los programas del usuario no se tienen que reescribir para cada tipo de terminal.
Desde el punto de vista del S. O. se las puede clasificar en:
  • Interfaz RS-232:
    • Hardcopy (terminales de impresión).
    • TTY “de vidrio” (terminales de video).
    • Inteligente (computadoras con CPU y memoria).
  • Interfaz mapeada a memoria:
    • Orientada a caracteres.
    • Orientada a bits.
Las terminales RS-232 poseen un teclado y un monitor que se comunican mediante una interfaz serial, un bit a la vez; las conversiones de bits a bytes y viceversa las efectúan los chips uart (transmisores - receptores asíncronos universales).
Las terminales mapeadas a memoria:
  • No se comunican mediante una línea serial.
  • Poseen una interfaz mediante una memoria especial llamada video RAM:
    • Forma parte del espacio de direcciones de la computadora.
    • La CPU se dirige a ella como al resto de la memoria.
    • En la tarjeta de video RAM hay un chip llamado controlador de video:
      • Extrae bytes del video RAM y genera la señal de video utilizada para manejar la pantalla.
      • El monitor genera un rayo de electrones que recorre la pantalla pintando líneas.
      • Cada línea está constituida por un cierto número de puntos o pixeles.
      • La señal del controlador de video modula el rayo de electrones y determina si un pixel debe estar o no iluminado.
      • Los monitores de color poseen tres rayos (rojo, verde y azul) que se modulan independientemente.
En las pantallas mapeadas a caracteres:
  • Cada carácter en la pantalla equivale a dos caracteres de RAM:
    • Uno aloja al código (ASCII) del carácter por exhibir.
    • Otro es el byte de atributo, necesario para determinar el color, el video inverso, el parpadeo, etc.
En las terminales mapeadas a bits:
  • Se utiliza el mismo principio.
  • Cada bit en el video RAM controla en forma directa un solo pixel de la pantalla.
  • Permite una completa flexibilidad en los tipos y tamaños de caracteres, varias ventanas y gráficos arbitrarios.
Con las pantallas mapeadas a memoria, el teclado se desacopla totalmente de la pantalla:
  • El teclado dispone de su propio manejador.
  • El manejador del teclado puede operar en modo carácter o en modo línea.
Las terminales pueden operar con una estructura central de buffers o con buffers exclusivos para cada terminal.
Frecuentemente los manejadores de terminales soportan operaciones tales como:
  • Mover el cursor hacia arriba, abajo, a la izquierda o a la derecha una posición.
  • Mover el cursor a x, y.
  • Insertar un carácter o una línea en el cursor.
  • Eliminar un carácter o una línea en el cursor.
  • Recorrer la pantalla hacia arriba o hacia abajo “n” líneas.
  • Limpiar la pantalla desde el cursor hacia el final de la línea o hasta el final de la pantalla.
  • Trabajar en modo de video inverso, subrayado, parpadeo o normal.
  • Crear, construir, mover o controlar las ventanas.


UNIDAD II ADMINISTRACION DE PROCESOS

lunes, 28 de noviembre de 2011 - Publicado por Sistemas Operativos 1 en 18:04


2.1 DESCRIPCION Y CONTROL DE PROCESOS
Los principios principales que debe satisfacer un sistema operativo están expresados haciendo referencia a los procesos.
El sistema operativo debe de asignar los recursos a los procesos conforme a una política específica, por ejemplo en ciertas funciones o aplicaciones que son de mayor prioridad.
El sistema operativo da soporte a la comunicación entre procesos por parte del usuario, labores que pueden ser de ayuda en la estructuración de las aplicaciones.

2.2 DEFINICION DE PROCESO
Para definir lo que es un proceso, hay que establecer la diferencia con el concepto de programa:
- Un programa es una entidad pasiva compuesta únicamente por un código y unos datos, es decir, tiene un listado fijo.
- Un proceso es una entidad activa, es el “programa “en ejecución.
2.3 ESTADOS DE UN PROCESOS
Durante su existencia, un proceso pasa por una serie de estados discretos. Varias circunstancias pueden hacer que un proceso cambie de estado.
Los estados más importantes en que puede encontrarse un proceso son:
·         Ejecutable (o activo): Si el proceso tiene asignada en ese momento la CPU.
·        Listo (preparado): Cuando el proceso podría usar una CPU, si hubiera una disponible.
·         Bloqueado (en espera): Si el proceso espera que ocurra algo (la terminación de una E/S por ejemplo) para poder ponerse en marcha.
2.4 CONTROL DE PROCESOS
La mayoría de los procesadores dan soporte para dos modos de ejecución por lo menos. Ciertas instrucciones pueden ejecutarse sólo en modo privilegiado. Entre éstas están la lectura o modificación de registros de control (como la palabra de estado del programa), instrucciones primitivas de E/S e instrucciones relativas a la gestión de memoria. Además, se puede acceder a ciertas regiones de memoria sólo en el modo más privilegiado.

2.5 PROCESOS E HILOS
Los hilos son procesos ligeros que se componen de registros, un espacio de pila y un contador de programa.
Los hilos comparten su código ejecutable, su pila y los recursos que utiliza. Con el uso de hilos deja de ser necesaria la costosa conmutación de contexto de uno a otro proceso.
Los hilos son especiales para realizar procesamiento paralelo, pero esto incurre en algunos problemas como la consistencia de datos, para lo que se usan distintos mecanismos para solucionarlos como secciones críticas y cerraduras.
Los hilos pueden estar a nivel del núcleo del sistema operativo o a nivel de usuario.

2.6 CONCURRENCIA: EXCLUSION MUTUA Y SINCRONIZACION
Los temas fundamentales del diseño de sistemas operativos están relacionados con la gestión de procesos e hilos:
Multiprogramación: consiste en la gestión de varios procesos dentro de un sistema mono-procesador.
Multiprocesamiento: consiste en la gestión de varios procesos, dentro de un sistema multiprocesador.
Procesamiento distribuido: consiste en la gestión de varios procesos, ejecutándose en sistemas de computadores múltiples y distribuidos. La reciente proliferación de las agrupaciones es el principal ejemplo de este tipo de sistemas.
La concurrencia es fundamental en todas estas áreas y para el diseño sistemas operativos. La concurrencia comprende un gran número de cuestiones de diseño, incluida la comunicación entre procesos, compartición y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos. Se verá que estas cuestiones no solo surgen en entornos de multiprocesadores y proceso distribuido, sino incluso en sistemas multiprogramados con un solo procesador.
La concurrencia puede presentarse en tres contextos diferentes:
• Múltiples aplicaciones: la multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varias aplicaciones activas.
• Aplicaciones estructuradas: como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.
• Estructura del sistema operativo: las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos o hilos.

2.7 PRINCIPIOS GENERALES DE LA CONCURRENCIA
En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo aparentando una ejecución simultánea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecución intercalada produce beneficios en la eficiencia del procesamiento y en la estructuración de los programas. La intercalación y la superposición pueden contemplarse como ejemplos de procesamiento concurrente en un sistema monoprocesador, los problemas son consecuencia de la velocidad de ejecución de los procesos que no pueden predecirse y depende de las actividades de otros procesos, de la forma en que el sistema operativo trata las interrupciones surgen las siguientes dificultades:

1. Compartir recursos globales es riesgoso
2. Para el sistema operativo es difícil gestionar la asignación óptima de recursos.

2.8 EXCLUSION MUTUA; SOLUCION POR HARDWARE Y SOFTWARE
Los recursos de un sistema pueden clasificarse como compartibles, lo que significa que pueden ser empleados por varios procesos de forma concurrente, o no-compartibles, lo que equivale a que su uso se restrinja a un solo proceso a la vez.
El problema de la, exclusión mutua es el de asegurar que los recursos no compartibles sean accedidos por un solo proceso a la vez. Aquella parte del programa en la cual se accede al recurso compartido se denomina sección crítica. Hay que evitar que dos procesos entren simultáneamente en su sección crítica.
Cuando varios procesos compiten por recursos es posible que se de una situación en la que ninguno de ellos pueda proseguir debido a que los recursos que cada uno de ellos necesita estén ocupados por los otros. Esta situación se conoce con el nombre de interbloqueo o deadlock.

2.9 SEMAFOROS
Semáforos es un algoritmo de control de procesos, que tiene solo dos operaciones básicas, las cuales son:
Wait.- Pregunta a los procesos si su contador es > ó = que cero, en caso de no ser así, los decremento. El proceso que cambia en este caso a negativo (−1) desde la cola de procesos Listos a ser ejecutados es el que automáticamente toma el control del procesador.
Signal.- A partir de un tiempo t definido por el despachador se ejecuta, y pregunta a los procesos si su contador es < que cero en caso de que sea afirmativa la respuesta, saca a este proceso de su ejecución y depende de su estado.

2.10 MONITORES
Un monitor encapsula el código relativo a un recurso compartido en un solo módulo de programa; ventajas:
• Mantenimiento más simple
• Menos errores de programación
La interfaz del monitor es un conjunto de funciones que representan las diferentes operaciones que pueden hacerse con el recurso. La implementación del monitor garantiza la exclusión mutua, mediante semáforos o algún otro mecanismo o implícitamente en los lenguajes concurrentes.

2.11 PASO DE MENSAJES
El paso de mensajes es una técnica empleada en programación concurrente para aportar sincronización entre procesos y permitir la exclusión mutua, de manera similar a como se hace con los semáforos, monitores, etc.
Su principal característica es que no precisa de memoria compartida, por lo que es muy importante en la programación para sistemas distribuidos.
Los elementos principales que intervienen en el paso de mensajes son el proceso que envía, el que recibe y el mensaje.

2.12 CONCURRENCIA E INTERBLOQUEO (DEADLOCK)
DEADLOCK
Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados.
Un proceso puede estar identificado con tres estados diferentes: leyendo (ready), ejecutando (running) o bloqueado (blocked). En el estado de lectura, un proceso está parado, concediendo que otro proceso sea ejecutado; en el estado de ejecución, un proceso está utilizando algún recurso; y en el estado de bloqueo, el proceso está parado y no se ejecutará mientras algo lo restaure.
Una condición común no deseable es descripta como deadlock, que es cuando dos procesos están en un estado de ejecución, y requieren intercambiar recursos entre sí para continuar. Ambos procesos están esperando por la liberación del recurso requerido, que nunca será realizada; como no hay ningún resultado, tomará un camino que llevará a un estado de deadlock.
Se dice que dos procesos se encuentran en estado de deadlock (interbloqueo, bloqueo mutuo o abrazo mortal) cuando están esperando por condiciones que nunca se van a cumplir. Se podría hablar de deadlock como el estado permanente de bloqueo de un conjunto de procesos que están compitiendo por recursos del sistema.

2.13 PRINCIPIOS DEL INTERBLOQUEO
El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros. A diferencia de otros problemas de la gestión concurrente de procesos, no existe una solución eficiente para el caso general.
Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o más procesos.

2.14 ACCIONES A REALIZAR ANTE UN INTERBLOQUEO. PREVENCION, DETECCION PREDICCION Y EVITAR
CONDICIONES PARA PRODUCIR INTERBLOQUEO
En la política del sistema operativo, deben darse tres condiciones para que pueda producirse un interbloqueo:
1- Condición de exclusión mutua: Cada recurso está asignado a un único proceso o está disponible.
2- Condición de posesión y espera: Los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos.
3- Condición de no apropiación: Los recursos otorgados con anterioridad no pueden ser forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explícita.
En la mayoría de los casos, estas condiciones son bastantes necesarias. La exclusión mutua hace falta para asegurar la consistencia de resultados y la integridad de la base de datos. De forma similar, la apropiación no se puede aplicar arbitrariamente y, cuando se encuentran involucrados recursos de datos, debe estar acompañada de un mecanismo de recuperación y reanudación, que devuelva un proceso y sus recursos a un estado previo adecuado, desde el que el proceso puede finalmente repetir sus acciones.
Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una cuarta condición:
4- Condición de espera circular (o círculo vicioso de espera): Debe existir una cadena circular de dos o más procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena.
PREVENCIÓN DEL INTERBLOQUEO
La estrategia básica de la prevención del interbloqueo consiste, a grandes rasgos, en diseñar su sistema de manera que esté excluida, a priori, la posibilidad de interbloqueo.
Los métodos para prevenir el interbloqueo son de dos tipos:
- Los métodos indirectos que consisten en impedir la aparición de alguna de las tres condiciones necesarias para que se de el interbloqueo.
- Los métodos directos que consisten en evitar la aparición del círculo vicioso de espera.
PREDICCIÓN DEL INTERBLOQUEO
Una forma de resolver el problema del interbloqueo, que se diferencia sutilmente de la prevención, es la predicción del interbloqueo. En la prevención de interbloqueo, se obligaba a las solicitudes de recursos a impedir que sucediera, por lo menos, alguna de las cuatro condiciones de interbloqueo. Esto se hace indirectamente, impidiendo la aparición de una de las tres condiciones necesarias (exclusión mutua, retención y espera, no apropiación) o directamente, impidiendo la aparición de un círculo vicioso de espera. Se llega así a un uso ineficiente de los recursos y una ejecución ineficiente de los procesos. Con predicción del interbloqueo, por otro lado, se pueden alcanzar las tres condiciones necesarias, pero se realizan elecciones acertadas para asegurar que nunca se llega al punto de interbloqueo. La predicción, por lo tanto, permite más concurrencia que la prevención. Con predicción del interbloqueo, se decide dinámicamente si la petición actual de asignación de un recurso podría, de concederse, llevar potencialmente a un interbloqueo. La predicción del interbloqueo necesita, por lo tanto, conocer las peticiones futuras de recursos. Enfoques para la predicción del interbloqueo: No iniciar un proceso si sus demandas pueden llevar a interbloqueo. No conceder una solicitud de incrementar los recursos de un proceso si esta asignación puede llevar a interbloqueo.
DETECCIÓN DEL INTERBLOQUEO
Las estrategias de prevención de interbloqueo son muy conservadoras; resuelven el problema limitando el acceso a recursos e imponiendo restricciones sobre los procesos. En cambio, las estrategias de detección de interbloqueo, no limitan el acceso a recursos ni restringen las acciones del proceso. Con la detección del interbloqueo, se concederán los recursos que los procesos necesiten siempre que sea posible. Periódicamente, el S. O. ejecuta un algoritmo que permite detectar la condición de círculo vicioso de espera. - La detección del interbloqueo es el proceso de determinar si realmente existe un interbloqueo e identificar los procesos y recursos implicados en él. Una posibilidad detectar un interbloqueo es monitorear cada cierto tiempo el estado de los recursos. Cada vez que se solicita o se devuelve un recurso, se actualiza el estado de los recursos y se hace una verificación para observar si existe algún ciclo. - Este método está basado en suponer que un interbloqueo no se presente y que los recursos del sistema que han sido asignados, se liberarán en el momento que otro proceso lo requiera.

BI B L I O G R A F Í A

"Sistemas Operativos: Concepto y Diseño"; Milan Milenkovic; McGraw-Hill; 1.994
• "Introducción a la Informática" A. Prieto; McGraw-Hill; 1.995
• "Sistemas Operativos: Diseño e Implementación"; Tanenbaum;
Prentice; 1.988
• VICTOR MANUEL, A J.ANTONIO, “Sistemas Operativos” Alhambra.

 

DEFINICION DE SISTEMA OPERATIVO Y SUBSISTEMAS DEL MISMO

miércoles, 12 de octubre de 2011 - Publicado por Sistemas Operativos 1 en 18:23
 Definicion de Sitema Operativo:
Un sistema operativo (SO) es el programa o conjunto de programas que efectúan la gestión de los procesos básicos de un sistema informático, y permite la normal ejecución del resto de las operaciones
Estructura del Sistema Operativo




Algunos ejemplos de subsistemas son:
·       Administración de Archivos.
·       Dispositivos de Entrada y Salida
·       Administración de Proceso.
·       Gestión de la memoria.

Administración de Archivos
Un archivo es un conjunto de información, que se encuentra almacenada o guardada en la memoria principal del computador, en el disco duro. Antes de que un archivo pueda leerse o escribirse en él, debe abrirse, momento en el cual se verifican los permisos. Estos archivos se abren especificando en el computador la ruta de acceso al archivo desde el directorio raíz, que es la unidad principal del disco del computador, este puede ser un disco duro o disco flexible.
Dispositivos de Entrada y Salida
El código destinado a manejar la entrada y salida de los diferentes periféricos en un sistema operativo es de una extensión considerable y sumamente complejo. Resuelve la necesidades de sincronizar, atrapar interrupciones y ofrecer llamadas al sistema para los programadores. Y se dividen en dos tipos:
  • Dispositivos orientados a bloques: tienen la propiedad de que se pueden direccionar, esto es, el programador puede escribir o leer cualquier bloque del dispositivo realizando primero una operación de posicionamiento sobre el dispositivo. 
  • Dispositivos orientados a caracteres: son aquellos que trabajan con secuencias de bytes sin importar su longitud ni ninguna agrupación en especial.
Administración de Proceso
Un proceso es un programa en ejecución junto con el entorno asociado (registros, variables ,etc.).El corazón de un sistema operativo es el núcleo, un programa de control que reacciona ante cualquier interrupción de eventos externos y que da servicio a los procesos, creándolos, terminándolos y respondiendo a cualquier petición de servicio por parte de los mismos.
Planificación del Procesador.La planificación del procesador se refiere a la manera o técnicas que se usan para decidir cuánto tiempo de ejecución y cuando se le asignan a cada proceso del sistema.
Características a considerar de los Procesos: Estas características pueden ser:
  • Cantidad de Entrada/Salida: Existen procesos que realizan una gran cantidad de operaciones de entrada y salida.
  •  Cantidad de Uso de CPU: Existen procesos que no realizan muchas operaciones de entrada y salida, sino que usan intensivamente la unidad central de procesamiento.
  • Procesos de Lote o Interactivos: Un proceso de lote es más eficiente en cuanto a la lectura de datos, ya que generalmente lo hace de archivos.
  •  Procesos en Tiempo Real: Si los procesos deben dar respuesta en tiempo real se requiere que tengan prioridad para los turnos de ejecución.
  • Longevidad de los Procesos: Existen procesos que típicamente requerirán varias horas para finalizar su labor, mientras que existen otros que solo necesitan algunos segundos.
Gestión de la memoria
El sistema operativo se encarga de gestionar el espacio de memoria asignado para cada aplicación y para cada usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el sistema operativo puede crear una zona de memoria en el disco duro, denominada “memoria virtual”.La memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la memoria RAM disponible en el sistema. Sin embargo, esta memoria es mucho más lenta.

ESTRUCTURA DE LOS SISTEMAS OPERATIVOS

martes, 11 de octubre de 2011 - Publicado por Sistemas Operativos 1 en 18:21
La estructura de los sistemas operativos se considera la organizacion interna de los S.O y se clasifica de la siguiente manera, destacando sus prinsipales caracteristicas.

 

Monolítica. Sin estructura definida. Se componen de un conjunto de procedimientos,donde cada uno de ellos puede llamar a todos los demás. 

Monousuarios. Los sistemas operativos monousuarios son aquéllos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo.

Multiusuarios. Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente.
Monotareas.Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez.
Multitareas. Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias labores al mismo tiempo.
Uniproceso Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil.
Máquinas virtuales.  Crea ilusiones (máquinas virtuales) de la máquina real, permitiendo que en cada máquina virtual se ejecute un S. O. distinto.



Modelo cliente- servidor.  Este sistema sirve para toda clase de aplicaciones por tanto, es de propósito general y cumple con las mismas actividades que los sistemas operativos convencionales.

Estructura orientada al objeto. Se basan en una colección de objetos, donde las funciones del sistema son un tipo de objeto (ficheros, dispositivos, etc). La interacción entre dichos objetos viene determinada por las capacidades que cada uno tenga para actuar con el otro.
 
Sistemas Operativos por Servicios.  Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del usuario final.


Recomendaciones: 




  • Puedes visualizar el siguiente video que habla acerca de los sistemas operativos