Monday, July 4, 2016

Dispositivos E/S



Principios del Software de E / S

La idea básica es organizar el software como una serie de capas donde [23, Tanenbaum]
  • 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.
Objetivos del Software de E / S
Un concepto clave es la independencia del dispositivo:
  • Debe ser posible escribir programas que se puedan utilizar con archivos en distintos dispositivos, sin tener que modificar los programas para cada tipo de dispositivo.
  • El problema debe ser resuelto por el S. O.
El objetivo de lograr nombres uniformes está muy relacionado con el de independencia del dispositivo.
Todos los archivos y dispositivos adquieren direcciones de la misma forma, es decir mediante el nombre de su ruta de acceso.
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 (ver Figura 5.3 [23, Tanenbaum]):
  • Manejadores de interrupciones.
  • Directivas de dispositivos.
  • Software de S. O. independiente de los dispositivos.
  • Software a nivel usuario.



Dispositivos de E / S
Se pueden clasificar en dos grandes categorías:
  • Dispositivos de bloque.
  • Dispositivos de caracter.
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 caracter 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.
  • Un ejemplos típico de dispositivos de caracter 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.

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.
Ejemplos de controladores, sus direcciones de e / s y sus vectores de interrupción en la PC IBM pueden verse en la Tabla 5.1 [23, Tanenbaum].
 
 
Controlador de e / s
Dirección de e / s
Vector de interrupciones
Reloj
040 - 043
8
Teclado
060 - 063
9
Disco duro
320 - 32f 
13
Impresora
378 - 37f 
15
Disco flexible
3f0 - 3f7
14
Rs232 primario
3f8 - 3ff 
12
Rs232 secundario
2f8 - 2ff 
11

Acceso Directo a Memoria (DMA)
Muchos controladores, especialmente los correspondientes a dispositivos de bloque, permiten el DMA.
Si se lee el disco sin DMA:
  • El controlador lee en serie el bloque (uno o más sectores) de la unidad:
    • La lectura es bit por bit.
    • Los bits del bloque se graban en el buffer interno del controlador.
  • Se calcula la suma de verificación para corroborar que no existen errores de lectura.
  • El controlador provoca una interrupción.
  • El S. O. lee el bloque del disco por medio del buffer del controlador:
    • La lectura es por byte o palabra a la vez.
    • En cada iteración de este ciclo se lee un byte o una palabra del registro del controlador y se almacena en memoria.
  • Se desperdicia tiempo de la cpu.

DMA se ideó para liberar a la cpu de este trabajo de bajo nivel.

La cpu le proporciona al controlador:

  • La dirección del bloque en el disco.
  • La dirección en memoria adonde debe ir el bloque.
  • El número de bytes por transferir.

Luego de que el controlador leyó todo el bloque del dispositivo a su buffer y de que corroboró la suma de verificación:

  • Copia el primer byte o palabra a la memoria principal.
  • Lo hace en la dirección especificada por medio de la dirección de memoria de DMA.
  • Incrementa la dirección DMA y decrementa el contador DMA en el número de bytes que acaba de transferir.
  • Se repite este proceso hasta que el contador se anula y por lo tanto el controlador provoca una interrupción.
  • Al iniciar su ejecución el S. O. luego de la interrupción provocada, no debe copiar el bloque en la memoria, porque ya se encuentra ahí (ver Figura 5.1 [23, Tanenbaum]).

Una máquina rápida pero estúpida

Las computadoras parecen inteligentes porque pueden efectuar estas operaciones aritméticas y las comparaciones rápidamente y con precisó. Una computadora doméstica típica puede realizar miles de operaciones en el tiempo que usted tarda en coger su bolígrafo y meterlo en el bolsillo. Un programa bien diseñado es el encargado de indicarle a la computadora que ejecute una secuencia de operaciones sencillas que, tomadas en conjunto, imprimen un informe, organizan las notas de los alumnos de una escuela o simulan un vuelo espacial.

El desafío de los desarrolladores de software es inventar instrucciones que agrupen todas estas órdenes sencillas de modo que sean útiles.

El trabajo de un programador es convertir el algoritmo (conjunto de procedimientos para llevar a cabo una tarea) en un programa añadiéndole detalles, puliendo los fallos, verificando los procedimientos y depurando los errores. Es fundamental eliminar toda la ambigüedad que se pueda.
El lenguaje de las computadoras

Cada computadora procesa instrucciones en un lenguaje máquina, El cual emplea códigos numéricos para representar las operaciones más básicas de una computadora. Los programadores de antaño estaban obligados a escribir cada programa en lenguaje máquina, lo que se suponía una tediosa tarea de trasladar cada instrucción a código binario.
Hoy en día la mayoría de los programadores utilizan lenguajes de programación como Java o Visual Basic.NET que se encuentran a medio camino entre lo que entienden un humano y lo que se debe suministrar a la máquina.

Para poder comunicarnos en alto nivel, es necesario un traductor. Mientras más sofisticado sea el traductor, más sencillo resulta el trabajo del programador.

El programa traductor más común es el compilador, cuya misión es convertir un programa completo escrito en un lenguaje de alto nivel como (como C#) antes de que se ejecute por primera vez.

Aplicaciones. Herramientas para los usuarios

Las aplicaciones de software permiten a los usuarios controlar sus computadoras sin pensar del mismo modo que los programadores.

Aplicaciones para el usuario

Las tiendas de computadoras y software, las de los productos eléctricos y las de venta por correo venden cientos de programas: software de auto detención, de contabilidad, de gráficos, gestores de información personal, etc.

El proceso de compra de cualquier software es similar al de cualquier CD de música. Pero existen algunas sutiles diferencias que veremos a continuación.

Documentación

Cualquier paquete de software debe incluir documentación impresa con las instrucciones a seguir para su instalación en el disco duro de la computadora. Algunos también disponen de tutoriales y manuales de referencia que explican cómo usarlo.

Actualización

La mayoría de las empresas de software trabajan en la mejora de sus productos, eliminando fallos y añadiendo nuevas características. Como resultado de ello, es frecuente que aparezcan nuevas versiones de los programa más populares cada uno o dos años.

Compatibilidad

Los paquetes de software contienen etiquetas con mensajes como «Precisa Windows 9x, Me o XP con 128 MB de RAM», estas especificaciones no deben tomarse a la ligera, sin el hardware y software compatible, muchas programas son inservibles.

Renuncias

Según la letra pequeña de las garantías incluidas en muchos paquetes de software, algunas aplicaciones podrían ser técnicamente inservibles aun disponiendo de hardware y software compatible. EULA (Contrato de licencia de usuario final, End User License Agreement):

Este programa se distribuye tal como es, sin garantía de ningún tipo….

Licencia

Cuando se adquiere cualquier paquete de software, usted realmente no está comprobando ese software sino una licencia para usar el programa, generalmente en una sola máquina.

Virtualmente, todo software tiene un copyright, lo que significa que no puede duplicarse legalmente para su distribución a terceras personas. Algunos programas grabados en CD o DVD (lo más recientes) están físicamente protegidas contra copia de modo que no pueden duplicarse de ninguna manera.

¿Por qué usamos aplicaciones?

Podría sonar raro que alguien pagase una cantidad de dinero por un producto que no tiene garantía y que contiene docenas de restricciones legales relacionadas con su uso. ¿Por qué tanta gente compra este tipo de programas?:
  • Están construidas alrededor de metáforas visuales de herramientas del mundo real.
  • Expanden de alguna forma, las capacidades humanas.

Aplicaciones integradas y suites.
Paquetes de software


Aunque la mayoría de los paquetes de software especializados es una aplicación particular, como un procesador de textos, los paquetes de software integrado de bajo precio incluyen varias aplicaciones diseñadas para trabajar juntas. Los mas populares, como Apple Works y Microsoft Works, suelen incluir un sencillo procesador de textos, base de datos, una hoja de cálculo. Muchas compañías ofrecen suites de aplicación (paquetes que contienen varios programas de aplicación completos que también se venden por separado).

¿Qué hace un sistema operativo?

Cada computadora actual, ya sea una supercomputadora de tiempo compartido o un portátil, depende de un SO (sistema operativo) que mantenga el hardware funcionando de forma eficiente y facilite el proceso de comunicación con él. Algunas computadoras (incluyendo las de bolsillo, los juegos y las de propósito específico) tienen sus sistemas operativos almacenados permanentemente en ROM (Memoria de sólo-lectura), de modo que están operativas desde el mismo modo en que se encienden; la computadora, proporcionando una capa de aislamiento entre usted y los bits y bytes que componen el mundo del software.

Comunicación con los periféricos

El sistema operativo incluye programas que se comunican de forma transparente con los periféricos (monitores, impresoras, unidades de disco).

Administración de la memoria

Cuando varios trabajos se están procesando de manera concurrente, el sistema operativo de be controlar el modo en el que se está usando la memoria de la computadora y asegurarse de que ningún trabajo invade el espacio de otro.

Programas y administración de datos

Además de actuar como guardia de tráfico, guardia de seguridad y contable, el sistema operativo también es un libreto que se encarga de localizar y acceder a los ficheros y programas solicitados por el usuario o por cualquier otro programa.

Coordinación de las comunicaciones de red

Hasta hace poco, las comunicaciones d red no estaban administradas por los sistemas operativos de escritorio empleados por cualquier usuario. Pero los más modernos ya están diseñados para servir como puentes a las redes, desde la oficina a Internet.

Programas de utilidad y controladores de dispositivo
  
Los programas de utilidad sirven como herramientas de mantenimiento del sistema y reparan todo aquello que el propio sistema operativo no es capaz de hacer por sí mismo.

La interfaz de usuario: la conexión de hombre máquina

Los primeros usuarios de las primeras computadoras tenían que gastar tiempo escribiendo en lenguaje máquina. En la actualidad, los usuarios emplean la mayoría de su tiempo en el trabajo con aplicaciones ya programadas, como los procesadores de texto, que simulan y aumentan las posibilidades de herramientas reales.

Sistemas operativos de sobremesa

El primer sistema operativo para el PC, creado por Apple II, el IBM PC original y otras máquinas, no se parecía en nada a los que puede encontrar en la actualidad.

MS-DOS (Sistema operativo en disco de Microsoft), se convirtió en el sistema operativo estándar para las computadoras IBM compatibles (aquellas que funcionaban exactamente igual que IBM PC y que eran capaces de ejecutar software compatible con IBM). A diferencia de Windows, MS-DOS usaba una interfaz de línea de comando en la que el usuario escribía los comandos y la computadora respondía.

El Apple Macintosh, presento en 1984, fue la primera computadora de bajo coste cuyo sistema operativo fue diseñado teniendo en mente un monitor gráfico. El Mac OS lució una GUI (Interfaz gráfica de usuario).

Windows y el Mac OS han evolucionado a lo largo de los últimos años, incorporando nuevas características a sus GUI para hacerlas más fáciles de usar por parte del usuario.

Administración de ficheros: ¿dónde están mis cosas?

Un sistema operativo actúa como una capa de intercambio entre el usuario y los datos contenidos en la computadora. Windows y el Mac OS emplean una interfaz de usuario que representa los datos de la computadora como ficheros almacenados en carpetas que se encuentran en un escritorio virtual. Tanto Windows como Mac OS soportan el concepto de carpetas de sistema con nombres autoexplicativos.

Sistemas operativos multiusuario: UNIX Y Linux

UNIX, desarrollado en los laboratorios de Bell hace casi una década. UNIX ha sido por años el sistema operativo preferido por las workstations y los mainframes de los centros académicos y de investigación.

En su núcleo, y en todas sus versiones, UNIX es un sistema operativo de línea de comando basado en texto. Su interfaz es similar a la de MSDOS, aunque los comandos no son los mismos.

Plataformas de hardware y software

Entre los sistemas operativos más conocidos se puede citar:

  • Microsoft Windows XP. Éste es el producto estrella de Microsoft y fue presentado en 2001.
  • Windows Server 2003. En secuencia, es el equivalente para servidores de Windows XP y el sucesor de la familia de productos Windows 2000. 
  • Microsoft Windows CE.NET. Esta versión reducida, diseñada principalmente para dispositivos conectados e incrustados y para computadoras de bolsillo y teléfonos móviles. 
  • Palm OS. Este sistema operativo, desarrollado originalmente para la Palm Pilot, se incluye en la actualidad en muchos dispositivos de bolsillo fabricados por una gran variedad de fabricantes como Palm, Handspring y Sony. Su interfaz de usuario basada en un lápiz es fácil de usar. 
  • Mac OS x (10). Presentado en 2001, OS X es la última versión del sistema operativo para la Mac. 
  • Mac OS 9. Éste es el último de una larga lista de sistemas operativos Macintosh que se inicio con el sistema Mac Original en 1984. OS 9 y sus predecesores solo funcionan en Mac. 
  • Linux, Sun Solaris y otras versiones UNIX. Siempre es posible encontrar una versión de UNIX o Linux en PC, Mac estaciones de trabajo, supercomputadoras, mainframes y otros muchos dispositivos. Linux es especialmente popular debido a que no tiene coste y está soportado gratuitamente por sus partidarios.

En sí mismos, los sistemas operativos no resultan muy útiles a la gente. Necesitan de software para que puedan resultar interesantes.

No comments:

Post a Comment