30/6/09

INTRODUCCIÓN A LA INFORMÁTICA

*Definición de las computadoras y sus componentes.
*Exploración de las funciones de la computadora.
*Clasificación de las computadoras y las Redes de computadoras.
*Descripción de dispositivos periféricos en una computadora.
*Dispositivos apuntadores (Ratón, Esfera y Lápiz)
*Estudio de los teclados.
*Empleo de interfaces gráficas “amigables con el usuario” GUI


DEFINICIÓN DE LAS COMPUTADORAS Y SUS COMPONENTES
Computadora es un dispositivo electrónico que acepta datos de entrada, los procesa, los almacena y los emite como salida para su interpretación. La computadora es parte de un sistema de computación. Como el que se ilustra a continuación. (Figura 1)

Un SISTEMA DE COMPUTACIÓN está conformado por hardware, periféricos y software. Tal como se ilustra en la figura 1.

HARDWARE incluye todos los dispositivos eléctricos, electrónicos y mecánicos (que se pueden ver y tocar) que se utilizan para procesar los datos. La computadora es parte del hardware del sistema de computación.

PERIFÉRICOS son los dispositivos de hardware que se encuentran alrededor de la computadora con la finalidad de aumentar las posibilidades de acceso, almacenamiento y salida del equipo de cómputo. Incluyen los dispositivos de Entrada y los de Salida.

DISPOSITIVOS DE ENTRADA son periféricos cuya función es la de reunir y traducir los datos de entrada a una forma que sea aceptable para la computadora. Los dispositivos de entrada más comunes son el teclado y el ratón o “mouse” (ver Figura 1)

DISPOSITIVOS DE SALIDA son periféricos que representan, imprimen o transfieren los resultados del procesamiento, extrayéndolos de la Memoria Principal de la computadora. Entre los dispositivos de salida más utilizados se encuentran el Monitor o Pantalla y la Impresora.

SOFTWARE – o programas – es el conjunto de instrucciones electrónicas para controlar el hardware de la computadora.
Algunos Programas existen para que la Computadora los utilice como apoyo para el manejo de sus propias tareas y dispositivos.
Otros Programas existen para que la Computadora le dé servicio al Usuario. Por ejemplo, la creación de documentos electrónicos que se imprimen.

DATOS se refieren a los elementos crudos (materia prima) que la computadora puede manipular, para convertirlos en resultados o datos procesados, conocidos como información (producto terminado). Los datos pueden consistir en letras, números, sonidos o imágenes. Independiéntemente del tipo de datos que sean, la computadora los convierte en números para procesarlos. Por lo tanto, los datos computarizados son digitales, lo que significa que han sido reducidos a dígitos o números. Los datos se guardan en medios de almacenamiento auxiliar como parte de archivos.

ARCHIVOS DE COMPUTADORA son conjuntos de datos interrelacionados a los que se les ha asignado un nombre. Los archivos pueden contener conjuntos de datos o instrucciones de programa. Un archivo que contiene datos que el usuario puede abrir y utilizar a menudo se llama documento. Un documento de computadora puede incluir muchas clases de datos, tales como: Un archivo de texto (como una carta); un grupo de números (como un presupuesto); un fragmento de video (que incluya imágenes y sonidos, como un “video clip”). Los programas de computadora (software) también se organizan en archivos, pero debido a que no se consideran texto, no son archivos de documentos.

USUARIO es toda persona que interactúa con la computadora para proporcionar datos de entrada o para obtener resultados del sistema de cómputo, que normalmente se despliegan por Pantalla o se imprimen a través de la Impresora.


Dos componentes manejan el procesamiento de datos en una computadora: la Unidad Central de Procesamiento o CPU y la Memoria Principal RAM. Ambos componentes se localizan en la Tarjeta Principal del Sistema o MOTHERBOARD, también conocida como Tarjeta Madre, porque es el tablero de circuitos que conecta la CPU a todos los otros dispositivos de hardware.


UNIDAD CENTRAL DE PROCESAMIENTO o CPU

Es el cerebro de la computadora, ya que en él se manipulan los datos. En una computadora personal o PC, la CPU entera está contenida en un pequeño chip llamado microprocesador. Cada CPU tiene dos partes fundamentales: la Unidad de Control (Control Unit) y la Unidad Aritmético-Lógica (Arithmetical-Logical Unit ALU).

UNIDAD DE CONTROL

Es el centro de administración de los recursos de la computadora (como un fiscal de tránsito). Es el centro de logística en el CPU. La Unidad de Control tiene incorporadas las instrucciones o conjunto de instrucciones. Éstas enumeran todas las operaciones que puede realizar la CPU. Cada instrucción en el juego de instrucciones es expresada en microcódigo, el cual consta de una serie de direcciones básicas que le dicen al CPU cómo ejecutar operaciones más complejas.

UNIDAD ARITMETICO - LOGICO
En esta Unidad se realizan las Operaciones Aritméticas (Suma “+”, Resta “-“, Multiplicación “x”, División “/”, Elevar a Potencia “^”) y las Operaciones Lógicas tales como igual a, no igual a ; mayor que, no mayor que ; menor que, no menor que ; mayor que o igual a, no mayor que ni igual a ; menor que o igual a, no menor que ni igual a.

Muchas instrucciones realizadas por la Unidad de Control involucran tan sólo mover datos de un lugar a otro; de RAM al Almacenamiento Auxiliar (por ejemplo Disco Duro); de RAM a la Impresora o a la Pantalla y así sucesivamente. No obstante, cuando la Unidad de Control encuentra una instrucción que implica aritmética o lógica, pasa esa instrucción a la Unidad Aritmético-Lógica o UAL. En la UAL se encuentran un grupo de registros, que son ubicaciones de memoria de alta velocidad construidas directamente en la CPU, las cuales se utilizan para conservar los datos que se están procesando en ese momento. Por ejemplo, la Unidad de Control podría cargar “dos números desde la Memoria RAM” a los registros de la ULA. Después podría pedirle a la ULA que “divida los dos números” (una operación aritmética) o que “determine si los números son iguales” (una operación lógica).

MEMORIA PRINCIPAL O MEMORIA RAM (Random Access Memory)
Es el dispositivo de almacenamiento principal en tiempo real donde se guardan los datos y programas mientras se están utilizando. La RAM consiste de chips, ya sea en la Tarjeta Madre o en un pequeño tablero de circuitos conectados a ésta. La CPU contiene las instrucciones básicas necesarias para operar la computadora, pero no tiene capacidad suficiente para almacenar programas enteros o conjuntos grandes de datos de manera permanente, por tanto, se apoya en la RAM para esta importante función de almacenar y recuperar datos con gran rapidez.
La Memoria RAM es de acceso aleatorio y de naturaleza volátil ya que pierde su contenido cuando se apaga la computadora.
La CPU está conectada a dos clases de memoria: la RAM que es volátil, y la ROM, que es no volátil (conserva los datos que contiene, aun cuando la computadora esté apagada).


CLASIFICACIÓN DE LAS COMPUTADORAS Y LAS REDES DE COMPUTADORAS.
Las computadoras con base en su tamaño y precio se clasifican en cuatro grandes categorías, a saber: Microcomputadoras, Minicomputadoras, Mainframes y Supercomputadoras.

Microcomputadora o PC es el tipo más común de computadora, por eso se le llama Computadora Personal, por estar diseñada para ser utilizada por una sola persona a la vez. A pesar de su pequeño tamaño, la PC moderna es más potente que cualquiera de las computadoras de las décadas de 1950 a 1960. (Ver Figura 1). Han llegado a ser tan fundamentales para la sociedad del siglo XXI, que sin ellas la economía mundial se detendría. Son herramientas tan flexibles y poderosas que la mayoría de las personas en el mundo de las actividades económicas de los sectores públicos, privados, ONG’s, Cooperativas, PYMES las utilizan normalmente.
Aunque no se trabaje en una entidad económica, las computadoras nos afectan todos los días. Cada vez que vamos al banco, renovamos una suscripción, pedimos información de un número telefónico, etc., nos estamos beneficiando con el poder, ubicuidad, y la velocidad de las computadoras. Incluso, al comprar comestibles, medicinas, o gasolina, interactuamos con computadoras.

Minicomputadoras son algo mayores que las PC y casi siempre las usan empresas e instituciones en formas específicas, como el procesamiento de la nómina. Estos aparatos pueden ejecutar las tareas de muchos usuarios desde una CPU Central a la que se conectan terminales los cuales son dispositivos de entrada y salida (parecidos a un PC pero sin capacidad de cómputo), dotados de un teclado, una Pantalla y el cable de conexión al CPU Central. Transmiten las solicitudes de proceso a la Minicomputadora, la cual realiza el proceso de los datos y envía el resultado al terminal correspondiente. La Impresora de la Minicomputadora realiza el trabajo de impresión para todos los Usuarios conectados por terminal. El Dispositivo de Almacenamiento de la Minicomputadora contiene los datos para todos los usuarios en un solo lugar.
Las Minicomputadoras tienden a desaparecer ante el crecimiento de la capacidad de cómputo distribuido en las Redes de Computadoras.

Mainframes o Computadoras Centrales son grandes, rápidas y bastante costosas. Frecuentemente, son utilizadas por empresas privadas y oficinas gubernamentales para centralizar el almacenamiento, procesamiento y administración de grandes cantidades de datos, y estar en capacidad de proporcionar estos datos a petición de muchos usuarios conectados. Son el sistema preferido cuando se requieren: confiabilidad, seguridad en los datos y control centralizado. La computadora central ejecuta tareas de procesamiento para muchos usuarios, quienes introducen sus peticiones desde sus terminales. Para procesar grandes cantidades de datos, suelen tener múltiples CPUs: Un CPU dirige las operaciones generales, otro CPU maneja la comunicación con todos los usuarios que solicitan datos; un tercer CPU localiza los datos solicitados en Bases de Datos.Figura 4 Computadora Mainframe

En la gráfica podemos observar el tamaño relativo de una computadora Mainframe en un ambiente típico de trabajo en el sector público y en grandes empresas, que requieren simultáneamente: confiabilidad, seguridad de la data y control centralizado.


SUPERCOMPUTADORAS
Constituyen el tipo más grande, rápido y costoso de estos aparatos. Contrario a los Minicomputadores y las Computadoras Mainframe, no son diseñados para optimizar el procesamiento de múltiples usuarios; utilizan su gran poder de cómputo en la solución de problemas muy complejos, como la predicción del clima, modelar reacciones nucleares, o control de vuelos espaciales. La velocidad de una Supercomputadora puede llegar a superar los “miles de millones de instrucciones por segundo”.



REDES DE COMPUTADORAS
Una Red es un conjunto de computadoras y otros dispositivos que se comunican entre sí para compartir datos, hardware y software. En las empresas, las redes han revolucionado el uso de la tecnología computacional, hasta el punto de que es creciente la tendencia al reemplazo de computadoras Mainframe y sus terminales por Redes Computacionales en las que cada empleado que necesita una computadora para trabajar, tiene una computadora personal conectada a la red. Ahora, la tecnología computacional y la habilidad para utilizarlas “ya no están centralizadas en la computadora Mainframe y el Personal del Departamento de Informática y Sistemas” de las empresas usuarias de las Nuevas Tecnologías de la Información y la Comunicación (NTIC). La tecnología y la habilidad para utilizarla son distribuidos dentro de la organización a través de una red de computadoras y usarios entrenados en computación.
En la educación, también han cambiado a estrategias diseñadas con base en computadoras personales en red. Esto incluye las Redes de Área Local (LAN) dentro de un área relativamente limitada, como un edificio o una universidad, donde se conectan las computadoras e impresoras en un laboratorio de computación, y las Redes de Área Amplia (WAN) que abarca una gran zona geogáfica entre ciudades, regiones, o países, como es el caso de Internet.

Los cuatro grandes beneficios involucrados en el uso de las Redes Computacionales son:
• Permitir el acceso simultáneo a programas e información muy importantes (Sin una red que permita compartir archivos los empleados tienen que guardar copias separadas de información en diferentes discos duros, información que se vuelve muy difícil de actualizar).
• Permitir a la gente compartir equipos periféricos, como impresoras y escáners.
• Hacer más eficiente la comunicación personal a través del correo electrónico (e-mail).
• Facilitar el proceso de respaldo (En las organizaciones públicas y privadas la información es extremadamente valiosa, por lo cual es imperativo tener la seguridad de los empleados respalden su información computarizada. Esto se operacionaliza mediante un dispositivo de almacenamiento común al cual los usuarios puedan accesar a través de una red con base en los niveles de autorización respectivos).


ESQUEMA DE COMUNICACIÓN ENTRE COMPUTADORAS

En un esquema básico de comunicación entre computadoras como el siguiente: (Figura 6)


AP = Aplicación SDC = Sistema de Comunicación
Fuente: Adaptado de Fred Halsall (Comunicación de Datos, redes de computadoras y sistemas abiertos, p. 4)


Si la Comunicación Usuario – Usuario es para transferir un archivo de datos de un computador a otro parecido situado en el mismo piso de oficina o en la misma habitación, el recurso de comunicación ha de ser más sencillo (por ejemplo, el recurso de transmisión puede consistir en un sencillo cable de enlace punto a punto) que el requerido para transferir datos entre computadores diferentes situados en distintas localidades.

Cuando la Comunicación Computador – Computador ocurre entre computadores ubicados en diferentes partes de una ciudad, país o región, se precisa la utilización de recursos de portadora pública. Generalmente, esto implica la red telefónica pública conmutada –PSTN: public switched telephone network- para lo cual se requiere un dispositivo conocido como módem para transmitir los datos.

Si en la aplicación intervienen más de dos computadoras, se necesita un recurso de comunicación conmutado (red) para que todos los computadores puedan comunicarse entre sí en momentos diferentes (Comunicación Computador – Red). Cuando los computadores y otros dispositivos, se encuentran distribuidos físicamente en un área relativamente pequeña (en una sola oficina o en un solo edificio) y están conectados por un enlace de comunicaciones que permite que cada dispositivo pueda interactuar con cualquier otro de la red, estamos hablando de una red que el propio usuario puede instalar. A este tipo de redes se les llama red de área local (LAN: local area network). En el mercado informático existe una extensa gama de redes LAN y de equipos asociados.


Cuando los computadores están ubicados en diferentes localidades geográficas, se requieren los recursos de las portadoras públicas para unir los diversos segmentos de la red. A la red así configurada se le conoce como red de área extensa (WAN: wide area network) Una WAN puede ser una red local grande, o puede estar formada por una serie de LAN (redes de área local) conectadas entre sí.


El tipo de WAN que se utilice dependerá de la naturaleza de la aplicación. Por ejemplo, cuando todos los computadores pertenecen a la misma empresa y se requiere transferir un elevado volumen de datos entre localidades, una estrategia podría consistir en alquilar líneas o circuitos de transmisión de portadoras públicas e instalar un sistema de conmutación privado en cada localidad para crear lo que se conoce como red privada corporativa, en la cual se integran comunicaciones de voz y datos. Muchas grandes empresas aplican este enfoque por razones de políticas corporativas a nivel mundial. Este tipo de soluciones sólo está al alcance de las grandes empresas nacionales y multinacionales, debido a que el tráfico entre localidades es suficientemente voluminoso para justificar el costo de alquilar líneas de comunicación, la instalación y mantenimiento de una red privada. En la mayoría de los demás casos es necesario utilizar las redes de portadora pública. Éstas proporcionan un servicio telefónico público conmutado, además casi todas las portadoras públicas ofrecen servicios de datos conmutados, conexiones internacionales y se diseñan específicamente para transmitir datos más que voz. Halsall (1998) Consecuentemente, para redes WAN con localidades nacionales, regionales y/o internacionales, lo que suele utilizarse como solución es una red de datos conmutada (PSDN: public switched data network).

Muchas portadoras públicas ya han convertido sus PSTN existentes para poder transmitir datos sin modems. Con lo cual, las redes resultantes que funcionan de modo totalmente digital, se conocen como redes digitales de servicios integrados (ISDN: integrated services digital networks). Las ISDN, según el Diccionario de Informática e Internet, Microsoft (2001) son “Redes digitales de comunicaciones a nivel mundial surgidas a partir de los servicios telefónicos existentes. El objetivo de ISDN o RDSI (Red Digital de Servicios Integrados) es reemplazar la red telefónica actual, que requiere la conversión de digital a analógico, con facilidades totalmente dedicadas al intercambio y la transmisión digitales, música y video. RDSI está construido a partir de dos tipos principales de canales de comunicación: un canal B, que transporta datos a una velocidad de 64Kbps (kilobits por segundo), y un canal D, que transporta información de control a 16 o 64 Kbps. Las computadoras y otros dispositivos se conectan a líneas RDSI mediante interfaces estandarizados simples. Cuando esté completamente implementado (posiblemente a comienzos del nuevo milenio), se espera que RDSI proporcione a los usuarios servicios de comunicación más amplios y rápidos”.


Halsall (1998) “Las redes que hemos analizado hasta ahora se han diseñado primordialmente para transmitir datos entre estaciones de trabajo que manejan servicios exclusivamente de datos. Recientemente han aparecido estaciones de trabajo que proporcionan servicios en los que no sólo intervienen datos, sino también una diversidad de tipos de información distintos. Entre ellas están las estaciones de escritorio que permiten aplicaciones de videotelefonía, videoconferencias y servicios multimedia más generales. A fin de sustentar este conjunto de servicios más abundante, ha aparecido una nueva generación de redes denominadas redes multiservicio de banda ancha; el término -banda ancha- se usa en virtud de sus grandes velocidades de transmisión de bits.” (p. 9).

En la Venezuela del 2005, ya están disponibles estos servicios a través de CANTV, TELCEL y otros proveedores de servicios de comunicaciones de “estado del arte”, como se evidencia en la abundante promoción de esos servicios a través de los medios de comunicación masivos (Radio, Televisión, Internet, Prensa y publicaciones especializadas, e incluso a través de los servicios de Telefonía y Móviles Celulares en sus diversas encarnaciones).


TOPOLOGÍAS DE RED PARA REDES DE ÁREA LOCAL (LAN)
TOPOLOGÍA (topology) s. La configuración formada por las conexiones entre los dispositivos en una red de área local (LAN) o entre dos o más LAN. Véase también red en bus, LAN, red en anillo, red en estrella, red en anillo con testigo, red en árbol.
Microsoft Diccionario de Informática e Internet (2001).

DISEÑO DE UNA TOPOLOGÍA DE RED
La topología de red se refiere a la organización o distribución física de los equipos, cables y otros componentes de la red. El término Topología es la denominación estándar que utilizan los profesionales de las redes al referirse al Diseño Básico de la Red. Además del término topología existen otros términos que se utilizan para definir el diseño de una red:

• Esquema físico.
• Diseño.
• Diagrama.
• Mapa.

La topología de una red afecta sus capacidades, por lo tanto, la selección de una topología tendrá impacto sobre:

• El tipo de equipamiento que necesita la red.
• Las capacidades del equipo.
• El crecimiento de la red.
• Las formas de gestionar la red.

Es importante considerar que antes de que los equipos puedan compartir recursos o realizar otras tareas de comunicaciones, necesitan estar conectados sus componentes. En la mayoría de las redes se utilizan cables para conectar un equipo a otro Las cuatro topologías básicas de las redes son:

Bus Consta de dispositivos conectados a un cable común compartido.
Estrella Es la conexión de equipos a segmentos de cable que arrancan de un punto único, o hub (concentrador).
Anillo Es la conexión de equipos en un único circuito de cable.
Malla En esta topología cada equipo está conectado a todos los demás equipos mediante cables separados

Estas cuatro topologías pueden combinarse obteniendo una variedad de topologías híbridas más complejas, tales como Estrella-bus, Estrella-anillo.

Nota: La topología física de una red es el propio cable, mientras que la topología lógica de la red es la forma en que se transmiten las señales por el cable.

RED EN BUS (bus network):

Red de área local en la que todos los nodos están conectados a una línea de comunicaciones principal (bus). En una red en bus, cada nodo controla la actividad de la línea (nodo: En redes LAN, un dispositivo que se conecta a la red y es capaz de comunicar con otros dispositivos de la red). Los mensajes son detectados por todos los nodos pero sólo son aceptados por los nodos a los que van dirigidos. Un nodo que funciona mal deja de comunicar pero no interfiere en la operación (como podría ser el caso en una red circular en la que se trasladan los mensajes de un nodo al siguiente). Para evitar las colisiones que ocurren cuando dos o tres nodos intentan utilizar la línea a la vez, las redes de bus dependen por lo general de la detección de las colisiones o el paso de señales para regular el tráfico.

RED EN ANILLO (ring network):
Red de área local en la que los dispositivos (nodos) están conectados en un lazo cerrado, o anillo. Los mensajes de una red en anillo pasan alrededor de todo el anillo de nodo en nodo, en una sola dirección. Cuando un nodo recibe un mensaje, examina la dirección de destino asociada al mismo. Si la dirección es la misma que la del nodo, éste acepta el mensaje; en caso contrario, vuelve a generar la señal y pasa el mensaje al siguiente nodo del anillo. Esta regeneración permite que una red en anillo pueda recorrer distancias más largas que las redes en bus y en estrella. El anillo puede estar configurado además para pasar por alto cualquier mal funcionamiento o fallo de un nodo. Sin embargo, dado que se trata de un lazo cerrado, puede resultar difícil incorporar nuevos nodos. Véase paso de testigo, red en anillo. (Figura 8)

RED EN ETRELLA (star network):
Red LAN en la que cada dispositivo (nodo) se conecta a una computadora central en una configuración con forma de estrella (topología); normalmente, una red que consta de una computadora central (denominada hub) rodeada por terminales. (Figura 9)

RED EN ARBOL (tree network):
Una topología para una red LAN en la que una máquina se conecta a una o más de otras máquinas, cada una de las cuales se conectan a una o más de otras, y así sucesivamente, de manera que la estructura formada por la red se parece a un árbol. (Figura 10 )

DESCRIPCIÓN DISPOSITIVOS PERIFÉRICOS EN UNA COMPUTADORA
Los Dispositivos Periféricos son componentes de hardware que acompañan a una computadora para incrementar su funcionalidad para introducir, extraer y almacenar datos. Están ubicados “alrededor de la máquina”. Por ejemplo, el ratón o mouse, el teclado, el monitor, la impresora, lectores de códigos de barra, disco duro, etc.
Los Dispositivos Periféricos se instalan con base en las necesidades del usuario y sus disponibilades económicas. Un Equipo Básico típico que se compre, incluye: Procesador, Memoria RAM, Disco Duro, Unidad de Disquete, Monitor, CD-ROM, Impresora, Teclado y Ratón. Cualquier Periférico adicional que se requiera “se paga aparte”. Se podría sustituir el mouse con una “Esfera Rastreadora” o Track Ball. También es posible aumentar las capacidades de la computadora agregándole un Digitalizador o Escáner para capturar imágenes. Para la conexión a Internet se requiere: Tarjeta de Red, Modem y una Cuenta de Servicio de Acceso a Internet a través de un Proveedor de Servicios Internet (ISP). De manera que las posibilidades de configuración del Equipo de Computación Básico, son muy amplias, dependiendo de cuanto dinero se esté dispuesto a invertir.



DISPOSITIVOS APUNTADORES (Ratón, Esfera y Lápiz)

Estos son dispositivos que ayudan a manipular objetos y seleccionar opciones de menú en la Pantalla. El más conocido es el mouse o ratón como dispositivo apuntador en el Equipo de Computación Básico.


Para manejar el Ratón o Mouse, descansa la palma de la mano derecha sobre él, de manera que el dedo índice quede sobre el botón izquierdo. Sujeta el ratón con el dedo pulgar al lado izquierdo, el dedo medio sobre el botón derecho y los dos dedos restantes, anular y meñique, sujetando el lado derecho del mouse. Pruébalo ahora en tu computadora.
Un apuntador del ratón o puntero (normalmente en forma de punta de flecha) se mueve por la Pantalla “en concordancia con los desplazamientos del ratón” sobre una superficie dura, preferiblemente una “almohadilla de desplazamiento del ratón” o mouse pad, sobre la superficie del escritorio.

El ratón tiene tres operaciones fundamentales, a saber:

1. Click en el ratón: es la operación de “oprimir el botón izquierdo una vez” para seleccionar un objeto en la Pantalla.
2. Doble Click en el ratón: se realiza al “oprimir el botón izquierdo dos veces en rápida sucesión” en algunas operaciones con el ratón se requiere dar doble click.
3. Arrastrar con el ratón: es una operación combinada de “Click y Arrastre de un objeto de un lugar a otro en la Pantalla”. Para ello: a) Colocar el Puntero del Ratón sobre el objeto que se va a arrastrar; b) Pulsar el botón izquierdo del mouse y “mantenerlo presionado”; c) Mover el ratón en la dirección de arrastre en la Pantalla para “jalar o arrastrar el objeto hasta su nuevo lugar”; d) Soltar el ratón levantando el “dedo índice derecho del botón izquierdo del ratón”.


LA ESFERA RASTREADORA o “track ball”


Es un dispositivo apuntador alternativo al ratón. Funciona como un mouse de cabeza. El usuario descansa su dedo pulgar en la pelota expuesta y sus dedos en los tres botones. Para mover el Puntero por la Pantalla, se hace girar la pelota con el pulgar. Debido a que no se mueve el dispositivo completo, un track ball requiere menos espacio que un ratón; de manera que cuando el espacio disponible es limitado, un track ball puede ser una solución “a la medida de las circunstancias”. Estos dispositivos se hicieron populares con la llegada de las computadoras laptop, las cuales se suelen utilizar sobre las rodillas o en superficies de trabajo pequeñas sin espacio para un mouse. Por ejemplo, en el asiento de un avión.
Los track balls, tal como ocurre con los ratones, están disponibles en diferentes modelos. En computadoras portátiles, los track balls pueden estar incorporados en forma directa en el teclado, deslizarse fuera de la unidad del sistema en un cajón pequeño o sujetarse con una abrazadera a un lado del teclado.


LÁPIZ ELECTRÓNICO

Aunque el teclado y el ratón son los dispositivos de entrada más utilizados cuando se trabaja en el escritorio, hay otras formas varias de introducir datos en una computadora. A veces, la herramienta tan sólo es cuestión de preferencia del usuario. Sin embargo, en muchos casos, las herramientas usuales pueden resultar poco apropiadas. Por ejemplo, en una fábrica o almacén llenos de polvo, un ratón o un teclado pueden atascarse de suciedad muy pronto.

Los Sistemas de Cómputo basados en lápices usan un lápiz electrónico como su principal dispositivo de entrada. El usuario sostiene el lápiz en su mano y escribe en una almohadilla especial o directamente en la Pantalla (cuando ésta es sensible al tacto) Sistema de Cómputo basado en Lápiz)


EL TECLADOS

El teclado es el principal dispositivo de entrada para introducir texto y números en la computadora. Consta de más o menos 100 teclas, cada una de las cuales envía un código de carácter diferente a la CPU.
Los teclados de computadoras personales vienen en muchos estilos. Los diversos modelos difieren en tamaño, forma y tacto, pero exceptuando unas cuantas teclas para propósitos especiales, la mayor parte de los teclados tienen una disposición casi idéntica. La disposición más común es la conocida como “Teclado Extendido IBM”. Tiene 101 teclas ordenadas en cinco grupos, como se muestra a continuación.












1. Teclas Alfanuméricas (Alphanumeric keys)
2. Teclas Modificadoras (Modifier keys)
3. Teclado Numérico (Numeric keypad)
4. Teclas de Función (Function keys)
5. Teclas de Movimiento del Cursor (Cursor movement keys)



Teclas Alfanuméricas (Alphanumeric keys)

Son parecidas a las teclas de una máquina de escribir, tanto en su aspecto como en su acomodación. Este orden de acomodación común se llama “disposición QWERTY” debido a que las seis primeras letras en la fila superior son precisamente Q, W, E, R, T, Y. Además de las letras, se incluyen los números y los signos de puntuación y símbolos especiales (¡,#,$,%,&,/, etc.).

Teclas Modificadoras (Modifier keys)

Son teclas que se utilizan en combinación con las teclas del teclado alfanumérico, para ejecutar operaciones de “atajos de teclado” o equivalentes de opciones de menú de la interfaz con el usuario. En una PC las teclas modificadoras son: Shift, Ctrl, y Alt.

Teclado Numérico (Numeric keypad)

Se ubica en la parte derecha del teclado, se parece a una máquina calculadora, con sus diez dígitos y sus operadores matemáticos (+, -, *, / ). Este teclado es el preferido por los Cajeros, para realizar entradas de datos numéricos.

Teclas de Función (Function keys)

Las Teclas de Función (F1, F2,...,F12) generalmente están ordenadas en una hilera a lo largo de la parte superior del teclado. Le permiten dar comandos a la computadora “sin teclear series largas de caracteres”. El propósito de cada tecla de función depende del programa o software que se esté utilizando. Por ejemplo, en la mayoría de los programas la Tecla F1 es la tecla para solicitar “Ayuda” contextual. Cuando se oprime, se despliega una Pantalla con información sobre el programa que se está ejecutando.

Teclas de Movimiento del Cursor (Cursor movement keys)

Son teclas que permiten desplazar el cursor en la Pantalla hacia arriba, abajo, derecha, o izquierda. En un Programa de Procesamiento de Palabras, hay una marca en la Pantalla en el lugar donde serán introducidos los caracteres que mecanografíe. Esta marca recibe el nombre de cursor o punto de Inserción, puede aparecer en la Pantalla como un cuadro, una línea o un símbolo que parece una I mayúscula, conocido como cursor en forma de I.

Otras Teclas (Esc, Impr Pant, Bloq Despl, Pausa)

Esc Por lo general, se usa para “retroceder” un nivel en un ambiente multinivel. Por ejemplo, si se abren varias Cajas de Diálogo, uno a partir del otro, se puede oprimir la tecla Esc para cerrarlas en orden inverso.
Impr Pant Esta tecla envía una “imagen” del contenido de la Pantalla en forma directa a la impresora. Sólo funciona cuando hay una visualización en “modo texto en la Pantalla”; no funciona con Programas Gráficos o en Ambientes Gráficos.

Bloq Despl Por lo general, esta tecla controla las funciones de las teclas de movimiento del cursor. Con algunos Programas, Bloq Despl hace que el cursor permanezca estacionario en la Pantalla, y que el contenido del documento se mueva alrededor de él. Cuando se desactiva Bloq Despl, el cursor se mueve en forma normal. Esta tecla no funciona en absoluto en algunos Programas.

Pausa En algunos Programas, esta tecla puede usarse para detener la ejecución de un “comando en progreso”.
ESTUDIO DE INTERFACES GRÁFICAS “amigables con el usuario” (GUI)

Para alcanzar el “dominio instrumental o manejo correcto de la computadora” es necesario que el Usuario se comunique con ella; debe decirle qué tareas ha de ejecutar; interpretar con precisión la información que le presenta en la Pantalla.
Interfaz con el usuario es el medio de comunicación del ser humano con la máquina. A través de esta interfaz, la computadora “acepta las entradas” y “presenta sus salidas”. Estas salidas proporcionan:
• los resultados del procesamiento,
• confirman la terminación del procesamiento o
• indican que ya se almacenaron los datos
Los tres medios de comunicación Usuario – Computadora más conocidos de la interfaz son:
1. Prompts
2. Asistentes
3. Intefaz de línea de comando

Prompt es un mensaje de orientación, que presenta la computadora por la Pantalla, para pedirle al Usuario que haga algo. Algunos son fáciles de entender, como:

“Teclee su nombre completo”

Otros pueden resultar incomprensibles para los Usuarios Casuales, por ejemplo

Para responder a un Prompt el Usuario debe introducir la data solicitada o seguir una instrucción “al pie de la letra”.

Diálogo de Sugerencias es una “secuencia de Prompts” que se utiliza a veces para desarrollar una interfaz con el Usuario.

Asistentes son facilidades de uso que proporcionan los Programas Comerciales Modernos en lugar de Diálogos de Sugerencias. Un Asistente es una sucesión de Pantallas que dirigen al Usuario a través de varias etapas, como:
• Establecer la conexión a Internet,
• Crear una Gráfica de Negocios,
• Arrancar un Escáner, etc.

Comando es una instrucción para que la computadora ejecute cierta tarea o trabajo. Una interfaz que pide al Usuario que teclee comandos se conoce como Interfaz de Línea de Comando con el Usuario. Cada palabra de un comando da lugar a una acción específica por parte de la computadora.
Los Comandos que se introducen deben corresponder a una sintaxis específica. La Sintaxis denota la “sucesión y puntuación de palabras de comandos, parámetros e interruptores”. Si el Usuario “escribe mal una palabra de comando” o si “omite la puntuación requerida” o “teclea palabras fuera de orden”, se producirá un Mensaje de error o Error de sintaxis. El proceso continuará después que el Usuario teclee el comando en forma correcta.

Menu es una Lista de Comandos u Opciones que ayuda a reducir las dificultades de muchos Usuarios “que encuentran muy complicado” recordar las palabras y la sintaxis de los comandos para las interfaces de líneas de comando con el Usuario. Basta con elegir el comando del menú para que la computadora ejecute la tarea correspondiente. Generalmente, se emplean dos métodos para para presentarle al Usuario una “lista razonable de Opciones de Menú”: Uno utiliza Jerarquías y el otro Cuadros de Diálogo.

Jerarquía de Menús es un ordenamiento de Menús clasificados en una relación de superior-subordinado, como en un organigrama. Después de seleccionar una opción en un Menú Principal, aparece un submenú en el cual se pueden hacer más selecciones señalando una opción del mismo, y así sucesivamente en orden de descendencia jerárquica.

Cuadro de Diálogo o Ventana de Diálogo presenta las opciones relacionadas con un comando que aparece como “Opción en un Menú”, por ejemplo en el Menú Archivo la opción Imprimir... (Print...) muestra tres puntos suspensivos para indicar que conduce a una Caja de Diálogo

BIBLIOGRAFÍA BÁSICA:

Parsons, June y Oja, Dan (2000) Conceptos de Computación. Thomson. México

Norton, Peter (2004) Introducción a la Computación. McGraw-Hill. México

Beekman, George (2004) Introducción a la Informática . Pearson. México

Material Elaborado por: Prof. Luis Ernesto Ramírez

Caracas 6 de marzo de 2005

Adaptado y Modificado: 2009 por Daniela V. Baptista


29/6/09

HISTORIA DE LAS COMPUTADORAS

COMPUTADORA
Máquina capaz de efectuar una secuencia de operaciones mediante un programa, de tal manera, que se realice un procesamiento sobre un conjunto de datos de entrada, obteniéndose otro conjunto de datos de salida. 

TIPOS DE COMPUTADORAS
Se clasifican de acuerdo al principio de operación de Analógicas y Digitales.
COMPUTADORA ANALÓGICA
Aprovechando el hecho de que diferentes fenómenos físicos se describen por relaciones matemáticas similares (v.g. Exponenciales, Logarítmicas, etc.) pueden entregar la solución muy rápidamente. Pero tienen el inconveniente que al cambiar el problema a resolver, hay que realambrar la circuitería (cambiar el Hardware).
COMPUTADORA DIGITAL
Están basadas en dispositivos biestables, i.e., que sólo pueden tomar uno de dos valores posibles: ‘1’ ó ‘0’. Tienen como ventaja, el poder ejecutar diferentes programas para diferentes problemas, sin tener que la necesidad de modificar físicamente la máquina.

HISTORIA DE LA COMPUTACIÓN
Uno de los primeros dispositivos mecánicos para contar fue el ábaco, cuya historia se remonta a las antiguas civilizaciones griega y romana. Este dispositivo es muy sencillo, consta de cuentas ensartadas en varillas que a su vez están montadas en un marco rectangular. Al desplazar las cuentas sobre varillas, sus posiciones representan valores almacenados, y es mediante dichas posiciones que este representa y almacena datos. A este dispositivo no se le puede llamar computadora por carecer del elemento fundamental llamado programa.

Otro de los inventos mecánicos fue la Pascalina inventada por Blaise Pascal (1623 - 1662) de Francia y la de Gottfried Wilhelm von Leibniz (1646 - 1716) de Alemania. Con estas máquinas, los datos se representaban mediante las posiciones de los engranajes, y los datos se introducían manualmente estableciendo dichas posiciones finales de las ruedas, de manera similar a como leemos los números en el cuentakilómetros de un automóvil.

La primera computadora fue la máquina analítica creada por Charles Babbage, profesor matemático de la Universidad de Cambridge en el siglo XIX. La idea que tuvo Charles Babbage sobre un computador nació debido a que la elaboración de las tablas matemáticas era un proceso tedioso y propenso a errores. En 1823 el gobierno Británico lo apoyo para crear el proyecto de una máquina de diferencias, un dispositivo mecánico para efectuar sumas repetidas. 

Mientras tanto Charles Jacquard (francés), fabricante de tejidos, había creado un telar que podía reproducir automáticamente patrones de tejidos leyendo la información codificada en patrones de agujeros perforados en tarjetas de papel rígido. Al enterarse de este método Babbage abandonó la máquina de diferencias y se dedico al proyecto de la máquina analítica que se pudiera programar con tarjetas perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos. La tecnología de la época no bastaba para hacer realidad sus ideas.

El mundo no estaba listo, y no lo estaría por cien años más. 

En 1944 se construyó en la Universidad de Harvard, la Mark I, diseñada por un equipo encabezado por Howard H. Aiken. Esta máquina no está considerada como computadora electrónica debido a que no era de propósito general y su funcionamiento estaba basado en dispositivos electromecánicos llamados relevadores.

En 1947 se construyó en la Universidad de Pennsylvania la ENIAC (Electronic Numerical Integrator And Calculator) que fue la primera computadora electrónica, el equipo de diseño lo encabezaron los ingenieros John Mauchly y John Eckert. Esta máquina ocupaba todo un sótano de la Universidad, tenía más de 18 000 tubos de vacío, consumía 200 KW de energía eléctrica y requería todo un sistema de aire acondicionado, pero tenía la capacidad de realizar cinco mil operaciones aritméticas en un segundo.

El proyecto, auspiciado por el departamento de Defensa de los Estados Unidos, culminó dos años después, cuando se integró a ese equipo el ingeniero y matemático húngaro John von Neumann (1903 - 1957). Las ideas de von Neumann resultaron tan fundamentales para su desarrollo posterior, que es considerado el padre de las computadoras.

La EDVAC (Electronic Discrete Variable Automatic Computer) fue diseñada por este nuevo equipo. Tenía aproximadamente cuatro mil bulbos y usaba un tipo de memoria basado en tubos llenos de mercurio por donde circulaban señales eléctricas sujetas a retardos.

La idea fundamental de von Neumann fue: permitir que en la memoria coexistan datos con instrucciones, para que entonces la computadora pueda ser programada en un lenguaje, y no por medio de alambres que eléctricamente interconectaban varias secciones de control, como en la ENIAC.

Todo este desarrollo de las computadoras suele divisarse por generaciones y el criterio que se determinó para determinar el cambio de generación no está muy bien definido, pero resulta aparente que deben cumplirse al menos los siguientes requisitos:
La forma en que están construidas. 
Forma en que el ser humano se comunica con ellas. 

Primera Generación
En esta generación había una gran desconocimiento de las capacidades de las computadoras, puesto que se realizó un estudio en esta época que determinó que con veinte computadoras se saturaría el mercado de los Estados Unidos en el campo de procesamiento de datos.

Esta generación abarco la década de los cincuenta. Y se conoce como la primera generación. Estas máquinas tenían las siguientes características:
Estas máquinas estaban construidas por medio de tubos de vacío. 
Eran programadas en lenguaje de máquina. 

En esta generación las máquinas son grandes y costosas (de un costo aproximado de ciento de miles de dólares).

En 1951 aparece la UNIVAC (NIVersAl Computer), fue la primera computadora comercial, que disponía de mil palabras de memoria central y podían leer cintas magnéticas, se utilizó para procesar el censo de 1950 en los Estados Unidos.

En las dos primeras generaciones, las unidades de entrada utilizaban tarjetas perforadas, retomadas por Herman Hollerith (1860 - 1929), quien además fundó una compañía que con el paso del tiempo se conocería como IBM (International Bussines Machines).

Después se desarrolló por IBM la IBM 701 de la cual se entregaron 18 unidades entre 1953 y 1957.

Posteriormente, la compañía Remington Rand fabricó el modelo 1103, que competía con la 701 en el campo científico, por lo que la IBM desarrollo la 702, la cual presentó problemas en memoria, debido a esto no duró en el mercado.

La computadora más exitosa de la primera generación fue la IBM 650, de la cual se produjeron varios cientos. Esta computadora que usaba un esquema de memoria secundaria llamado tambor magnético, que es el antecesor de los discos actuales.

Otros modelos de computadora que se pueden situar en los inicios de la segunda generación son: la UNIVAC 80 y 90, las IBM 704 y 709, Burroughs 220 y UNIVAC 1105.

Segunda Generación
Cerca de la década de 1960, las computadoras seguían evolucionando, se reducía su tamaño y crecía su capacidad de procesamiento. También en esta época se empezó a definir la forma de comunicarse con las computadoras, que recibía el nombre de programación de sistemas.

Las características de la segunda generación son las siguientes:
Están construidas con circuitos de transistores. 
Se programan en nuevos lenguajes llamados lenguajes de alto nivel. 

En esta generación las computadoras se reducen de tamaño y son de menor costo. Aparecen muchas compañías y las computadoras eran bastante avanzadas para su época como la serie 5000 de Burroughs y la ATLAS de la Universidad de Manchester.

Algunas de estas computadoras se programaban con cintas perforadas y otras más por medio de cableado en un tablero. Los programas eran hechos a la medida por un equipo de expertos: analistas, diseñadores, programadores y operadores que se manejaban como una orquesta para resolver los problemas y cálculos solicitados por la administración. El usuario final de la información no tenía contacto directo con las computadoras. Esta situación en un principio se produjo en las primeras computadoras personales, pues se requería saberlas "programar" (alimentarle instrucciones) para obtener resultados; por lo tanto su uso estaba limitado a aquellos audaces pioneros que gustaran de pasar un buen número de horas escribiendo instrucciones, "corriendo" el programa resultante y verificando y corrigiendo los errores o bugs que aparecieran. Además, para no perder el "programa" resultante había que "guardarlo" (almacenarlo) en una grabadora de astte, pues en esa época no había discos flexibles y mucho menos discos duros para las PC; este procedimiento podía tomar de 10 a 45 minutos, según el programa. El panorama se modificó totalmente con la aparición de las computadoras personales con mejore circuitos, más memoria, unidades de disco flexible y sobre todo con la aparición de programas de aplicación general en donde el usuario compra el programa y se pone a trabajar. Aparecen los programas procesadores de palabras como el célebre Word Star, la impresionante hoja de cálculo (spreadsheet) Visicalc y otros más que de la noche a la mañana cambian la imagen de la PC. El sortware empieza a tratar de alcanzar el paso del hardware. Pero aquí aparece un nuevo elemento: el usuario.

El usuario de las computadoras va cambiando y evolucionando con el tiempo. De estar totalmente desconectado a ellas en las máquinas grandes pasa la PC a ser pieza clave en el diseño tanto del hardware como del software. Aparece el concepto de human interface que es la relación entre el usuario y su computadora. Se habla entonces de hardware ergonómico (adaptado a las dimensiones humanas para reducir el cansancio), diseños de pantallas antirreflejos y teclados que descansen la muñeca. Con respecto al software se inicia una verdadera carrera para encontrar la manera en que el usuario pase menos tiempo capacitándose y entrenándose y más tiempo produciendo. Se ponen al alcance programas con menús (listas de opciones) que orientan en todo momento al usuario (con el consiguiente aburrimiento de los usuarios expertos); otros programas ofrecen toda una artillería de teclas de control y teclas de funciones (atajos) para efectuar toda suerte de efectos en el trabajo (con la consiguiente desorientación de los usuarios novatos). Se ofrecen un sinnúmero de cursos prometiendo que en pocas semanas hacen de cualquier persona un experto en los programas comerciales. Pero el problema "constante" es que ninguna solución para el uso de los programas es "constante". Cada nuevo programa requiere aprender nuevos controles, nuevos trucos, nuevos menús. Se empieza a sentir que la relación usuario-PC no está acorde con los desarrollos del equipo y de la potencia de los programas. Hace falta una relación amistosa entre el usuario y la PC.

Las computadoras de esta generación fueron: la Philco 212 (esta compañía se retiró del mercado en 1964) y la UNIVAC M460, la Control Data Corporation modelo 1604, seguida por la serie 3000, la IBM mejoró la 709 y sacó al mercado la 7090, la National Cash Register empezó a producir máquinas para proceso de datos de tipo comercial, introdujo el modelo NCR 315.

La Radio Corporation of America introdujo el modelo 501, que manejaba el lenguaje COBOL, para procesos administrativos y comerciales. Después salió al mercado la RCA 601.

Tercera generación
Con los progresos de la electrónica y los avances de comunicación con las computadoras en la década de los 1960, surge la tercera generación de las computadoras. Se inaugura con la IBM 360 en abril de 1964.3

Las características de esta generación fueron las siguientes:
Su fabricación electrónica esta basada en circuitos integrados. 
Su manejo es por medio de los lenguajes de control de los sistemas operativos. 

La IBM produce la serie 360 con los modelos 20, 22, 30, 40, 50, 65, 67, 75, 85, 90, 195 que utilizaban técnicas especiales del procesador, unidades de cinta de nueve canales, paquetes de discos magnéticos y otras características que ahora son estándares (no todos los modelos usaban estas técnicas, sino que estaba dividido por aplicaciones).

El sistema operativo de la serie 360, se llamó OS que contaba con varias configuraciones, incluía un conjunto de técnicas de manejo de memoria y del procesador que pronto se convirtieron en estándares.

En 1964 CDC introdujo la serie 6000 con la computadora 6600 que se consideró durante algunos años como la más rápida.

En la década de 1970, la IBM produce la serie 370 (modelos 115, 125, 135, 145, 158, 168). UNIVAC compite son los modelos 1108 y 1110, máquinas en gran escala; mientras que CDC produce su serie 7000 con el modelo 7600. Estas computadoras se caracterizan por ser muy potentes y veloces.

A finales de esta década la IBM de su serie 370 produce los modelos 3031, 3033, 4341. Burroughs con su serie 6000 produce los modelos 6500 y 6700 de avanzado diseño, que se reemplazaron por su serie 7000. Honey - Well participa con su computadora DPS con varios modelos.

A mediados de la década de 1970, aparecen en el mercado las computadoras de tamaño mediano, o minicomputadoras que no son tan costosas como las grandes (llamadas también como mainframes que significa también, gran sistema), pero disponen de gran capacidad de procesamiento. Algunas minicomputadoras fueron las siguientes: la PDP - 8 y la PDP - 11 de Digital Equipment Corporation, la VAX (Virtual Address eXtended) de la misma compañía, los modelos NOVA y ECLIPSE de Data General, la serie 3000 y 9000 de Hewlett - Packard con varios modelos el 36 y el 34, la Wang y Honey - Well -Bull, Siemens de origen alemán, la ICL fabricada en Inglaterra. En la Unión Soviética se utilizó la US (Sistema Unificado, Ryad) que ha pasado por varias generaciones.

Cuarta Generación
Aquí aparecen los microprocesadores que es un gran adelanto de la microelectrónica, son circuitos integrados de alta densidad y con una velocidad impresionante. Las microcomputadoras con base en estos circuitos son extremadamente pequeñas y baratas, por lo que su uso se extiende al mercado industrial. Aquí nacen las computadoras personales que han adquirido proporciones enormes y que han influido en la sociedad en general sobre la llamada "revolución informática".

En 1976 Steve Wozniak y Steve Jobs inventan la primera microcomputadora de uso masivo y más tarde forman la compañía conocida como la Apple que fue la segunda compañía más grande del mundo, antecedida tan solo por IBM; y esta por su parte es aún de las cinco compañías más grandes del mundo.

En 1981 se vendieron 800 00 computadoras personales, al siguiente subió a 1 400 000. Entre 1984 y 1987 se vendieron alrededor de 60 millones de computadoras personales, por lo que no queda duda que su impacto y penetración han sido enormes.

Con el surgimiento de las computadoras personales, el software y los sistemas que con ellas de manejan han tenido un considerable avance, porque han hecho más interactiva la comunicación con el usuario. Surgen otras aplicaciones como los procesadores de palabra, las hojas electrónicas de cálculo, paquetes gráficos, etc. También las industrias del Software de las computadoras personales crece con gran rapidez, Gary Kildall y William Gates se dedicaron durante años a la creación de sistemas operativos y métodos para lograr una utilización sencilla de las microcomputadoras (son los creadores de CP/M y de los productos de Microsoft).

No todo son microcomputadoras, por su puesto, las minicomputadoras y los grandes sistemas continúan en desarrollo. De hecho las máquinas pequeñas rebasaban por mucho la capacidad de los grandes sistemas de 10 o 15 años antes, que requerían de instalaciones costosas y especiales, pero sería equivocado suponer que las grandes computadoras han desaparecido; por el contrario, su presencia era ya ineludible en prácticamente todas las esferas de control gubernamental, militar y de la gran industria. Las enormes computadoras de las series CDC, CRAY, Hitachi o IBM por ejemplo, eran capaces de atender a varios cientos de millones de operaciones por segundo.

Quinta Generación
En vista de la acelerada marcha de la microelectrónica, la sociedad industrial se ha dado a la tarea de poner también a esa altura el desarrollo del software y los sistemas con que se manejan las computadoras. Surge la competencia internacional por el dominio del mercado de la computación, en la que se perfilan dos líderes que, sin embargo, no han podido alcanzar el nivel que se desea: la capacidad de comunicarse con la computadora en un lenguaje más cotidiano y no a través de códigos o lenguajes de control especializados.

Japón lanzó en 1983 el llamado "programa de la quinta generación de computadoras", con los objetivos explícitos de producir máquinas con innovaciones reales en los criterios mencionados. Y en los Estados Unidos ya está en actividad un programa en desarrollo que persigue objetivos semejantes, que pueden resumirse de la siguiente manera:
Procesamiento en paralelo mediante arquitecturas y diseños especiales y circuitos de gran velocidad. 
Manejo de lenguaje natural y sistemas de inteligencia artificial. 

El futuro previsible de la computación es muy interesante, y se puede esperar que esta ciencia siga siendo objeto de atención prioritaria de gobiernos y de la sociedad en conjunto.

28/6/09

HISTORIA DE LOS SISTEMAS OPERATIVOS

HISTORIA DE LOS SISTEMAS OPERATIVOS
Años 40
A finales de los años 40, con lo que podríamos llamar la aparición de la primera generación de computadoras, se accedía directamente a la consola de la computadora desde la cual se actuaba sobre una serie de micro interruptores que permitían introducir directamente el programa en la memoria de la computadora (en realidad al existir tan pocas computadoras todos podrían considerarse prototipos y cada constructor lo hacía sin seguir ningún criterio predeterminado). Por aquel entonces no existían los sistemas operativos, y los programadores debían interactuar con el hardware del computador sin ayuda externa. Esto hacía que el tiempo de preparación para realizar una tarea fuera considerable.

Años 50

A principios de los años 50 con el objeto de facilitar la interacción entre persona y computador, los sistemas operativos hacen una aparición discreta y bastante simple, con conceptos tales como el monitor residente, el proceso por lotes y el almacenamiento temporal.

Monitor residente
Su funcionamiento era bastante simple, se limitaba a cargar los programas a memoria, leyéndolos de una cinta o de tarjetas perforadas, y ejecutarlos. El problema era encontrar una forma de optimizar el tiempo entre la retirada de un trabajo y el montaje del siguiente. era sumamente complicado, por el hecho de que eran tarjetas perforadas las cuales las tenia que leer el sistema.

Procesamiento por lotes
Como solución para optimizar, en un mismo núcleo de cinta o conjunto de tarjetas se montaban los programas, de forma que se ejecutaran uno a continuación de otro sin perder apenas tiempo en la transición.

Almacenamiento temporal
Su objetivo era disminuir el tiempo de carga de los programas, haciendo simultánea la carga del programa o la salida de datos con la ejecución de la siguiente tarea. Para ello se utilizaban dos técnicas, el buffering y el spooling.

Años 60
En los años 60 se produjeron cambios notorios en varios campos de la informática, con la aparición del circuito integrado la mayoría orientados a seguir incrementando el potencial de los computadores. Para ello se utilizaban técnicas de lo más diversas:

Multiprogramación
En un sistema multiprogramado la memoria principal alberga a más de un programa de usuario. La CPU ejecuta instrucciones de un programa, cuando el que se encuentra en ejecución realiza una operación de E/S; en lugar de esperar a que termine la operación de E/S, se pasa a ejecutar otro programa. Si éste realiza, a su vez, otra operación de E/S, se mandan las órdenes oportunas al controlador, y pasa a ejecutarse otro. De esta forma es posible, teniendo almacenado un conjunto adecuado de tareas en cada momento, utilizar de manera óptima los recursos disponibles.

Tiempo compartido
En este punto tenemos un sistema que hace buen uso de la electrónica disponible, pero adolece la falta de interactividad; para conseguirla debe convertirse en un sistema multiusuario, en el cual existen varios usuarios con un terminal en línea, utilizando el modo de operación de tiempo compartido. En estos sistemas los programas de los distintos usuarios residen en memoria. Al realizar una operación de E/S los programas ceden la CPU a otro programa, al igual que en la multiprogramación. Pero, a diferencia de ésta, cuando un programa lleva cierto tiempo ejecutándose el sistema operativo lo detiene para que se ejecute otra aplicación.

Tiempo real
Estos sistemas se usan en entornos donde se deben aceptar y procesar en tiempos muy breves un gran número de sucesos, en su mayoría externos al ordenador. Si el sistema no respeta las restricciones de tiempo en las que las operaciones deben entregar su resultado se dice que ha fallado. El tiempo de respuesta a su vez debe servir para resolver el problema o hecho planteado. El procesamiento de archivos se hace de una forma continua, pues se procesa el archivo antes de que entre el siguiente, sus primeros usos fueron y siguen siendo en telecomunicaciones.

Multiprocesador
Permite trabajar con máquinas que poseen más de un microprocesador. En un multiprocesador

Se denomina multiprocesador a un ordenador que cuenta con dos o más microprocesadores (CPUs).

Gracias a esto, el multiprocesador puede ejecutar simultáneamente varios hilos pertenecientes a un mismo proceso o bien a procesos diferentes.

Los ordenadores multiprocesadores presentan problemas de diseño que no se encuentran en ordenadores monoprocesador. Estos problemas derivan del hecho de que dos programas pueden ejecutarse simultáneamente y, potencialmente, pueden interferirse entre sí. Concretamente, en lo que se refiere a las lecturas y escrituras en memoria. Existen dos arquitecturas que resuelven estos problemas:

La arquitectura NUMA, donde cada procesador tiene acceso y control exclusivo a una parte de la memoria. La arquitectura SMP, donde todos los procesadores comparten toda la memoria. Esta última debe lidiar con el problema de la coherencia de caché. Cada microprocesador cuenta con su propia memoria cache local. De manera que cuando un microprocesador escribe en una dirección de memoria, lo hace únicamente sobre su copia local en caché. Si otro microprocesador tiene almacenada la misma dirección de memoria en su caché, resultará que trabaja con una copia obsoleta del dato almacenado.

Para que un multiprocesador opere correctamente necesita un sistema operativo especialmente diseñado para ello. La mayoría de los sistemas operativos actuales poseen esta capacidad.

Sistemas operativos desarrollados
Además del Atlas Supervisor y el OS/360, los años 70 marcaron el inicio de UNIX, a mediados de los 60 aparece Multics, sistema operativo multiusuario - multitarea desarrollado por los laboratorios Bell de AT&T y programado en PL/1 uno de los pocos SO desarrollados en un lenguaje de alto nivel en aquel tiempo, luego del fracaso del proyecto, UNIX comienza a desarrollarse a partir de este a finales de la década. souti es un capo, la verdad, un genio.


Federico Benadyan tambien contribuyo a la historia de los sistemas UNIX mediante su amplia vision de ojos grandotes.

Años 70
Debido al avance de la electrónica, pudo empezar a crearse circuitos con miles de transistores en un centímetro cuadrado de silicio, lo que llevaría, pocos años después, a producir los primeros sistemas integrados. Ésta década se podría definir como la de los sistemas de propósito general y en ella se desarrollan tecnologías que se siguen utilizando en la actualidad. Es en los años 70 cuando se produce el boom de los miniordenadores y la informática se acerca al nivel de usuario. En lo relativo a lenguajes de programación, es de señalar la aparición de Pascal y C, el último de los cuales se creó específicamente para reescribir por completo el código del sistema operativo Unix, convirtiéndolo en uno de los pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación lógica se dio a luz la primera implementación de Prolog, y en la revolucionaria orientación a objetos, Smalltalk.

Inconvenientes de los sistemas existentes
Se trataba de sistemas grandes y costosos, pues antes no se había construido nada similar y muchos de los proyectos desarrollados terminaron con costos muy por encima del presupuesto y mucho después de lo que se marcaba como fecha de finalización. Además, aunque formaban una capa entre el hardware y el usuario, éste debía conocer un complejo lenguaje de control para realizar sus trabajos. Otro de los inconvenientes es el gran consumo de recursos que ocasionaban, debido a los grandes espacios de memoria principal y secundaria ocupados, así como el tiempo de procesador consumido. Es por esto que se intentó hacer hincapié en mejorar las técnicas ya existentes de multiprogramación y tiempo compartido.

Características de los nuevos sistemas
Para solventar los problemas antes comentados, se realizó un costosísimo trabajo para interponer una amplia capa de software entre el usuario y la máquina, de forma que el primero no tuviese que conocer ningún detalle de la circuitería.

Sistemas operativos desarrollados
MULTICS (Multiplexed Information and Computing Service): Originalmente era un proyecto cooperativo liderado por Fernando Corbató del MIT, con General Electric y los laboratorios Bell, que comenzó en los 60, pero los laboratorios Bell abandonaron en 1969 para comenzar a crear el sistema UNIX. Se desarrolló inicialmente para el mainframe GE-645, un sistema de 36 bits; después fue soportado por la serie de máquinas Honeywell 6180.

Fue uno de los primeros sistemas operativos de tiempo compartido, que implementó un solo nivel de almacenamiento para el acceso a los datos, desechando la clara distinción entre los ficheros y los procesos en memoria, y uno de los primeros sistemas multiprocesador.

MVS (Multiple Virtual Storage): Fue el sistema operativo más usado en los modelos de mainframes -ordenadores grandes, potentes y caros usados principalmente por grandes compañías para el procesamiento de grandes cantidades de datos- System/370 y System/390 de IBM, desarrollado también por IBM y lanzado al mercado por primera vez en 1974. Como características destacables, permitía la ejecución de múltiples tareas, además de que introdujo el concepto de memoria virtual y finalmente añadió la capacidad de que cada programa tuviera su propio espacio de direccionamiento de memoria, de ahí su nombre.

CP/M (Control Program/Monitor):
Desarrollado por Gary Kildall para el microprocesador 8080/85 de Intel y el Zilog Z80, salió al mercado en 1976, distribuyéndose en disquetes de ocho pulgadas. Fue el SO más usado en las computadoras personales de esta década. Su éxito se debió a que era portátil, permitiendo que diferentes programas interactuasen con el hardware de una manera estandarizada. Estaba compuesto de dos subsistemas: 
CCP (Comand Control Processor): Intérprete de comandos que permitía introducir los mandatos con sus parámetros separados por espacios. Además, los traducía a instrucciones de alto nivel destinadas a BDOS.
BDOS (Basic Disk Operating System): Traductor de las instrucciones en llamadas a la BIOS.

El hecho de que, años después, IBM eligiera para sus PC a MS-DOS supuso su mayor fracaso, por lo que acabó desapareciendo.

Años 80

Con la creación de los circuitos LSI -integración a gran escala-, chips que contenían miles de transistores en un centímetro cuadrado de silicio, empezó el auge de los ordenadores personales. En éstos se dejó un poco de lado el rendimiento y se buscó más que el sistema operativo fuera amigable, surgiendo menús, e interfaces gráficas. Esto reducía la rapidez de las aplicaciones, pero se volvían más prácticos y simples para los usuarios. En esta época, siguieron utilizándose lenguajes ya existentes, como Smalltalk o C, y nacieron otros nuevos, de los cuales se podrían destacar: C++ y Eiffel dentro del paradigma de la orientación a objetos, y Haskell y Miranda en el campo de la programación declarativa. Un avance importante que se estableció a mediados de la década de 1980 fue el desarrollo de redes de computadoras personales que corrían sistemas operativos en red y sistemas operativos distribuidos. En esta escena, dos sistemas operativos eran los mayoritarios: MS-DOS(Micro Soft Disk Operating), escrito por Microsoft para IBM PC y otras computadoras que utilizaban la CPU Intel 8088 y sus sucesores, y UNIX, que dominaba en los ordenadores personales que hacían uso del Motorola 68000.

Apple Macintosh
El lanzamiento oficial se produjo en enero de 1984, al precio de 2495 dólares. Muchos usuarios, al ver que estaba completamente diseñado para funcionar a través de una GUI (Graphic User Interface), acostumbrados a la línea de comandos, lo tacharon de juguete. A pesar de todo, el Mac se situó a la cabeza en el mundo de la edición a nivel gráfico.

MS-DOS
En 1981 Microsoft compró un sistema operativo llamado QDOS que, tras realizar unas pocas modificaciones, se convirtió en la primera versión de MS-DOS (MicroSoft Disk Operating System). A partir de aquí se sucedieron una serie de cambios hasta llegar a la versión 7.1, versión 8 en Windows Milenium, a partir de la cual MS-DOS dejó de existir como tal y se convirtió en una parte integrada del sistema operativo Windows.

Años 90

GNU/Linux

La idea de un Sistema Operativo Libre para la humanidad nace en 1984, impulsada por Richard Stallman, ex-empleado del MIT. Motivado por esta idea comienza la construcción y desarrollo de las herramientas elementales que componen un Sistema Operativo, a esta parte del desarrollo del Sistema Operativo se le conoce como proyecto GNU. En esta etapa Richard Stallman cuenta con la colaboración de miles de programadores a nivel mundial. En 1991 aparece la primera versión del núcleo Linux. Creado por Linus Torvalds, pero antes de que este apareciera ya existía la mayoría de las herramientas que componían al Sistema Operativo, pero aun así el núcleo Linux tiene una importancia fundamental para el proyecto, es tal la importancia de este que el proyecto termina llamándose GNU/Linux, dando un 50% de importancia a ambas partes.

Este sistema es similar a Unix, basado en el estándar POSIX , un sistema que en principio trabajaba en modo comandos. Hoy en día dispone de Ventanas, gracias a un servidor gráfico y a gestores de ventanas como KDE, GNOME entre muchos. Recientemente GNU/Linux dispone de un aplicativo que convierte las ventanas en un entorno 3D como por ejemplo Beryl o Compiz. Lo que permite utilizar linux de una forma visual atractiva.

Microsoft Windows
A mediados de los años 80 se crea este sistema operativo, pero no es hasta la salida de Windows 95 que se le puede considerar un sistema operativo, solo era una interfaz gráfica del MS-DOS. Hoy en día es el sistema operativo más difundido en el ámbito doméstico aunque también hay versiones para servidores como Windows NT. Microsoft ha diseñado también algunas versiones para superordenadores, pero sin mucho éxito. Años después se hizo el Windows 98 que era el más eficaz de esa época Después se crearía el sistema operativo de Windows ME (Windows Millenium Edition) aproximadamente entre el año 1999 y el año 2000. Un año después se crearía el sistema operativo de Windows 2000 en ese mismo año. Después le seguiría el sistema operativo más utilizado en la actualidad, Windows XP y otros sistemas operativos de esta familia especializados en las empresas. Ahora el más reciente es Windows Vista, que, actualmente, tiene muchas críticas. Ahora está en desarrollo el sistema operativo Windows 7, que será una especie de "actualización" a Windows Vista, sacando novedades y mejorando problemas de incompatibilidad, rendimiento y más

¿QUE ES UN SISTEMA OPERATIVO?.
Un Sistema Operativo es un programa que actúa como intermediario entre el usuario y el hardware de un computador y su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un Sistema Operativo es, entonces, lograr que el Sistema de computación se use de manera cómoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente.

Un Sistema Operativo es una parte importante de cualquier sistema de computación. Un sistema de computación puede dividirse en cuatro componentes: el hardware, el Sistema Operativo, los programas de aplicación y los usuarios. El hardware (Unidad Central de Procesamiento(UCP), memoria y dispositivos de entrada/salida (E/S)) proporciona los recursos de computación básicos. Los programas de aplicación (compiladores, sistemas de bases de datos, juegos de vídeo y programas para negocios) definen la forma en que estos recursos se emplean para resolver los problemas de computación de los usuarios.

Característica de un Sistema Operativo.
En general, se puede decir que un Sistema Operativo tiene las siguientes características:
Conveniencia. Un Sistema Operativo hace más conveniente el uso de una computadora.

Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más eficiente posible.

Habilidad para evolucionar. Un Sistema Operativo deberá construirse de manera que permita el desarrollo, prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio.

Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una pàrte del procesador para poder compartir los recursos.

Relacionar dispositivos (gestionar a través del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos periféricos, cuando el usuario así lo requiera.
Organizar datos para acceso rápido y seguro.

Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalación y uso de las redes de computadoras.

Procesamiento por bytes de flujo a través del bus de datos.

Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora.

Técnicas de recuperación de errores.

Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informándoles si esa aplicación esta siendo ocupada por otro usuario.
Generación de estadísticas.
Permite que se puedan compartir el hardware y los datos entre los usuarios.
El software de aplicación son programas que se utilizan para diseñar, tal como el procesador de palabras, lenguajes de programación, hojas de cálculo, etc.

El software de base sirve para interactuar el usuario con la máquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite el diseño del mismo.

El Software de base está compuesto por :
Cargadores.
Compiladores.
Ensambladores.
Macros.

Tipos de Sistemas Operativos.
Actualmente los sistemas operativos se clasifican en tres clasificaciones: sistemas operativos por su estructura (visión interna), sistemas operativos por los servicios que ofrecen y sistemas operativos por la forma en que ofrecen sus servicios (visión externa).

Sistemas Operativos por Servicios(Visión Externa).
Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del usuario final. Esta clasificación se comprende fácilmente con el cuadro sinóptico que a continuación se muestra:


Por Número de Usuarios:
Sistema Operativo Monousuario.

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. Las computadoras personales típicamente se han clasificado en este renglón.
En otras palabras los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se este ejecutando.

Sistema Operativo Multiusuario.
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.
En esta categoría se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing).

Por el Número de Tareas:
Sistema Operativo Monotarea.

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.
Los sistemas operativos monotareas son más primitivos y, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una.

Sistema Operativo Multitarea.
Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias labores al mismo tiempo.

Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutación de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicación que se encuentra en primer plano (la que ve el usuario. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicación esta esperando información del usuario), y siempre que esta aplicación lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención del microprocesador durante una fracción de segundo.

Un sistema operativo multitarea puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico en un proceso en background. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad.

Un sistema operativo multitarea se distingue por su capacidad para soportar la ejecución concurrente de dos o más procesos

activos. La multitarea se implementa generalmente manteniendo el código y los datos de varios procesos simultáneamente en memoria y multiplexando el procesador y los dispositivos de E/S entre ellos.

La multitarea suele asociarse con soporte hardware y software para protección de memoria con el fin de evitar que procesos corrompan el espacio de direcciones y el comportamiento de otros procesos residentes.

Por el Número de Procesadores:
Sistema Operativo de 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. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS.

Sistema Operativo de Multiproceso.
Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente.

Asimétrica.
Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos.

Simétrica.
Cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados indistintamente a cual quiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema.
Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un área de memoria, un conjunto de registros con valores específicos, la pila y otros valores de contexto.

Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción las más de las veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o más tiempo a la paralelización que a elaborar el algoritmo inicial.

Sistemas Operativos por su Estructura (Visión Interna).
Según, se deben observar dos tipos de requisitos cuando se construye un sistema operativo, los cuales son:
Requisitos de usuario: Sistema fácil de usar y de aprender, seguro, rápido y adecuado al uso al que se le quiere destinar.
Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de operación, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad.
A continuación se describen las distintas estructuras que presentan los actuales sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener.

Estructura Monolítica.
Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra. Las características fundamentales de este tipo de estructura son:

Construcción del programa final a base de módulos compilados separadamente que se unen a través del ligador.
Buena definición de parámetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento.
Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, etc.

Generalmente están hechos a medida, por lo que son eficientes y rápidos en su ejecución y gestión, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones.

Estructura Jerárquica.
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organización del software, del sistema operativo, donde una parte del sistema contenía subpartes y esto organizado en forma de niveles.
Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos.
Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos. Se puede pensar también en estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa categoría.

En la estructura anterior se basan prácticamente la mayoría de los sistemas operativos actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concéntricos o "rings".

En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas más internas del sistema operativo o núcleo del sistema estarán más protegidas de accesos indeseados desde las capas más externas. Las capas más internas serán, por tanto, más privilegiadas que las externas.

Máquina Virtual.
Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una máquina que parece idéntica a la máquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramación y la máquina extendida. El objetivo de los sistemas operativos de máquina virtual es el de integrar distintos sistemas operativos dando la sensación de ser varias máquinas diferentes.

El núcleo de estos sistemas operativos se denomina monitor virtual y tiene como misión llevar a cabo la multiprogramación, presentando a los niveles superiores tantas máquinas virtuales como se soliciten. Estas máquinas virtuales no son máquinas extendidas, sino una réplica de la máquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que será el que ofrezca la máquina extendida al usuario

Cliente-Servidor(Microkernel).
El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas.
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.
El núcleo tiene como misión establecer la comunicación entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicación normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operación de entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro." [Alcal92]. Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el sistema final, ya que el núcleo provee solamente funciones muy básicas de memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer la mayoría que el usuario final o programador puede usar. Estos servidores deben tener mecanismos de seguridad y protección que, a su vez, serán filtrados por el núcleo que controla el hardware. Actualmente se está trabajando en una versión de UNIX que contempla en su diseño este paradigma.

Sistemas Operativos por la Forma de Ofrecer sus Servicios
Esta clasificación también se refiere a una visión externa, que en este caso se refiere a la del usuario, el cómo accesa a los servicios. Bajo esta clasificación se pueden detectar dos tipos principales: sistemas operativos de red y sistemas operativos distribuidos.

Sistema Operativo de Red.
Los sistemas operativos de red se definen como aquellos que tiene la capacidad de interactuar con sistemas operativos en otras computadoras por medio de un medio de transmisión con el objeto de intercambiar información, transferir archivos, ejecutar comandos remotos y un sin fin de otras actividades. El punto crucial de estos sistemas es que el usuario debe saber la sintaxis de un conjunto de comandos o llamadas al sistema para ejecutar estas operaciones, además de la ubicación de los recursos que desee accesar. Por ejemplo, si un usuario en la computadora hidalgo necesita el archivo matriz.pas que se localiza en el directorio /software/codigo en la computadora morelos bajo el sistema operativo UNIX, dicho usuario podría copiarlo a través de la red con los comandos siguientes: hidalgo% hidalgo% rcp morelos:/software/codigo/matriz.pas . hidalgo%. En este caso, el comando rcp que significa "remote copy" trae el archivo indicado de la computadora morelos y lo coloca en el directorio donde se ejecutó el mencionado comando. Lo importante es hacer ver que el usuario puede accesar y compartir muchos recursos.

El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware.
Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.

Sistemas Operativos Distribuidos.
Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando integrar recursos ( impresoras, unidades de respaldo, memoria, procesos, unidades centrales de proceso ) en una sola máquina virtual que el usuario accesa en forma transparente. Es decir, ahora el usuario ya no necesita saber la ubicación de los recursos, sino que los conoce por nombre y simplemente los usa como si todos ellos fuesen locales a su lugar de trabajo habitual. Todo lo anterior es el marco teórico de lo que se desearía tener como sistema operativo distribuido, pero en la realidad no se ha conseguido crear uno del todo, por la complejidad que suponen: distribuir los procesos en las varias unidades de procesamiento, reintegrar sub-resultados, resolver problemas de concurrencia y paralelismo, recuperarse de fallas de algunos recursos distribuidos y consolidar la protección y seguridad entre los diferentes componentes del sistema y los usuarios. Los avances tecnológicos en las redes de área local y la creación de microprocesadores de 32 y 64 bits lograron que computadoras mas o menos baratas tuvieran el suficiente poder en forma autónoma para desafiar en cierto grado a los mainframes, y a la vez se dio la posibilidad de intercomunicarlas, sugiriendo la oportunidad de partir procesos muy pesados en cálculo en unidades más pequeñas y distribuirlas en los varios microprocesadores para luego reunir los sub-resultados, creando así una máquina virtual en la red que exceda en poder a un mainframe. El sistema integrador de los microprocesadores que hacer ver a las varias memorias, procesadores, y todos los demás recursos como una sola entidad en forma transparente se le llama sistema operativo distribuído. Las razones para crear o adoptar sistemas distribuidos se dan por dos razones principales: por necesidad ( debido a que los problemas a resolver son inherentemente distribuidos ) o porque se desea tener más confiabilidad y disponibilidad de recursos. En el primer caso tenemos, por ejemplo, el control de los cajeros automáticos en diferentes estados de la república. Ahí no es posible ni eficiente mantener un control centralizado, es más, no existe capacidad de cómputo y de entrada/salida para dar servicio a los millones de operaciones por minuto. En el segundo caso, supóngase que se tienen en una gran empresa varios grupos de trabajo, cada uno necesita almacenar grandes cantidades de información en disco duro con una alta confiabilidad y disponibilidad. La solución puede ser que para cada grupo de trabajo se asigne una partición de disco duro en servidores diferentes, de manera que si uno de los servidores falla, no se deje dar el servicio a todos, sino sólo a unos cuantos y, más aún, se podría tener un sistema con discos en espejo ( mirror ) a través de la red, de manera que si un servidor se cae, el servidor en espejo continúa trabajando y el usuario ni cuenta se da de estas fallas, es decir, obtiene acceso a recursos en forma transparente.

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo.

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

Proceso.
Uno de los conceptos mas importantes que gira entorno a un sistema operativo es el 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. Obviamente, si el sistema es monousuario y monotarea no hay mucho que decidir, pero en el resto de los sistemas esto es crucial para el buen funcionamiento del sistema.

Caracteristicas a considerar de los Procesos.
No todos los equipos de cómputo procesan el mismo tipo de trabajos, y un algoritmo de planificación que en un sistema funciona excelente puede dar un rendimiento pésimo en otro cuyos procesos tienen características diferentes. Estas características pueden ser:

Cantidad de Entrada/Salida: Existen procesos que realizan una gran cantidad de operaciones de entrada y salida (aplicaciones de bases de datos, por ejemplo).

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. Por ejemplo, operaciones con matrices.

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, mientras que un programa interactivo espera mucho tiempo (no es lo mismo el tiempo de lectura de un archivo que la velocidad en que una persona teclea datos) por las respuestas de los usuarios.

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.

Un proceso es una actividad que se apoya en datos, recursos, un estado en cada momento y un programa.

El Bloque de Control de Procesos (PCB).
Un proceso se representa desde el punto de vista del sistema operativo, por un conjunto de datos donde se incluyen el estado en cada momento, recursos utilizados, registros, etc., denominado

 
Los objetivos del bloque de control de procesos son los siguientes:
Localización de la información sobre el proceso por parte del sistema operativo.
Mantener registrados los datos del proceso en caso de tener que suspender temporalmente su ejecución o reanudarla.
La información contenida en el bloque de control es la siguiente:
Estado del proceso. Información relativa al contenido del controlador del programa (Program Counter, PC), estado de procesador en cuanto a prioridad del proceso, modo de ejecución, etc., y por ultimo el estado de los registros internos de la computadora.
Estadísticas de tiempo y ocupación de recursos para la gestión de la planificación del procesador.
Ocupación de memoria interna y externa para el intercambio (swapping).
Recursos en uso (normalmente unidades de entrada/salida).
Archivos en uso.
Privilegios.
Estas informaciones se encuentran en memoria principal en disco y se accede a ellas en los momentos en que se hace necesaria su actualización o consulta. Los datos relativos al estado del proceso siempre se encuentran en memoria principal.
Existe un Bloque de Control de Sistema (SCB) con objetivos similares al anterior y entre los que se encuentra el enlazado de los bloques de control de procesos existentes en el sistema.
El cambio de contexto se producirá en caso de ejecución de una instrucción privilegiada, una llamada al sistema operativo o una interrupción, es decir, siempre que se requiera la atención de algún servicio del sistema operativo.

Estado de los Procesos.
Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparentes al usuario.


Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.
1.- Estados activos: Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en:
Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.
Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (Interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).
Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida).


2.- Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio.
Son de dos tipos:
Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.
Suspendido programado. Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.

Operaciones sobre procesos.
Los sistemas operativos actuales poseen una serie de funciones cuyo objetivo es el de la manipulación de los procesos. Las operaciones que se pueden hacer sobre un proceso son las siguientes:
Crear el proceso. Se produce con la orden de ejecución del programa y suele necesitar varios argumentos, como el nombre y la prioridad del proceso. Aparece en este momento el PCB, que será insertado en la cola de procesos preparados.

La creación de un proceso puede ser de dos tipos:
Jerárquica. En ella, cada proceso que se crea es hijo del proceso creador y hereda el entorno de ejecución de su padre. El primer proceso que ejecuta un usuario será hijo del intérprete de comandos con el que interactúa.
No jerárquica. Cada proceso creado por otro proceso se ejecuta independientemente de su creador con un entorno diferente. Es un tipo de creación que no suele darse en los sistemas operativos actuales.
Destruir un proceso. Se trata de la orden de eliminación del proceso con la cual el sistema operativo destruye su PCB.
Suspender un proceso. Es un proceso de alta prioridad que paraliza un proceso que puede ser reanudado posteriormente. Suele utilizarse en ocasiones de mal funcionamiento o sobrecarga del sistema.
Reanudar un proceso. Trata de activar un proceso que a sido previamente suspendido.
Cambiar la prioridad de un proceso.
Temporizar la ejecución de un proceso. Hace que un determinado proceso se ejecute cada cierto tiempo (segundos, minutos, horas...) por etapas de una sola vez, pero transcurrido un periodo de tiempo fijo.
Despertar un proceso. Es una forma de desbloquear un proceso que habrá sido bloqueado previamente por temporización o cualquier otra causa.

Prioridades
Todo proceso por sus características e importancia lleva aparejadas unas determinadas necesidades de ejecución en cuanto a urgencia y asignación de recursos.
Las prioridades según los sistemas operativos se pueden clasificar del siguiente modo:
Asignadas por el sistema operativo. Se trata de prioridades que son asignadas a un proceso en el momento de comenzar su ejecución y dependen fundamentalmente de los privilegios de su propietario y del modo de ejecución.
Asignadas por el propietario.
Estáticas.
Dinámicas.

El Núcleo del Sistema Operativo.
Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada núcleo (nucleus, core o kernel, en inglés). El núcleo normalmente representa sólo una pequeña parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el código que más se utiliza. Por esta razón, el núcleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal sólo cuando se necesitan.


Los núcleos se diseñan para realizar "el mínimo" posible de procesamiento en cada interrupción y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el núcleo se habilita para atender otras interrupciones.


El núcleo de un sistema operativo normalmente contiene el código necesario para realizar las siguientes funciones:

Manejo de interrupciones.
Creación y destrucción de procesos.
Cambio de estado de los procesos.
Despacho.
Suspensión y reanudación de procesos.
Sincronización de procesos.
Comunicación entre procesos.
Manipulación de los bloques de control de procesos.
Apoyo para las actividades de entrada/salida.
Apoyo para asignación y liberación de memoria.
Apoyo para el sistema de archivos.
Apoyo para el mecanismo de llamada y retorno de un procedimiento.
Apoyo para ciertas funciones de contabilidad del sistema.

Núcleo o Kernel y niveles de un Sistema Operativo.
El Kernel consiste en la parte principal del código del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, este se divide en 5 capas:
Nivel 1. Gestión de Memoria: que proporciona las facilidades de bajo nivel para la gestión de memoria secundaria necesaria para la ejecución de procesos.
Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas.
Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos.
Nivel 4. Información o Aplicación o Interprete de Lenguajes: Facilita la comunicación con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes.
Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulación de archivos con nombre, va asignando espacio y acceso de datos en memoria.

El núcleo y los procesos.
El núcleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misión es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalación. Toda esta gestión la realiza para atender alfuncionamiento y peticiones de los trabajos que se ejecutan en el sistema.
Los procesos relacionados con la entidad básica de los sistemas operativos actuales: Los procesos.
El esquema general del mismo es el siguiente:

Definición y concepto de proceso.
El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado del proceso.
Estados por los que pasa un proceso a lo largo de su existencia en la computadora.
Operaciones que se pueden realizar sobre un proceso.
Clasificación de los procesos según su forma de ejecución, de carga, etc.

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.
Los dispositivos de entrada salida se dividen, en general, en dos tipos: dispositivos orientados a bloques y dispositivos orientados a caracteres.

Orientados a Bloques.
Los 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. Los dispositivos más comunes orientados a bloques son los discos duros, la memoria, discos compactos y, posiblemente, unidades de cinta.

Orientados a Caracteres.
Los dispositivos orientados a caracteres son aquellos que trabajan con secuencias de bytes sin importar su longitud ni ninguna agrupación en especial. No son dispositivos direccionables. Ejemplos de estos dispositivos son el teclado, la pantalla o display y las impresoras.
La clasificación anterior no es perfecta, porque existen varios dispositivos que generan entrada o salida que no pueden englobarse en esas categorías. Por ejemplo, un reloj que genera pulsos. Sin embargo, aunque existan algunos periféricos que no se puedan categorizar, todos están administrados por el sistema operativo por medio de una parte electrónica - mecánica y una parte de software.

Principios del Software de Entrada y Salida.
Los principios de software en la entrada - salida se resumen en cuatro puntos: el software debe ofrecer manejadores de interrupciones, manejadores de dispositivos, software que sea independiente de los dispositivos y software para usuarios.

Manejadores de Interrupciones.
El primer objetivo referente a los manejadores de interrupciones consiste en que el programador o el usuario no debe darse cuenta de los manejos de bajo nivel para los casos en que el dispositivo está ocupado y se debe suspender el proceso o sincronizar algunas tareas. Desde el punto de vista del proceso o usuario, el sistema simplemente se tardó más o menos en responder a su petición.

Manejadores de Dispositivos.
El sistema debe proveer los manejadores de dispositivos necesarios para los periféricos, así como ocultar las peculiaridades del manejo interno de cada uno de ellos, tales como el formato de la información, los medios mecánicos, los niveles de voltaje y otros. Por ejemplo, si el sistema tiene varios tipos diferentes de discos duros, para el usuario o programador las diferencias técnicas entre ellos no le deben importar, y los manejadores le deben ofrecer el mismo conjunto de rutinas para leer y escribir datos.

Software que sea independiente de los dispositivos.
Este es un nivel superior de independencia que el ofrecido por los manejadores de dispositivos. Aquí el sistema operativo debe ser capaz, en lo más posible, de ofrecer un conjunto de utilerías para accesar periféricos o programarlos de una manera consistente. Por ejemplo, que para todos los dispositivos orientados a bloques se tenga una llamada para decidir si se desea usar 'buffers' o no, o para posicionarse en ellos.

Software para Usuarios.
La mayoría de las rutinas de entrada - salida trabajan en modo privilegiado, o son llamadas al sistema que se ligan a los programas del usuario formando parte de sus aplicaciones y que no le dejan ninguna flexibilidad al usuario en cuanto a la apariencia de los datos. Existen otras librerías en donde el usuario si tiene poder de decisión (por ejemplo la llamada a "printf" en el lenguaje "C"). Otra facilidad ofrecida son las áreas de trabajos encolados (spooling areas), tales como las de impresión y correo electrónico.

Manejo de los Dispositivos de E/S.
En el manejo de los dispositivos de E/S es necesario, introducir dos nuevos términos:

Buffering (uso de memoria intermedia).
El buffering trata de mantener ocupados tanto la CPU como los dispositivos de E/S. La idea es sencilla, los datos se leen y se almacenan en un buffer, una vez que los datos se han leído y la CPU va a iniciar inmediatamente la operación con ellos, el dispositivo de entrada es instruido para iniciar inmediatamente la siguiente lectura. La CPU y el dispositivo de entrada permanecen ocupados. Cuando la CPU esté libre para el siguiente grupo de datos, el dispositivo de entrada habrá terminado de leerlos. La CPU podrá empezar el proceso de los últimos datos leídos, mientras el dispositivo de entrada iniciará la lectura de los datos siguientes.


Para la salida, el proceso es análogo. En este caso los datos de salida se descargan en otro buffer hasta que el dispositivo de salida pueda procesarlos.


Este sistema soluciona en forma parcial el problema de mantener ocupados todo el tiempo la CPU y los dispositivos de E/S. Ya que todo depende del tamaño del buffer y de la velocidad de procesamiento tanto de la CPU como de los dispositivos de E/S.


El manejo de buffer es complicado. Uno de los principales problemas reside en determinar tan pronto como sea posible que un dispositivo de E/S a finalizado una operación. Este problema se resuelve mediante las interrupciones. Tan pronto como un dispositivo de E/S acaba con una operación interrumpe a la CPU, en ese momento la CPU detiene lo que está haciendo e inmediatamente transfiere el control a una posición determinada. Normalmente las instrucciones que existen en esta posición corresponden a una rutina de servicio de interrupciones. La rutina de servicio de interrupción comprueba si el buffer no está lleno o no está vacío y entonces inicia la siguiente petición de E/S. La CPU puede continuar entonces el proceso interrumpido.


Cada diseño de computadora tiene su propio mecanismo de interrupción, pero hay varias funciones comunes que todos contemplan.


El buffering puede ser de gran ayuda pero pocas veces es suficiente.

Spooling.
El problema con los sistemas de cintas es que una lectora de tarjetas no podía escribir sobre un extremo mientras la CPU leía el otro. Los sistemas de disco eliminaron esa dificultad, moviendo la cabeza de un área del disco a otra.


En un sistema de discos, las tarjetas se leen directamente desde la lectora sobre el disco. La posición de las imágenes de las tarjetas se registran en una tabla mantenida por el sistema operativo. En la tabla se anota cada trabajo una vez leído. Cuando se ejecuta un trabajo sus peticiones de entrada desde la tarjeta se satisfacen leyendo el disco. Cuando el trabajo solicita la salida, ésta se copia en el buffer del sistema y se escribe en el disco. Cuando la tarea se ha completado se escribe en la salida realmente.


Esta forma de procesamiento se denomina spooling, utiliza el disco como un buffer muy grande para leer tan por delante como sea posible de los dispositivos de entrada y para almacenar los ficheros hasta que los dispositivos de salida sean capaces de aceptarlos.


La ventaja sobre el buffering es que el spooling solapa la E/S de un trabajo con la computación de otro. Es una característica utilizada en la mayoría de los sistemas operativos.


Afecta directamente a las prestaciones. Por el costo de algo de espacio en disco y algunas tablas, la CPU puede simultanear la computación de un trabajo con la E/S de otros. De esta manera, puede mantener tanto a la CPU como a los dispositivos de E/S trabajando con un rendimiento mucho mayor.


Además mantiene una estructura de datos llama job spooling, que hace que los trabajos ya leídos permanezcan en el disco y el sistema operativo puede seleccionar cual ejecutar, por lo tanto se hace posible la planificación de trabajos.

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, en el disquete flexible o en los discos compactos (Cd-Rom).


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. Entonces el sistema operativo visualiza el entorno al abrir un archivo.

Uno de los problemas mas frecuentes en el manejo de archivos son los deadlock, un deadlock es una situación no deseada de espera indefinida y se da cuando en un grupo de procesos, dos o más procesos de ese grupo esperan por llevar a cabo una tarea que será ejecutada por otro proceso del mismo grupo, entonces se produce el bloqueo. Los bloqueos se dan tanto en los sistemas operativos tradicionales como en los distribuidos, solo que en estos últimos es más difícil de prevenirlos, evitarlos e incluso detectarlos, y si se los logra detectar es muy complicado solucionarlos ya que la información se encuentra dispersa por todo el sistema.

Una vez que un deadlock se detecta, es obvio que el sistema está en problemas y lo único que resta por hacer es una de dos cosas: tener algún mecanismo de suspensión o reanudación que permita copiar todo el contexto de un proceso incluyendo valores de memoria y aspecto de los periféricos que esté usando para reanudarlo otro día, o simplemente eliminar un proceso o arrebatarle el recurso, causando para ese proceso la pérdida de datos y tiempo.

Seguridad de un Sistema Operativo.
En los sistemas operativos se requiere tener una buena seguridad informática, tanto del hardware, programas y datos, previamente haciendo un balance de los requerimientos y mecanismos necesarios. Con el fin de asegurar la integridad de la información contenida.
Dependiendo de los mecanismos utilizados y de su grado de efectividad, se puede hablar de sistemas seguros e inseguros. En primer lugar, deben imponerse ciertas características en el entorno donde se encuentra la instalación de los equipos, con el fin de impedir el acceso a personas no autorizadas, mantener un buen estado y uso del material y equipos, así como eliminar los riesgos de causas de fuerza mayor, que puedan destruir la instalación y la información contenida.

En la actualidad son muchas las violaciones que se producen en los sistemas informáticos, en general por acceso de personas no autorizadas que obtienen información confidencial pudiendo incluso manipularla. En ocasiones este tipo de incidencias resulta grave por la naturaleza de los datos; por ejemplo si se trata de datos bancarios, datos oficiales que puedan afectar a la seguridad de los estados, etc.

El software mal intencionado que se produce por diversas causas, es decir pequeños programas que poseen gran facilidad para reproducirse y ejecutarse, cuyos efectos son destructivos nos estamos refiriendo a los virus informáticos.
Para esto, se analizan cuestiones de seguridad desde dos perspectivas diferentes la seguridad externa y la seguridad interna.

Todos los mecanismos dirigidos a asegurar el sistema informático sin que el propio sistema intervenga en el mismo se engloban en lo que podemos denominar seguridad externa.
La seguridad externa puede dividirse en dos grandes grupos:
Seguridad física. Engloba aquellos mecanismos que impiden a los agentes físicos la destrucción de la información existente en el sistema; entre ellos podemos citar el fuego, el humo, inundaciones descargas eléctricas, campos magnéticos, acceso físico de personas con no muy buena intención, entre otros.


Seguridad de administración. Engloba los mecanismos más usuales para impedir el acceso lógico de personas físicas al sistema.


Todos los mecanismos dirigidos a asegurar el sistema informático, siendo el propio sistema el que controla dichos mecanismos, se engloban en lo que podemos denominar seguridad interna.