martes, 11 de noviembre de 2014

Elementos de un ordenador

Software

El término anglosajón "software" se traduce al español como "logitrónica", y se define como el conjunto de instrucciones que las computadoras interpretan para realizar procesos predefinidos sobre datos. Sin la logitrónica, la computadora sería un conjunto de semiconductores y metales preciosos sin uso coherente más allá de pisapapeles.

Antes de continuar es necesario hacer una pequeña semblanza de cómo funciona la relación software - hardware, ya que una computadora cuenta con una gran cantidad de dispositivos con distintas capacidades de desempeño, razón por la cual es importante considerar el flujo de las instrucciones y los datos dentro de los procesos internos del ordenador.

Podemos ilustrar los puntos de flujo de la información dentro de la computadora en una pirámide, en donde la punta es la parte en donde el flujo es más rápido y la base, su contraparte. En la punta estaría el microprocesador, que invariablemente es el punto más veloz, y en el camino hacia la base podríamos ir mencionando los dispositivos conforme vaya decreciendo la velocidad a la que puede transmitir y recibir información, quedando en términos generales como sigue:
  • Microprocesador
  • Memoria Caché N1
  • Memoria Caché N2
  • Memoria Principal (RAM / ROM)
  • Disco Duro
  • Unidad de disquete
  • Unidad de cinta 
  • Usuario 
Algo curioso acerca de esta pirámide es que la mayoría de los informáticos, e inclusive algunos usuarios, la manejan de manera natural, siendo comunes expresiones como "Bájalo a disco", "Bájalo a respaldo", "Cárgalo en memoria", etc. 

Una vez documentada esta disposición, se puede vislumbrar el camino que deben de seguir las instrucciones y los datos para ser procesados en el microprocesador y observar que estas instrucciones invariablemente deben de estar almacenadas en memoria de alta velocidad para ser procesadas, ya sea en caché, RAM o ROM, debido a que el procesador requiere que la información esté disponible para poder procesarla. 
Al cargar los programas en la memoria, el microprocesador comenzará a interpretar las instrucciones y los datos, provocando que la computadora actuara como si recibiera una educación instantánea; de pronto "sabe" cómo analizar, reaccionar, pensar y operar.

En una definición más amplia, la logitrónica es un conjunto de procedimientos y rutinas asociados con la operación de un sistema de computo, que le instruyen los pasos a seguir, así como la lógica de operación y reacción a evaluaciones matemáticas simples, distinguiéndose de los componentes físicos llamados mecatrónica (hardware) en que carecen de materia física; son ideas, son intangibles.

Este concepto de instruir una máquina fue maquinado por una brillante Dama llamada Ada Augusta Byron King, Duquesa de Lovelace, también llamada "La madre de la Logitrónica", que en 1843, siendo discípula de Charles Babbage, le da la idea de que las tarjetas perforadas de Jackard pueden adaptarse de manera que propiciaran que el motor de Babbage repitiera ciertas operaciones, creando con este detalle la idea fundamental de la logitrónica, repetir de manera análoga procedimientos concretos siguiendo un conjunto de instrucciones específicas. Estas instrucciones y procedimientos derivan del análisis minucioso de situaciones del mundo real que se plasman en un "instructivo" de pasos a seguir para obtener un resultado específico, conocido como algoritmo, palabra que deriva del apellido de la primera persona que hizo una explicación exhaustiva paso a paso, en el año 830, de cómo resolver un problema aritmético, el Árabe Muhammad ibn-Musa Al-Khowarizmi. Sin embargo, la logitrónica puede ser lineal, como en estos casos, pero todavía dista del mundo real, ya que lo único aparentemente lineal en el mundo análogo en el que vivimos es el tiempo, razón por la cual es necesario construir diversos algoritmos para realizar una tarea simple en la realidad física.

Ahora, a la razón de estas palabras, el concepto de logitrónica se reduce a un conjunto de algoritmos para realizar una tarea específica, sin importar de qué se trate, ya sea la creación de un documento, el análisis de datos o la reproducción de un virus, toda actividad es susceptible de ser analizada y discernida en procesos más simples, incluso lineales, sin importar su complejidad, ya que esto es sólo cuestión de tiempo y por ende, de paciencia, siendo esta la razón por la cual no existe la logitrónica perfecta, provocando que las computadoras lleguen a "trabarse" en un momento dado debido a un error de programación que invariablemente procede de un error de percepción y análisis.

A la luz de lo expuesto, la logitrónica, una vez codificada en instrucciones que el microprocesador pueda interpretar, es capaz de realizar cualquier tarea, desde funcionar como una irrelevante máquina de escribir hasta realizar el análisis más complejo de datos, simulando situaciones del mundo real incorporando inclusive reacciones "naturales" de materiales enfrentando distintos escenarios.
Conforme la logitrónica formal avanza, esta se va haciendo más "amigable", más fácil de usar, mientras que la logitrónica informal se va haciendo más difícil de detectar y destruir, entendiendo con esto que la logitrónica formal es el estudio y aplicación productivo de los algoritmos, mientras que la informal, por el contrario, busca el daño, e inclusive la destrucción de la logitrónica formal, como todo en el universo, el equilibrio, la dualidad.

Algunos ejemplos de la logitrónica formal son los procesadores de texto, hojas de cálculo electrónicas, motores de bases de datos, etcétera; mientras que para la informal, existen los virus informáticos, rompeclaves, husmeadores, etcétera.
La logitrónica formal se divide fundamentalmente en 4 categorías que son: Sistemas Operativos, Lenguajes de Programación, Aplicaciones de uso general, y librerías, mientras que la informal se puede dividir en: Virus y Husmeadores.

Hardware

A lo largo de la historia, de una u otra forma, se ha definido a una computadora como una máquina que procesa datos, sin embargo, este procesamiento requiere de una variedad de aditamentos de soporte y sólo uno encargado propiamente del procesamiento de todo cuanto existe en y entre estos agregados de auxilio.

Toda esta majestuosa orquesta de equilibrios hoy en día está al alcance de una tecla o un clic, que a voluntad es manejada por una sencilla idea que dispara un impulso nervioso que viaja hasta la mano, en donde se convierte en energía mecánica y activa un interruptor, enviando a su vez una leve señal eléctrica a un controlador de entrada, que avisa al procesador que "algo" pasó y que requiere de su atención. El procesador interpreta esta señal por su origen y decide qué hacer con ella, a dónde enviarla; en esto lo ayuda un programa, una secuencia de instrucciones que invariablemente está almacenado en algún lugar de la memoria, ya sea del BIOS en la tarjeta madre o la memoria principal. Este programa ayuda al procesador ofreciéndole la interpretación a detalle de lo que sucedió y lo que recibió. En el caso de un teclazo, este impulso eléctrico, ahora interpretado, se convierte numéricamente a una representación correspondiente en letra, color y posición, para ser enviado a la memoria de video, en donde el controlador de video se encarga de presentarlo en pantalla... resulta fascinante pensar que todo esto puede ocurrir en una millonésima de segundo o menos y que es uno de los procesos más elementales de la computadora, ya que cuenta con muchos otros que crecen en complejidad conforme avanza la tecnología.
No lejos de este señorial enredo, están las primeras computadoras, los primeros equipos ordenadores que, si bien contaban con todo lo necesario para procesar la información, la mayoría de los aditamentos necesarios para su operación completa estaban fuera del equipo en sí. Bajo esta afirmación, se puede fortalecer la idea de que aquellos primeros ordenadores de la historia, que llenaban habitaciones completas, tenían miles de tubos de vacío o bulbos, y unos cuantos kilómetros de cable, no eran más que el procesador, eso que ahora millones de veces más potente es más pequeño que una uña.

Ha sido un viaje muy corto en tiempo, y muy largo en tecnología, aunque en realidad muchas de las ideas "innovadoras" sean falsas imágenes de un reciente invento. Ejemplos hay muchos en la historia; ya en la década de 1970 hubo propuestas de conectar una cámara a una computadora, igualmente ambientación de fiestas con sonidos sintéticos producidos por aquella Altair 8800. Gran parte de estos avances no son creación de famosos ingenieros y científicos de grandes empresas renombradas, sino de simples aficionados.
Al paso del tiempo, y con la evolución propia de la tecnología, las computadoras han ido sofisticándose al grado de ser tan perfectas que los materiales están dejando de ser amistosos, sin embargo, esta situación orilló la creación de módulos, segmentos de la computadora especializados en tareas específicas, que crearon una nueva familia de procesadores de objeto específico, tales como los de video, sonido, red, etc., y cada uno de ellos tiene su historia.

Básicamente, una computadora procesa los datos que se le suministran, para lo cual debe disponer de recursos para almacenar la información mientras ésta es leída y procesada, así como para almacenar temporalmente el resultado del procedimiento, esto es, memoria.

Asimismo, el ordenador requiere de dispositivos que permitan tanto la adquisición y/o introducción de datos, y la presentación al usuario, en todo momento, o a demanda, de actividad en proceso y la emisión en medios portables, del resultado del proceso.

Estos últimos dispositivos reciben el nombre de periféricos. Esquemáticamente hablando, una computadora se compone de:

Unidad de Entrada: Permite la introducción de información en la computadora, existen dos tipos de dispositivos, aquellos que convierten los datos en un formato capaz de ser interpretado por la computadora, como lo es el teclado y los que permiten su entrada directa como el digitalizador de imágenes o escáner, lectores de tarjetas o códigos de barras o la pantalla táctil.

Unidad de Almacenamiento: es un dispositivo donde se almacenan los datos y los programas para procesarlos. Existen dos tipos: Memoria Principal*, constituida por circuitos integrados y que a su vez se subdivide en RAM y ROM; y la Memoria Secundaria, donde se almacenan otros datos que no tienen cabida en la principal, la constituyen los Discos duros, CD-ROM, disquetes, Unidades de cinta.

Unidad Aritmético/Lógica*: Es la parte encargada de procesar los datos, se conoce también como ALU (Arithmetic- Logic Unit). Las operaciones que realiza son de tipo aritmético: suma, resta, multiplicación y división; y de tipo lógico: igual, mayor que o menor que.

Unidad de Control*: Dirige la ejecución del programa y controla tanto el movimiento entre memoria y ALU, como las señales que circulan entre la CPU y los Periféricos.

Unidad de Salida: Presentan al usuario los datos ya elaborados que se encuentran en la memoria de la computadora, los más habituales son la pantalla y la impresora.

La Unidad de Control con la Unidad Aritmético/Lógica y la Memoria Principal forman la Unidad Central de Procesos (CPU), o Microprocesador*. Las Unidades de Entrada y de Salida son los denominados Periféricos.

Sistema operativo

El sistema operativo es el gestor y organizador de todas las actividades que realiza la computadora, así como el intérprete y traductor de primer orden entre el humano, generalmente referido como usuario, y la computadora, esto es, un programa cuya principal función consiste en abstraer toda la funcionalidad de una computadora, en unos cuantos comandos e inclusive interfaces de fácil uso y aprendizaje para las personas comunes.

Aunque hoy en día el sistema operativo es una parte esencial de las computadoras, en un principio esto no existía; en las computadoras mecánicas resulta entendible, sin embargo, con la aparición de las computadoras de primera generación las instrucciones que debía de ejecutar la computadora eran provistas a través de enormes paneles de conectores que por medio de cables y enchufes, se cerraban o abrían circuitos para dar a la computadora las instrucciones que debía realizar.

Dado que las computadoras en sí eran herramientas de uso general que había que programar, el camino más evidente y lógico fue integrar un lenguaje de programación que al arrancar la máquina estuviera listo para recibir instrucciones. Esto es el equivalente al sistema operativo en las últimas computadoras de la primera generación y aquellas primeras de la segunda. Las había con BASIC y FORTRAN. Algunas empresas comenzaron a comercializar sus equipos con entornos que permitían administrar algunas funciones de sus
equipos e inclusive cargar y ejecutar programas desarrollados en un lenguaje cuyo compilador fue desarrollado específicamente para esa máquina y ese entorno operativo.

Los sistemas operativos pueden ser agrupados conforme a su funcionalidad, quedando en sistemas operativos para supercomputadoras, granjas de texturizado, marcos centrales, servidores, estaciones de trabajo, computadoras personales, computadoras de mano, sistemas de tiempo real y embebidos.
Dentro de las funciones del sistema operativo, se encuentra la gestión de las actividades de intercambio de datos entre la memoria central y la externa, determinando las operaciones elementales que estarán a disposición del usuario, así como de las aplicaciones que ejecute. Igualmente se encarga de administrar los recursos del sistema para su óptimo desempeño.

Una vez que la computadora ha puesto en marcha y después de que el BIOS haya realizado la verificación y, en su caso, la configuración del sistema, cede el control del equipo al sistema operativo, mismo que se encontrará en ejecución durante todo el tiempo que la computadora permanezca en operación, tiempo durante el cual tiene 4 labores principales que son:
  • Proporcionar ya sea una interfaz de línea de comando o una interfaz gráfica al usuario, para que este último se pueda comunicar con la computadora.
  • Administrar los dispositivos mecatrónicos (hardware) que estén conectados al ordenador, tales como memoria, puertos, monitor, discos, etcétera.
  • Administrar y mantener los sistemas de archivos de disco, así como proveer al usuario con las herramientas para administrar manualmente estos archivos y monitorear el estado general del equipo.
  • Apoyar a otros programas a través de servicios de administración de recursos y archivos.
Un sistema operativo se integra con dos componentes esenciales que son: El núcleo (kernel) y el entorno (Shell).

El núcleo se encarga de las funciones centrales de gestión del equipo, y por lo regular no está disponible para el usuario regular, ya que esta parte del sistema operativo opera exclusivamente a nivel máquina, administrando y poniendo a disposición los recursos, a las aplicaciones que el usuario esté ejecutando

Al contrario del núcleo, el entorno, como su nombre lo dice, es el ambiente en el cual trabaja el usuario y es el que ofrece la interfaz de comunicación entre el usuario y la computadora, ya sea en modo texto, también llamado línea de comando, o gráfico, también conocido como GUI que son las siglas de Interfaz Gráfica de Usuario (Graphic User Interface), o WIMP que son las siglas para Ventanas, Iconos, Menúes y Punteros (Windows Icons Menus and Pointers). 
Todos los sistemas operativos de entorno gráfico están basados WIMP .
El primer concepto de un sistema basado en ventanas fue creado para la computadora Xerox Star 8010 en 1981, y que fuera utilizada más adelante en 1984 por Apple para la creación del sistema operativo para sus computadoras Macintosh, el MacOS y por Microsoft, en 1985, para su integrador Windows, que eventualmente se convertiría en un sistema operativo y en 1990 por IBM para su OS/2. Eventualmente todos los sistemas operativos se tornaron WIMP, o al menos intentaron hacerlo, como fue el caso de X Windows, que no ofrecía menúes ni botones ni barras de título, funciones que fueron agregadas posteriormente en otras implementaciones para Unix.

Conforme fueron evolucionando los equipos, también evolucionaron los sistemas operativos para dar cabida a las nuevas características de los procesadores, así como satisfacer solicitudes de los usuarios, creando categorías para los sistemas operativos.

Sistemas Operativos Multitarea. Sistemas Operativos Multiusuario.

En un sistema operativo multiusuario es una evolución de uno multitarea, superándolo en la capacidad de poner los recursos del equipo a disposición de más de un usuario simultáneo. Unix es el sistema operativo multiusuario más utilizado, debido a que Unix fue originalmente diseñado en una época en la cual las computadoras eran muy caras y se explotaban a través de la utilización de múltiples usuarios conectados a un servidor central o mainframe utilizando terminales tontas.

Con el problema del cambio de siglo, este mismo esquema se utilizó para dar soporte práctico a equipos de cómputo que no soportaban el cambio de siglo y las empresas no contaban con presupuesto suficiente para realizar una inversión. A partir de este problema se crearon soluciones tales como Citrix, Tarantella, y Windows NT Terminal Server Edition, que permitían a usuarios utilizar su equipo viejo aún después del cambio de siglo, utilizándose este como una terminal que presentaba en pantalla la información que era almacenada y procesada en el servidor.

Sistemas Operativos Multiproceso.

Las computadoras que tienen más de una UCP son llamadas multiproceso. Un sistema operativo multiproceso coordina las operaciones de los procesadores para optimizar al máximo la eficiencia global del sistema.

Los primeros sistemas operativos multiproceso realizaban lo que se conoce como multiproceso asimétrico, el cual se caracteriza por utilizar una UCP para administrar de manera íntegra el equipo de

cómputo, incluyendo a los demás procesadores. Esto fue un primer acercamiento al multiproceso pero no fue la dirección ideal ya que la UCP principal podía convertirse en un cuello de botella, por lo cual se creó el multiproceso simétrico, en el cual no existe una UCP controladora, ya que todas procesan de manera simultánea (simétricamente) las instrucciones de un programa, con lo cual nació un problema, ya que los sistemas operativos debían de ser diseñados para poder operar de manera natural a través de diversas rutas de proceso e integrar un mismo resultado. Unix ofrece el soporte a multiproceso asimétrico a través de las extensiones de Unix, mientras que MS Windows NT soporta multiproceso simétrico.

Sistemas Operativos Empotrados.

Con el advenimiento de nuevas tecnologías, los sistemas de cómputo se miniaturizaron hasta el grado de ser de bolsillo, presentándose situaciones que nunca antes en la historia de la computación se habían previsto, naciendo la necesidad de crear sistemas sin partes mecánicas. Esto representó un reto que fue resuelto con la creación de sistemas operativos empotrados, es decir, integrados en circuitos a manera de ROM.

Estos sistemas operativos son WIMP y tienen la peculiaridad de tener un microcódigo muy pequeño y eficiente, están integrados a la computadora e interactúan con el mundo exterior a partir de puertos y buses. Algunos ejemplos de estos son: Windows CE y Palm OS.

La quinta generación: los microprocesadores

Posteriormente, hacia finales de los setenta, aparece la que podría ser la quinta generación de ordenadores. Se caracteriza por la aparición de los microcomputadores y los ordenadores de uso personal. Estas máquinas, se caracterizan por llevar en su interior un microprocesador circuito integrado, que reúne en un sólo chip de silicio las principales funciones de un ordenador.
Los ordenadores personales, son equipos a menudo muy pequeños, no permiten multiproceso y suelen estar pensados para uso doméstico o particular. Los microordenadores, si bien empezaron tímidamente como ordenadores muy pequeñitos, rápidamente han escalado el camino superando a lo que hace 10 años era un miniordenador. Un microordenador actual puede tener 1Gb y 4Gb de memoria, discos con capacidades del orden de 200Gb a 1Tb y pueden permitir la utilización simultánea del equipo por múltiples usuarios.