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.
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).
- 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