lunes, 30 de enero de 2012

Redes de Computadoras

REDES DE COMPUTADORAS 

Una red de computadoras, también llamada red de ordenadores o red informática, es un conjunto de equipos informáticos conectados entre sí por medio de dispositivos físicos que envían y reciben impulsos eléctricos, ondas electromagnéticas o cualquier otro medio para el transporte de datos, con la finalidad de compartir información y recursos y ofrecer servicios. Este término también engloba aquellos medios técnicos que permiten compartir la información. 

La finalidad principal para la creación de una red de computadoras es compartir los recursos y la información en la distancia, asegurar la confiabilidad y la disponibilidad de la información, aumentar la velocidad y transmisión de los datos y reducir el coste general de estas acciones. Un ejemplo es Internet, la cual es una gran red de millones de computadoras ubicadas en distintos puntos del planeta interconectadas básicamente para compartir información y recursos.


Al igual que un equipo no puede trabajar sin un sistema operativo ,una red no puede funcionar sin un sistema operativo que lo controle.




SISTEMAS OPERATIVOS DE RED

Consiste en un software que posibilita la comunicación de un sistema informático con otros equipos en el ámbito de una red, además de poder controlar los servicios.


Los sistemas operativos de red mas ampliamente usados son:Novell Netwtware, LAN Manager , Windows Server, UNIX, Linux, LANtastic,Li , etc.


 En un entorno de red, los servidores proporcionan recursos a los clientes de la red , y el software de red del cliente permite que estos recursos esten disponibles para los equipos clientes. La red y el sistema operativo del cliente trabajan para que todos los elementos de la red funcionen bien.



CARACTERÍSTICAS

Funciona en un ambiente cliente-servidor.
Controla la red controlando el acceso a los datos y recursos.
Optimiza la utilización de los recursos
Brinda seguridad.
Coordina las funciones de todos los periféricos y recursos.


 DESVENTAJAS



Si se cae el servidor se cae la red.
Solo funciona en redes relativamente pequeñas.
El tráfico de información es relativamente lento



 EJEMPLOS DE SISTEMAS OPERATIVOS DE RED



UNIX de tiempo compartido, controla los recursos de una computadora y los asigna entre los usuarios

NETWARE DE NOVELL: Es el ejemplo más familiar y famoso de sistema operativo de red donde el software de red del equipo cliente se incorpora en el sistema operativo del equipo. El equipo personal necesita ambos sistema operativos para gestionar conjuntamente las funciones de red y las funciones individuales.


 SISTEMAS OPERATIVOS DISTRIBUIDOS



Los sistemas operativos distribuidos desempeñan las mismas funciones que un sistema operativo normal, pero con la diferencia de trabajar en un entorno distribuido. Su Misión principal consiste en facilitar el acceso y la gestión de los recursos distribuidos en la red.



Están basados en las ideas básicas de transparencia, eficiencia, flexibilidad, esca labilidad y fiabilidad. El sistema operativo se encuentra distribuido por toda la red , por tanto no hay un único servidor si no todos son servidores.


Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.



 CARACTERÍSTICAS


Transparencia: El concepto de transparencia de un Sistema operativo distribuido va ligado a la idea de que todo el sistema funcione de forma similar en todos los puntos de la red, debido a esto queda como labor del sistema operativo coordinar el mecanismo que logre la unificación de todos los sistemas y recursos totalmente transparente para el usuario o aplicación.

Mayor velocidad y eficiencia: El concepto global de que un procesador haga todas las tareas y la desarrolle rápido depende de muchos factores concretos: Velocidad, Memoria y tipo de procesamiento, Pero para un sistema operativo distribuido esto es mucho más fácil y eficiente, solo buscara un procesador más rápido y más libre para que desarrolle las tareas y hará un display de los resultados obtenidos.
Sincronización: La sincronización es un punto clave para los sistemas operativos distribuidos. Para computadores únicos no es nada importante, pero en el caso de los recursos compartidos de la red, la sincronización es sumamente importante.


Al no haber un solo servidor, en caso de que uno falle , siempre hay otro que lo respalden.
Controla la red.
Brinda seguridad.



 DESVENTAJAS



El costo es relativamente elevado y requiere equipos especializados.



 EJEMPLOS DE SISTEMAS DISTRIBUIDOS



Una red de estaciones de trabajo en un departamento de una universidad o compañía, donde además de cada estación personal, podría existir una pila de procesadores en el cuarto de máquinas, que no estén asignados a usuarios específicos sino que se utilicen de manera dinámica cuando sea necesario.



Una fábrica de robots, donde los robots actúan como dispositivos periféricos unidos a la misma computadora central.



Un banco con muchas sucursales por el mundo, cada oficina tiene una computadora maestra para guardar las cuentas locales y el manejo de las transacciones locales, la cuál se puede comunicar con cualquier computadora de la red. Las transacciones hechas se realizan sin importar dónde se encuentre la cuenta o el cliente.



 SISTEMAS OPERATIVOS DE RED VS SISTEMAS OPERATIVOS DISTRIBUIDOS



 La diferencia entre un sistema operativo de red y uno distribuido es la forma en que cada uno ve y administra los recursos locales y globales. Un sistema operativo de red se apoya en las capacidades proporcionados por un sistema operativo local y las extiende para satisfacer nuevas necesidades, tiene acceso a los recursos utilizando mecanismos locales y cada sistema está controlado y administrado locamente con base en la política de dicho sistema. Por otra parte el distribuido considera los recursos del sistema como propiedad global y los administra como tal, tiene acceso a los recursos utilizando mecanismos globales en vez de mecanismos locales, con un control y una administración del sistema.


miércoles, 25 de enero de 2012

Unidad de Entrada y Salida por programas y por interruptores

Concepto:  
Elemento que proporsiona un método eficaz entre el sistema central y el periférico.
Funciones:
  1. Control y temporización.
  2. Comunicacion con la cpu.
  3. Comunicación con el dispositivo externo.
  4. Almacen temporal de datos.
  5. Detección de errores.
E/S controlada por programa: 
   la cpu esta pendiente en todo momento (sondeo constante mediante bucles) del estado de la E/S.
Inconvenientes:  
  • Perdida de tiempo en bucles de espera.
  • Algunos programas no permiten estar en bucles.
  • Si varios perifericos
E/S controlada por interrupciones:
  Elimina bucles de sondeo de forma que entre la cpu y la unidad de antrada y salida existe una linea de comunicación hardware que provoca que cuando un periferico precisa de la extensión de la cpu, la unidad de E/S envia un nivel de extensión que provoca una interrupción en la cpu.
Clasificación de las interrupciones:
  • Origen
  • Nro. de lineas
  • Control de la cpu sobre la interrupción
  • Identificación de la fuente de la interrupción
  • Gestion de prioridad
  • Niveles de interrpción:
  1. Externa =>perifericos. Internas => la propia cpu
  2. 1 linea. Multiples lineas
  3. Enmascarables. No enmascarables.
  4. Multiples lineas. Encuestas Vectorizadas
  5.   Software. Hardware
  6. Nivel unico. Multinivel
Controlador de interrupciones:
   Su misión es aumentar el número de lineas y encargarse e la gestión.
Funciones:
  • Identicar la fuente de interrupciones
  • Establecer las prioridades de cada periferico
  • Activar/desactivar las interrupciones
  • Enviar información a la cpu sobre la petición de interrupción y el periferico atender.

Gestion de Entrada/Salida


La gestión E/S, o I/O (del original en inglés input/output), es la colección de interfaces que utilizan diferentes unidades funcionales (subsistema) de un sistema de procesamiento de información para unas a otras o las señales (informaciones) enviadas a través de esas interfaces.

Los dispositivos de E/S son los que permiten la comunicación usuario-maquina o computador.

Por medio de los drivers, el sistema operativo puede unificar y controlar el acceso a los programas y recursos naturales(también conocidos como administradores periféricos o de entrada/salida).


Objetivos del software de E/S 
  • Independencia de dispositivo
        Se debe poder acceder a los dispositivos de E/S sin tener que especificar previamente de qué tipo de dispositivo se trata como en los dispositivos de bloques: disquetes, discos duros, cdrom's. El S.O. debe resolver los problemas causados por usar diferentes dispositivos, que requieren órdenes distintas para manejarlos. 
  • Nombres uniformes para los dispositivos
        El nombre de un fichero o dispositivo debe ser simplemente una cadena o un entero, y no depender del dispositivo.
  • Manejo de errores
         Deben manejarse tan cerca del hardware como sea posible subsanar todos los errores posibles comunicando los no subsanables a los procesos de usuario.

  • Compartición de recursos
         Debe permitir la compartición de ciertos dispositivos (como los discos) pero al mismo tiempo debe garantizar el uso exclusivo de otros (como las impresoras).


  • Uso de buffers
         Debe proporcionar almacenamiento temporal en memoria para evitar pérdida de datos (teclado) o acelerar dispositivos (discos).

            
  Estructura y componentes del software de E/S

El software de E/S suele estar organizado en 4 capas, cada una con una función bien definida y una interfaz clara con las capas:

         1. Manejadores de interrupciones:
       Se deben ocultar al máximo en el S.O. el proceso que solicita la operación se bloquea hasta que termina la E/S cuando se presenta una interrupción el manejador de interrupciones hace lo propio para manejarla. Después avisa al manejador que le solicitó esa operación de E/S.  El manejador despierta al proceso y prosigue su ejecución, así, el efecto real es que el proceso que antes estaba bloqueado ahora ya puede ejecutarse.


       
2. Manejadores de dispositivos
       
Códigos que dependen de los dispositivos, que sirve para controlarlos.
Cada manejador habla con la controladora de un tipo determinado de dispositivos, o de una clase de dispositivos forma parte del núcleo del SO, necesita ejecutarse en modo núcleo para acceder a los registros de la controladora del dispositivo.

         Tareas del manejador del dispositivo:
         Trata las solicitudes abstractas del SID y se encarga de que se satisfagan indicando a la controladora qué hay que hacer y leyendo la respuesta de la misma verifica la ejecución de la operación, corrigiendo posibles errores Inicializa el dispositivo, comprueba si está encendido (por ejemplo el motor de una disquetera), si está conectado, o si está ocupado al solicitar la orden a realizar, el manejador puede ser que tenga que esperar (bloqueándose hasta que se produzca una interrupción) o que la operación termine sin retraso (el manejador no se bloquea)
Ha de ser reentrante ) durante su ejecución, debe considerar la posibilidad de que se le invoque otra vez antes de terminar.

 
3. Software de E/S independiente del dispositivo (SID):

Hay software que no depende directamente del dispositivo dependiente versus independiente: ¿dónde está la frontera? Algunas funciones que podrían efectuarse con independencia del dispositivo en realidad se ejecutan en el manejador por eficiencia o por otros motivos.

Funciones: 
1. Interfaz uniforme del software a nivel de usuario.
 
           2. Asociación de nombres simbólicos de los dispositivos y el manejador correcto: /dev/tty0 ) nodo-i especial (id. tipo y dispositivo).

 
           3. Interfaz uniforme para manejadores de dispositivo.

 
          
4. Protección de dispositivos ) evitar que usuarios no autorizados accedan al dispositivo.

         
5. Tamaño de bloque independiente del dispositivo agrupar o dividir sectores para conseguir un tamaño único de bloque lógico, las capas superiores pueden trabajar con dispositivos abstractos.
 
           6. Uso de buffers para almacenamiento temporal de los datos homogeneizan velocidades, se pueden recibir los datos de manera másrápida que la velocidad que pueden salir. 
7. Asignación de espacio en los dispositivos de bloques.
Realizar la gestión de la lista ligada o mapa de bits para administrar el espacio libre es  independiente del dispositivo.

8. Arbitrio entre dispositivos de uso exclusivo.
 Examinar las solicitudes de uso de dispositivos y aceptarlas o rechazarlas,
según el dispositivo esté disponible o no.
 
9. Informe de errores.
Los errores no resueltos por los manejadores deberán ser tratados por el SID,que intentará solucionarlos, y si no puede, deberá informar de los mismos.

4. Software de E/S en el espacio de usuario
 
Procedimientos de biblioteca
    
La mayoría del software de E/S está en el núcleo sin embargo, también hay procedimientos de biblioteca que se ejecutan en modo usuario y que se encargan de realizar las llamadas al sistema (ej. read, printf, etc.). Normalmente preparan el «entorno» adecuado y a continuación realizan la llamada al sistema

           Sistema de spooling
 
       Los dispositivos de uso exclusivo no se pueden dejar a cargo de programas de usuario (problema: monopolización) .El sistema de spooling es una forma de manejar dispositivos
dedicados en un sistema con multipogramación.
 

domingo, 22 de enero de 2012

Acceso Directo a Memoria (DMA)

El acceso directo a memoria (DMA, del inglés direct memory access) permite a cierto tipo de componentes de una computadora acceder a la memoria del sistema para leer o escribir independientemente de la unidad central de procesamiento (CPU) principal. Muchos sistemashardware utilizan DMA, incluyendo controladores de unidades de disco, tarjetas gráficas y tarjetas de sonido. DMA es una característica esencial en todos los ordenadores modernos, ya que permite a dispositivos de diferentes velocidades comunicarse sin someter a la CPU a una carga masiva de interrupciones.
Una transferencia DMA consiste principalmente en copiar un bloque de memoria de un dispositivo a otro. En lugar de que la CPU inicie la transferencia, la transferencia se lleva a cabo por el controlador DMA. Un ejemplo típico es mover un bloque de memoria desde una memoria externa a una interna más rápida. Tal operación no ocupa al procesador y como resultado éste puede ser planificado para efectuar otras tareas. Las transferencias DMA son esenciales para aumentar el rendimiento de aplicaciones que requieran muchos recursos.
Cabe destacar que aunque no se necesite a la CPU para la transacción de datos, sí que se necesita el bus del sistema (tanto bus de datoscomo bus de direcciones), por lo que existen diferentes estrategias para regular su uso, permitiendo así que no quede totalmente acaparado por el controlador DMA.


La DMA puede llevar a problemas de coherencia de caché. Imagine una CPU equipada con una memoria caché y una memoria externa que se pueda acceder directamente por los dispositivos que utilizan DMA. Cuando la CPU accede a X lugar en la memoria, el valor actual se almacena en la caché. Si se realizan operaciones posteriores en X, se actualizará la copia en caché de X, pero no la versión de memoria externa de X. Si la caché no se vacía en la memoria antes de que otro dispositivo intente acceder a X, el dispositivo recibirá un valor caducado de X.
Del mismo modo, si la copia en caché de X no es inválida cuando un dispositivo escribe un nuevo valor en la memoria, entonces la CPU funcionará con un valor caducado de X.
Este problema puede ser abordado en una de las dos formas en el diseño del sistema:
§  Los sistemas de caché coherente implementan un método en el hardware externo mediante el cual se escribe una señal en el controlador de caché, la cual realiza una invalidación de la caché para escritura de DMA o caché de descarga para lectura de DMA.
§  Los sistemas no-coherente dejan este software, donde el sistema operativo debe asegurarse de que las líneas de caché se vacían antes de que una transferencia de salida de DMA sea iniciada y anulada antes de que una parte de la memoria sea afectada por una transferencia entrante de DMA que se haya requerido. El sistema operativo debe asegurarse de que esa parte de memoria no es accedida por cualquier subproceso que se ejecute en ese instante. Este último enfoque introduce cierta sobrecarga a la operación de DMA, ya que la mayoría de hardware requiere un bucle para invalidar cada línea de caché de forma individual.

  • Transferencias

Durante las operaciones del DMA, el rendimiento del sistema puede verse afectado debido a que este dispositivo hace un uso intensivo del bus y por lo tanto la cpu no puede leer datos de memoria, por ejemplo para leer la siguiente instrucción a ejecutar. Esto provoca que mientras el DMA esta operando, la cpu deba esperar a que finalice dicha tarea sin ejecutar ninguna instrucción. Para solventar esto, existe una memoria cache dentro de la CPU que permite a ésta seguir trabajando mientras el DMA mantiene ocupado el bus. En computadores que no disponen de memoria cache,el DMA debe realizar su tarea evitando ocupar el bus de datos mientras la CPU realiza la fase de captación de la instrucción. A partir de estas dos posibilidades, existen dos tipos de transferencias de datos del DMA:
Transferencias modo ráfaga
Una vez que la CPU concede el bus al DMA, este no lo libera hasta que finaliza su tarea completamente.
Este tipo de transferencia se usa en sistemas que disponen de una memoria cache en la unidad de procesamiento, ya que mientras la CPU puede seguir trabajando utilizando la cache.
Transferencias modo robo de ciclo
una vez que la CPU concede el bus al DMA, este lo vuelve a liberar al finalizar de transferir cada palabra. Teniendo que solicitar de nuevo el permiso de uso del bus a la CPU. Esta operación se repite hasta que el DMA finaliza la tarea. Este tipo de transferencia se suele usar en sistema que no disponen de memoria cache en la unidad de procesamiento, ya que de este modo, aunque la transferencia de datos tarda más en realizarse, la CPU puede seguir ejecutando instrucciones.

Buffer de E/S
Un buffer (o búfer) en informática es un espacio de memoria, en el que se almacenan datos para evitar que el programa o recurso que los requiere, ya sea hardware o software, se quede sin datos durante una transferencia.
Normalmente los datos se almacenan en un buffer mientras son transferidos desde un dispositivo de entrada (como un ratón) o justo antes de enviarlos a un dispositivo de salida (como unos altavoces). También puede utilizarse para transferir datos entre procesos, de una forma parecida a los bufferes utilizados en telecomunicaciones. Un ejemplo de esto último ocurre en una comunicación telefónica, en la que al realizar una llamada esta se almacena, se disminuye su calidad y el numero de bytes a ser transferidos, y luego se envian estos datos modificados al receptor.
Los buffers se utilizan, a menudo, conjuntamente con E/S de hardware, tal como unidades de disco, enviar o recibir datos a/o desde una red, o reproducción de sonido en un altavoz. Una línea a una montaña rusa en un parque de atracciones comparte muchas similitudes. Las personas que viajan en la montaña llegan, a menudo, a un ritmo desconocido y variable, pero la montaña rusa será capaz de cargar personas de golpe (tal como llegan se van montando). La zona de la cola actúa como un buffer: un espacio temporal donde los que deseen viajar deben esperar a que el viaje esté disponible. Los buffers utilizan generalmente un método FIFO (primero en entrar, primero en salir), es decir, la salida de datos se produce en el orden en que llegaron.