domingo, 30 de septiembre de 2012

Una pausa....

Quiero hacer una pausa de estar poniendo ciertos apuntes de informática para hablar de algo que tiene que ver con nuestra vida y las computadoras.

Aprender a unas una computadora no significa lo mismo hoy día de lo que significaba hace unos años. Muchas personas que tienen acceso a un ordenador solo lo utilizan para tener acceso a Internet y algunas herramientas sencillas, de hecho hace poco escuche a alguien ofreciéndose a dar un curso de computadora centrado en el uso de Facebook.

En un principio se pensó en hacer un ordenador con el fin de resolver problemas matemáticos enfocados a balística, poco después Se vio un potencial increíble en labores en procesamiento de textos y como herramienta de diseño o dibujo. Algunos autores incluyen a los primeros juegos de vídeo como propósito principal de las computadoras, aunque se discute si es en verdad esto o solo una aplicación como forma de aprender programación.

En general se considera que para decir que se sabe utilizar una computadora debíamos dominar en cierto grado dos de los tres objetivos principales de la máquina, por ejemplo, saber hacer cálculos matemáticos y manejar correctamente un editor de texto o hacer dibujos con algún paquete y manejar un editor de texto bien.

Por un tiempo esto fue real hasta que se comenzó hacer mas popular el internet y la gente tuvo mas acceso a este. En un inicio no existía gran interacción se usaba para buscar información pero sitios como Geocities rompieron con esto permitiendo que la gente tuviera un espacio en un modem remoto de forma gratuita, con lo que se comenzo a generar un gran número de contenidos tan diferentes y en su momento tan famosos, ya se empieza a hablar de la nación internet, y gente se comienza hacer famosa, y aquí el que diga no haber conocido a Randy Constan no puede hablar de navegar en internet desde sus  inicios. O Tron Guy con su valor para publicar sus fotos presumiendo en buenos términos su traje. Todo esto forma parte de la historia de la red, y en este aspecto quiero detenerme un poco. Se puede decir que esta falta de contacto físico que siempre a otorgado la red nos ha hecho una acción similar al alcohol como deshinibidor social. ¿Quién en su sano juicio se mostraría con estos atuendos? yo no conozco a nadie que lo hiciera fuera de una convención de comics o que lo hiciera por el puro gusto de hacerlo o por expresar un anhelo. Tampoco conozco a alguien se atreviese a decir las cosas que se suelen plasmar en salas de chat o acaso alguien que como ya dije, en verdad a navegado  desde sus inicios de internet y nunca entro a latinred con la esperanza de "ligar", de algún modo yo si lo hice, recuerdo a majo23 una amiga de Sinaloa con la que me escribí mucho tiempo, decíamos ser novios y tristemente se produjo la separación cuando ella se caso en la vida real.

Un par de amigos si bien no se casaron, si encontraron pareja por estos medios del chat, uno incluso termino siendo padre de una relación que se cuajo completamente en las salas de latinchat y solo se conocieron en personas para concebir. El otro termino yendo hasta costa rica a conocer a su amiga del ICQ con la que converso por cerca de 5 años. De este modo me puedo seguir escribiendo acerca de como la gente pierde un poco el miedo a las personas cuando experimentan esa sensación impersonal que da el estar detrás de una computadora.

Y es este mismo sentimiento que nos deja estar dispuestos a escribir lo que sea en internet. Actualmente ha quedado lejos el tiempo en que teníamos un blog para expresarnos, o utilizar los foros de opinión, hoy las cosas se hacen en otro plano mediante plataformas como Facebook o Twitter donde detallamos lo que hacemos, incluso pudiendo afectar nuestra seguridad. No digo que estas herramientas sean perjudiciales, de hecho son conveniente, o pregúnteles a los árabes de como organizaron su "primavera Árabe" con twetts. Pero existe otro segmento que pone lo que sea.

Facebook es testigo, casi silencioso, de adulterios, borracheras penosas y demás trapitos sucios que alguien nos puede sacar, pero los peores son los que nosotros mismos llevamos a la luz. Y es el siguiente vídeo donde en Bélgica seleccionan un grupo de personas que pasan por la calle y les inventan una historia acerca de un vidente que no conocen y que puede decirles su vida, incrédulos algunos aceptan y ven como se les revela su vida frente a sus ojos, narrada por el psíquico. Pero la verdad es mejor ver el vídeo. Pero no sin antes un último apunte: Hay que tener mucho cuidado con lo que publicamos para que los demás vean, esto nos puede vulnerar mucho.


domingo, 23 de septiembre de 2012

Tipo de sistemas

Los sistemas informáticos se desarrollan con distintos propósito, según las necesidades de la empresa.  Los sistemas de procesamiento de transacciones funcionan al nivel operativo de la empresa, los sistemas de automatización de oficina y los sistemas de trabajo del conocimiento apoyan el trabajo al nivel del conocimiento. Los sistemas de información gerencial y los sistemas de apoyo a las decisiones se encuentran entre los sistemas de alto nivel. Los sistemas expertos aplican los conocimientos de los encargados de la toma de decisiones para solucionar problemas estructurados específicos. Los sistemas de apoyo a ejecutivos se encuentran en el nivel estratégico de la organización. Los sistemas de apoyo a la toma de decisiones en grupo y los sistemas de trabajo corporativo apoyados por computadora, auxilian a la toma de decisiones semi estructuradas o no estructuradas a nivel de grupo.

Sistemas de procesamiento de transacciones(TPS)

Estos sistemas eliminan el sobre-trabajo que generan ciertos procesos como el generado por hacer la nómina y los inventarios. Es cierto que los usuarios deben capturar información pero ya no es necesario hacer trabajo manual en cuanto a los cálculos requeridos para ellos.
Estos sistemas son de una gran importancia ya que los administradores del negocio requieren de información actualizada continuamente para poder planear su trabajo de día a día.

Sistemas de automatización de oficina(OAS) y sistemas de trabajo de conocimiento(KWS)

Los sistemas de automatización de oficina  están conformados por los procesadores de texto, hojas de cálculo, calendarios electrónicos, gestión de correo electrónico, videoconferencia y otros similares. Estos apoyan a los trabajadores de datos que por lo general no general conocimiento nuevo, por el contrario utilizan los datos para analizarlos y modificarlos antes de ser compartidos.
Los sistemas de trabajo del conocimiento sirven de apoyo a los trabajadores como científicos ingenieros o médicos para su trabajo en la creación de nuevo conocimiento

Sistemas de información gerencial(MIS)

Estos sistemas no reemplazan a los sistemas de procesamiento de transacciones; por el contrario los utilizan, o al menos la información que estos segundos generan. Estos sistemas requieren que usuarios, software y hardware trabajen en conjunto por lo que ayudan a la toma de decisiones y el análisis. Utilizan una base de datos unificada para varios de los procesos empresariales y es por ello su utilidad en procesos de decisión.

Sistemas de apoyo a la toma de decisiones(DSS)

Estos sistemas y los sistemas de información gerencial comparte una misma base de datos solo que estos difieren de los MIS en que apoyan a la toma de decisiones durante todo el proceso de esta, aunque la decisión final depende de un usuario no del sistema. En ocasiones se hace referencia a ellos como sistemas que se enfocan en la inteligencia de negocios.

Sistemas expertos e inteligencia artificial(AI)

Los sistemas AI han sido desarrollados con el motivo de hacer máquinas con comportamiento inteligente en dos vertientes: el reconocimiento del lenguaje y la resolución de problemas hasta su solución lógica. Los sistemas expertos utilizan la lógica de los AI para la resolución de problemas planteados por los usuarios de negocios y otras áreas.
Los componentes básicos de los sistemas expertos son las bases del conocimiento, un motor de eficiencia que conecte al usuario con el sistema mediante el empleo de consultas realizadas con lenguajes como el SQL y la interfaz de usuario.

Sistemas de apoyo a la toma de decisiones en grupo (GDSS) y sistemas de trabajo colaborativo apoyado por computadora.

Este tipo de sistemas, que se utilizan en salones especiales equipados con diversas configuraciones, faculta a los miembros del grupo a interactuar con apoyo electrónico y la asistencia de un facilitador especial. Los sistemas de apoyo a la toma de decisiones en grupo tienen el propósito de unir a un grupo en la búsqueda de la solución a un problema con la ayuda de diversas herramientas como los sondeos, los cuestionarios, la lluvia de ideas y la creación de escenarios. El software GDSS puede diseñarse con el fin de minimizar las conductas negativas de grupo comunes, como la falta de participación originada por el miedo a las represalias si se expresa un punto de vista impopular o contrario, el control por parte de miembros elocuentes del grupo y la toma de decisiones conformista.

Sistemas de apoyo a ejecutivos(ESS)

Cuando los ejecutivos recurren a la computadora, por lo general lo hacen en busca de métodos que los auxilien en la toma de decisiones de nivel estratégico. Los sistemas de apoyo a ejecutivos ayudan a estos últimos a organizar sus actividades relacionadas con el entorno externo mediante herramientas gráficas y de comunicaciones, que por lo general se encuentran en salas de juntas o en oficinas corporativas personales. A pesar de que los ESS dependen de la información producida por los TPS y los MIS, ayudan a los usuarios a resolver problemas de toma de decisiones no estructuradas, que no tienen una aplicación específica, mediante la creación de un entorno que contribuye a pensar en problemas estratégicos de una manera bien informada.







lunes, 17 de septiembre de 2012

Virus en LINUX


Si hemos sido usuarios habituales de Windows estaremos acostumbrados a tener que defendernos de la enorme cantidad de basura que hay en Internet y que puede infectar nuestro equipo, haciéndolo vulnerable e inseguro.

Hablamos de virus, troyanos, spyware, gusanos, ... que nos obligan a tener software especializado en seguridad instalado y actualizado en Windows.

Sin embargo en GNU/Linux no es necesario ya que estamos ante un sistema seguro por defecto, donde apenas si existen virus, todos ellos son pruebas de concepto más que otra cosa y requieren de la intervención del usuario para poder hacer algo.

En Ubuntu al igual que en cualquier GNU/Linux y sistemas basados en Unix los archivos no son ejecutables porque tengan una extensión que así lo indique.

En Windows el sistema intentará ejecutar cualquier archivo que termine el .exe sin preguntar nada más. Por el contrario en GNU/Linux para poder ejecutar un archivo este aparte de ser un ejecutable propiamente dicho ha de tener permisos de ejecución.

Estos permisos determinan que usuarios pueden hacer cosas y que cosas pueden hacer con el archivo en cuestión. Tenemos tres clases de permisos: de lectura, de escritura y de ejecución, tanto para archivos como para directorios.

Por defecto un archivo descargado de Internet no tiene permisos de ejecución, lo que hace necesaria la intervención del usuario para poder ejecutarse.

Por otra parte, los directorios y recursos importantes y fundamentales del sistema solo pueden ser accedidos de forma total por el administrador del sistema.

Los permisos de un archivo o carpeta puede modificarse desde las propiedades del mismo, accedemos a través del menú que aparece al pulsar el botón derecho del ratón apuntando al propio archivo. Para poder cambiar los permisos de algo tenemos que tener permiso para hacerlo.

Antivirus para GNU/Linux propiamente dicho no existen, existen programas para GNU/Linux que nos permiten escanear particiones y discos en busca de virus para Windows. Algo muy útil si tenemos que arreglar un sistema infectado o para reforzar la seguridad de una red.

Por ejemplo, los antivirus Avast y Clam tienen versiones para GNU/Linux totalmente gratuitas.


miércoles, 12 de septiembre de 2012

Introducción sistemas

Tipos de sistema

Los sistemas informáticos se desarrollan con distintos propósito, según las necesidades de la empresa. Los sistemas de procesamiento de transacciones funcionan al nivel operativo de la empresa, los sistemas de automatización de oficina y los sistemas de trabajo del conocimiento apoyan el trabajo al nivel del conocimiento. Los sistemas de información gerencial y los sistemas de apoyo a las decisiones se encuentran entre los sistemas de alto nivel. Los sistemas expertos aplican los conocimientos de los encargados de la toma de decisiones para solucionar problemas estructurados específicos. Los sistemas de apoyo a ejecutivos se encuentran en el nivel estratégico de la organización. Los sistemas de apoyo a la toma de decisiones en grupo y los sistemas de trabajo corporativo apoyados por computadora, auxilian a la toma de decisiones semiestructuradas o no estructuradas a nivel de grupo.

Sistemas de procesamiento de transacciones(TPS)

Estos sistemas eliminan el sobre-trabajo que generan ciertos procesos como el generado por hacer la nómina y los inventarios. Es cierto que los usuarios deben capturar información pero ya no es necesario hacer trabajo manual en cuanto a los cálculos requeridos para ellos.
Estos sistemas son de una gran importancia ya que los administradores del negocio requieren de información actualizada continuamente para poder planear su trabajo de día a día.

Sistemas de automatización de oficina(OAS) y sistemas de trabajo de conocimiento(KWS)

Los sistemas de automatización de oficina están conformados por los procesadores de texto, hojas de cálculo, calendarios electrónicos, gestión de correo electrónico, videoconferencia y otros similares. Estos apoyan a los trabajadores de datos que por lo general no general conocimiento nuevo, por el contrario utilizan los datos para analizarlos y modificarlos antes de ser compartidos.
Los sistemas de trabajo del conocimiento sirven de apoyo a los trabajadores como científicos ingenieros o médicos para su trabajo en la creación de nuevo conocimiento

Sistemas de información gerencial(MIS)

Estos sistemas no reemplazan a los sistemas de procesamiento de transacciones; por el contrario los utilizan, o al menos la información que estos segundos generan. Estos sistemas requieren que usuarios, software y hardware trabajen en conjunto por lo que ayudan a la toma de decisiones y el análisis. Utilizan una base de datos unificada para varios de los procesos empresariales y es por ello su utilidad en procesos de decisión.

Sistemas de apoyo a la toma de decisiones(DSS)

Estos sistemas y los sistemas de información gerencial comparte una misma base de datos solo que estos difieren de los MIS en que apoyan a la toma de decisiones durante todo el proceso de esta, aunque la decisión final depende de un usuario no del sistema. En ocasiones se hace referencia a ellos como sistemas que se enfocan en la inteligencia de negocios.

Sistemas expertos e inteligencia artificial(AI)

Los sistemas AI han sido desarrollados con el motivo de hacer máquinas con comportamiento inteligente en dos vertientes: el reconocimiento del lenguaje y la resolución de problemas hasta su solución lógica. Los sistemas expertos utilizan la lógica de los AI para la resolución de problemas planteados por los usuarios de negocios y otras áreas.
Los componentes básicos de los sistemas expertos son las bases del conocimiento, un motor de eficiencia que conecte al usuario con el sistema mediante el empleo de consultas realizadas con lenguajes como el SQL y la interfaz de usuario.

Sistemas de apoyo a la toma de decisiones en grupo (GDSS) y sistemas de trabajo colaborativo apoyado por computadora.

Este tipo de sistemas, que se utilizan en salones especiales equipados con diversas configuraciones, faculta a los miembros del grupo a interactuar con apoyo electrónico y la asistencia de un facilitador especial. Los sistemas de apoyo a la toma de decisiones en grupo tienen el propósito de unir a un grupo en la búsqueda de la solución a un problema con la ayuda de diversas herramientas como los sondeos, los cuestionarios, la lluvia de ideas y la creación de escenarios. El software GDSS puede diseñarse con el fin de minimizar las conductas negativas de grupo comunes, como la falta de participación originada por el miedo a las represalias si se expresa un punto de vista impopular o contrario, el control por parte de miembros elocuentes del grupo y la toma de decisiones conformista.

Sistemas de apoyo a ejecutivos(ESS)

Cuando los ejecutivos recurren a la computadora, por lo general lo hacen en busca de métodos que los auxilien en la toma de decisiones de nivel estratégico. Los sistemas de apoyo a ejecutivos ayudan a estos últimos a organizar sus actividades relacionadas con el entorno externo mediante herramientas gráficas y de comunicaciones, que por lo general se encuentran en salas de juntas o en oficinas corporativas personales. A pesar de que los ESS dependen de la información producida por los TPS y los MIS, ayudan a los usuarios a resolver problemas de toma de decisiones no estructuradas, que no tienen una aplicación específica, mediante la creación de un entorno que contribuye a pensar en problemas estratégicos de una manera bien informada.

Roles de los analistas de sistemas

El analista de sistema evalúa de manera sistemática el funcionamiento de un negocio mediante el examen de la entrada, el procesamiento de datos y su consecuente producción de información. En general la indefinición de analistas de sistemas es bastante amplia pues debe tener la capacidad de trabajar con todo tipo de gente y contar con suficiente experiencia en computadoras. Los tres roles principales de un analista de sistemas son:

El rol como consultor de analista de sistemas

Con frecuencia, el analista de sistemas desempeña el rol de consultor para un negocio y, por tanto, podría ser contratado de manera específica para enfrentar los problemas de sistemas de información de una empresa. Este tipo de contratación suele ser una ventaja ya que un consultor externo tiene conocimientos frescos pues no esta encerrado en un solo lugar con los mismo problemas que lo llevan a las mismas soluciones. Por otro lado se puede considerar desventaja el no empaparse del todo con el sistema de la empresa.

El rol de experto en soporte técnico del analista de sistemas

Este rol del analista de sistemas no lo encierra a un proyecto en especial, si que recurre a su experiencia en software y hardware y al uso que se le da dentro del negocio. Generalmente esto no esta relacionado a la realización de un proyecto completo de sistemas si no pequeñas modificaciones.

El rol de agente de cambio del analista de sistemas

Este es rol mas completo del analista de sistemas ya que esta ligado a lo largo de la vida útil de un desarrollo de sistema. Es este rol que se considera como un catalizador para el cambio, cooperando y facilitándolo. Es este el rol mas importante del analista de sistema pues de su proceso de la información es que el sistema logra su función.
En su calidad de analista de sistemas desempeñando la función de agente de cambio, debe promover un cambio que involucre el uso de los sistemas de información. También es parte de su tarea enseñar a los usuarios el proceso del cambio, ya que las modificaciones a un sistema de información no sólo afectan a éste sino que provocan cambios en el resto de la organización.

Ciclo de vida de desarrollo de sistemas

Es difícil decir o hablar acerca del ciclo de vida de sistemas ya que los autores no se ponene de acuerdo a cerca de el. Kenneth E. Kendall sugiere el siguiente:

Identificación de problemas, oportunidades y objetivos

Esta es la primer fase del ciclo donde como su nombre dice; se identifican los problemas, oportunidades y objetivos. De esta depende el total de la vida del sistema ya que aquí es donde se identifican los problemas que se abordaran y cuales no son necesarios de tomar en cuanta o que; a corto o mediano plazo; seria una perdida de tiempo.
Es un hecho que buena parte de las veces que un cliente pide un proyecto software no sabe en realidad lo que quiere o lo que necesita, por ello es importante que el analista de sistema pueda definir estos aspectos con claridad.

Determinación de los requerimientos de información

Esta es una fase interactiva con los usuarios del sistema, ya que ellos son los que saben que y como se realizan las cosas. Para poder obtener la información el analista hace uso de cuestionarios, entrevistas, muestreos, revisión de datos escritos (si los hay) e incluso la formulación de algún prototipo.
Aquí el analista debe esforzarse por entender la información, ya que, el cliente va a esperar que el sistema haga lo que ya esta haciendo pero el analista debe ser capaz de mejorar los procesos, siempre tomando en cuenta el porque las cosas se hacen de esa forma en la empresa pero pensando en como pueden cambiar para bien.

Análisis de las necesidades del sistema

Aquí el analista utiliza técnicas como diagramas de flujo para gráficar las entradas, los procesos y las salidas de las funciones del negocio. Con todo esto se estudian las decisiones en el negocio.
Aquí es donde el analista prepara una propuesta de sistema con los cambios sugeridos. En ocaciones este es el último paso que se realiza, ya que dentro de la propuesta realizada se incluye un balance costo/beneficio de la implementación del nuevo sistema; y si esta no es positiva generalmente se decide no continuar.

Diseño del sistema recomendado

Toda vez que se decide seguir adelante, el analista toma toda la información antes recolectada, procesada, catalogada y comprendida para realizar el diseño lógico.
Se ocupa en hacer el diseño de la interfaz, ya que de esta es la que interactuará con el usuario y de su comportamiento depende gran parte del éxito del sistema. Esta fase incluye modelación de bases de datos, archivos y gran parte de los datos. No se debe olvidar del diseño de controles de respaldo de información del sistema.

Desarrollo y documentación del software

En esta fase el analista de sistemas trabaja de forma conjunta con programadores para la elaboración de código que se implemente en software nuevo o adaptación del mismo. Para esto se utilizan distintos diagramas e incluso pseudocódigo.
Por otro lado se trabaja con usuarios para la elaboración de la documentación como manuales de procedimiento.
Los programadores y los usuarios forman un parte fundamental del sistema en esta parte pero; la lógica y la forma de trabajar del sistema depende del analista.

Implementación y evaluación del sistema

En esta última fase del ciclo se programa la capacitación sobre el uso del sistema así como la conversión del sistema anterior al actual, cambio en los archivos (formatos), construcción de la base datos e instalación de equipos necesarios.
La evaluación del sistema se realiza durante cada fase del ciclo, aquí se evalua que los usuarios esten realmente utilizando el nuevo sistema.  

miércoles, 5 de septiembre de 2012

Arquitectura de computadoras


Entendamos por arquitectura de computadoras las partes que lo componen. De este modo podemos hablar de dos tipos de componentes.
  1. Componentes físicos, también llamado hardware y que será compuesto por toda la circuitería y componentes electrónicos del ordenador.
  2. Componentes lógicos, también llamado software y que esta compuesto por los programas que se ejecutan en el ordenador así como por la información o datos que se procesan. Un ordenador sin software no tendría sentido, solo sería una máquina que no haría nada.
La arquitectura de una computadora explica la situación de sus componentes y permite determinar las posibilidades de que un sistema pueda determinar las operaciones que se piensa realizará.
Cualquier usuario que desee adquirir un sistema informático, tanto si es una gran empresa como un particular, debe responder a una serie de preguntas previas: ¿qué se desea realizar con el nuevo sistema informático? ¿Cuáles son los objetivos a conseguir? ¿Qué software será el más adecuado para conseguir los objetivos marcados? ¿Qué impacto va a suponer en la organización (laboral o personal) la introducción del nuevo sistema informático?
Finalmente, cuando se haya respondido a estas preguntas, el usuario tendrá una idea aproximada de los objetivos que han de cumplir los diferentes sistemas informáticos a evaluar.


Organización de las computadoras


El modelo básico de las computadoras que aún se utiliza fue establecido en 1945 por Von Neumann. Esta máquina es capaz de ejecutar secuencialmente, una serie de ordenes elementales denominadas instrucciones máquina, que deben estar almacenadas en memoria principal para ser leídas y ejecutadas.
Este computador se encuentra organizado en una serie de unidades funcionales, cada una de ellas responsable de la realización de un grupo de tareas específicas. Estas unidades funcionales son:

  • Unidad aritmética y lógica (UAL)
  • Unidad de control (UC)
  • La memoria principal o central (MP o MC)
  • La unidad de entrada y de salida (E/S)

Al conjunto de la unidad aritmética y lógica, la unidad de control, los registros y, actualmente parte de la memoria se le denomina Unidad Central de Procesamiento1 (UCP) o procesador y este se encuentra encapsulado en un mismo circuito.

Evidentemente, hay que garantizar las comunicaciones entre las diferentes unidades funcionales, de manera que la información pueda fluir entre ellas. Para ello existen una serie de conexiones y canales de comunicación (buses) que ponen en contacto a las diferentes partes del computador y definen los caminos que pueden seguir los datos. A estos caminos de datos se le conoce como Ruta de datos.
El conjunto de circuitos aritméticos y lógicos recibe el nombre de Unidad Aritmética y Lógica (UAL) y realiza operaciones elementales como sumas, restas, productos, sumas lógicas, negaciones, desplazamientos, etc. Generalmente opera con datos que están almacenados en registros, sin embargo, es posible que también obtenga los datos y/o guarde los resultados en memoria. Los circuitos que la integran trabajan a gran velocidad.

Los registros son almacenamientos temporales para aquella información, datos o instrucciones, que esta siendo utilizado por el UCP, aunque también pueden almacenar información especifica del funcionamiento de la máquina. Por eso comúnmente se dice que existen registros de propósito general y registros específicos. Los registros cumplen un papel esencial en la arquitectura de la computadora, que que el número de bits que un registro es capaz de almacenar define la longitud de la palabra computador puesto que cada registro almacena, normalmente, un único dato o instrucción. El número de registros de una computadora a otra es diferente y en general junto con su función es una de las mas importantes decisiones que debe tomar un arquitecto de computadoras.

La unidad de control coordina todas las operaciones que se realizan, ya sea en el propio procesador, memoria o en le sistema de entrada/salida, Por tanto, es el centro neurálgico de la máquina, y genera todas las señales de control necesarias para ejecutar cualquier tarea, por ello, es razonable pensar que la circuitería de control puede distribuirse por toda la máquina permitiendo controlar y sincronizar los eventos de todas las unidades funcionales.

La memoria principal o memoria central o incluso llamada memoria primara, esta compuesta por un conjunto de unidades de almacenamiento independientes llamadas celdas o puntos de bits, capaces de almacenar un bit. Estas celdas no suelen accederse individualmente, si no que el acceso se realiza por grupos de tamaño mínimo de 8bits2 y en general, admiten accesos múltiplos de byte. Al número máximo de bits que puede accederse en una operación en una operación de memoria tiene asignado un número para su identificación que se denomina dirección.

La memoria principal admite dos tipos de operaciones: lectura y escritura. Las operaciones de escritura almacenan un valor en la dirección dada, la operación de escritura recupera el valor mas recientemente almacenado en esta dirección. Las operaciones de lectura no son destructivas, es decir; es posible leer muchas veces el mismo valor. Su capacidad o tamaño puede expresarse en bits, octetos o palabras. Lo usual es hacerlo por octetos y se emplean las siguientes unidades:


  • 1 K (1 Ka o 1 Kilo) = 210 = 1024
  • 1 M (1 Mega) = 220 = 210 K
  • 1 G (1 Giga) = 230 = 210 M
  • 1 T (1 Tera) = 240 = 210 G


La unidad de entrada/salida es la responsable de la comunicación de la máquina con el exterior y realiza la transferencia de información a través de los dispositivos denominados periféricos.

Los periféricos mas comunes son:

  • Para introducir datos, llamados dispositivos de entrada. Ejemplo: Teclado, ratón.
  • Para presentar resultados, dispositivos de salida. Ejemplo: Monitor, impresora
  • Para almacenar información, dispositivos de entrada/salida. Ejemplo Discos duros


El procesador

El procesador es un circuito secuencial que se disgrega en una unidad de proceso y en una unidad de control. Recibe las instrucciones del programa que se esta ejecutando y las encadena, las interpreta y las transforma enviando las ordenes precisas al resto de los elementos del ordenador con el fin de que cada uno actúe en el momento y la forma precisa. 

En una máquina común la unidad de proceso tiene los siguientes elementos básicos:

  1. El registro de las instrucciones. Esta es la que guarda las instrucciones que ejecuta 
  2.  El contador de programas: Es un registro que contiene en todo momento la dirección de memoria siguiente a la instrucción que se ejecuta 
  3. El banco de registros: Guarda los datos con que trabajan los programa cuando se llevan de la memoria la procesador para operar con ellos o para consultarlos. El banco de registro tiene ocho registros de 16 bits, que se identifican con los nombres de R0, R1,...R7. El registro R0 tiene la particularidad de que no puede escribirse y que siempre guarda el valor cero.
  4. La unidad aritmética lógica: Realiza las operaciones aritméticas requeridas para los programas
  5. Los registros RN y RZ: Son de 1Bit, guardan los bits de condición N y Z. Estos indican en todo momento si el resultado de la última operación efectuado por la unidad aritmética y lógica ha sido negativo (RN) o cero (RZ).
Las funciones de la unidad de control son tres:
  1. Analiza e interpreta instrucciones del programa que esta ejecutando
  2. Controla los demás componentes físicos del ordenador (memoria, periféricos, unidad aritmética,... etc) mediante ordenes dirigidas a estos componentes.
  3. Atiende y decide sobre posibles interrupciones que se pueden producir en el proceso; por ejemplo, el teclado envía una señal a la unidad de control cada vez que se pulsa un tecla.
Las partes de la unidad de control se pueden describir como:

Registro contador de programa (CP o CI) También llamado contador de instrucción. Contiene la dirección de memoria donde se encuentra la siguiente instrucción que se va a ejecutar

Registro de instrucción (RI): Contiene la instrucción que se esta ejecutando en ese momento, dicha instrucción esta compuesta por varias partes entre las que se destaca el código de operación, es decir, que operación debe realizar la unidad de control (dependiendo de este código se activan unos u otros componentes del ordenador) y las direcciones de memoria donde se encuentran los operandos que se pueden necesitar.

Decodificador (D) : Se encarga de extraer el código de operación de instrucción en curso, o la dirección (posición) de memoria a la que la unidad de control debe acceder para leer o escribir en ella, lo analiza y emite las señales necesarias al resto de los elementos para su ejecución a través del secuenciador.

Secuenciador (S): Envía una serie de microórdenes al resto de los elementos que, sincronizadas con los pulsos del reloj, hace que se ejecute paso a paso la instrucción que esta en el registro de instrucción.

Reloj (R): Indica en que momento debe comenzar una determinada operación y en que momento debe finalizar, para esto emite unos impulsos a intervalos fijos de tiempo que sirven como referencia al resto de los componentes.

Unidad aritmética lógica (UAL)

Lleva a cabo las operaciones que puede realizar el ordenador, estas pueden ser aritméticas (suma, productos, etc) o lógicas (operaciones de comparación).

La UAL recibe los datos con los que debe operar la unidad de control y tras realizar la operación oportuna devuelve el resultado a la memoria principal.

La mayoría de las UAL como operación aritmética solo tienen la suma, y el resto de las operaciones las efectúa en base a la suma, esto para una persona sería lento y mucho trabajo pero un ordenador esta precisamente diseñado para realizar operaciones repetitivas ; cientos de ellas, a intervalos de miles de ellas por milisegundo.

Circuito operacional (COP): Se encarga de la realización de operaciones con los datos suministrados por el registro de entrada. Este circuito dispone de unas entradas para seleccionar el tipo de operación a realizar en cada momento (aritmética o lógica).

Registro de entrada 1 y 2 (R. en a y R. en b): Son utilizados tanto para el almacenamiento de datos u operandos que intervienen en una instrucción antes de la realización de las operaciones por parte del 

COP como para el almacenamiento de datos intermedios.

Registro de estado: En queda constancia de algunas condiciones que se dieron en la última operación realizada y que se tendrá y que se tendrá que tener en cuenta en otras operaciones posteriores.

Registro acumulador (RA): En el se depositan los resultados de las operaciones llevadas a cabo por el circuito operacional.

Memoria principal

Antes de empezar a analizar es pertinente definir las definiciones de los distintos tipos de memoria
Memoria RAM (Random Access Memory): Es una memoria de almacenamiento aleatorio de tipo volátil pero de tiempo de acceso muy rápido, es decir, la información permanece solo si existe alimentación de energía. Este tipo de memoria permite tanto la lectura como la escritura por parte del procesador.

Memoria ROM (Read Only Memory): Es una memoria de solo lectura de acceso aleatorio y que se utiliza principalmente para almacenar datos básicos o de configuración del ordenador como lo es el arranque. Esta es una memoria no volatil.
La memoria principal también es llamada memoria central o memoria RAM.
La memoria principal es una parte fundamental del ordenador ya que los programas deben estar cargados aqui para que puedan ejecutarse y los datos también deben estar cargados aquí para poder ser procesados.

La memoria principal tiene una ventaja con respecto a los que se denomina memoria secundaria (disquetes, discos duros...) y es que es mucho mas rápido el acceso a ellay la desventaja de que es una memoria volátil, y es que la información se pierde en el memento que se desconecta el ordenador por ello el funcionamiento de un ordenador implica tener guardada la información y los programas en una memoria secundaria para evitar perdidas al apagar el ordenador. 
La memoria principal es como un matiz en donde en cada celda se almacena un bit (un dígito binario); es decir; un cero o un uno.

Cuanta mas capacidad tenga la memoria mas información podrá almacenar. Las memorias hacia el año 90 tenían una capacidad de 640Kb a 1Mb, hoy en día tienen capacidades de 4Gb a 20Gb en los ordenadores personales, para servidores esto es mucho mayor.
  1. Registro de selección de memoria: Contiene en un momento dado la dirección de la celda que se trata de seleccionar de la memoria, ya sea para leer de ella o para escribir en ella.
  2. Registro de intercambio de memoria: En el se deposita el contenido de una celda de memoria que ha sido seleccionada en una operación de lectura, o bien, la información que contiene se deposita en una celda en una operación de escritura. Visto de otro modo esta es por donde salen y entran los datos de la memoria. El parámetro de RIM es un parámetro típico de las memorias que también es llamado ancho de palabra, es un número de bits que normalmente es un múltiplo de 8. En cada operación de lectura o escritura se leerá o se escribirá en la memoria ese conjunto de bits.
  3. Selector de memoria (SM): es el encargado de conectar la celda de memoria cuya dirección esta contenida en el RDM, con el RIM para la transferencia de los datos en un sentido o en otro, siempre que se produce un instrucción de lectura o de escritura.

Bus de sistema

Es un conjunto de circuitos que permite la comunicación entre la UCP y el resto de las unidades del ordenador. La transmisión la realiza en paralelo, es decir, enviando un número de bits simultáneamente entre dos unidades. En el bus de sistema se diferencian:
  1. Bus de datos
  2. Bus de control
  3. Bus de direcciones
Esta compuesta por lineas conductoras muy finas sobra la placa base, mientras que la instancia de control, el controlador de bus, en un elemento integrado en el juego de chips de la placa. Esta central de conexiones regula el tráfico de las lineas y se encarga de que no sucedan colisiones. A través del bus del sistema, el controlador del bus es una especie de semáforo qie permite o niega el acceso de datos al bus.

El transporte interno de datos por la red se realiza por medio de un cambio de tensión en la linea. Un valor de bit 1 corresponde al estado de tensión alto (5 voltios) y un bit de valor 0 (cero) se representa con el estado de tensión bajo (sin tensión, cero voltios) La capacidad del sistema de bus depende de dos factores: el ancho y la frecuencia de bus. Estos factores han evolucionado considerablemente con el paso del tiempo.

Por ancho de bus entendemos, el número de lineas disponibles para transferir datos. Cada uno de los bits que se transmite necesita una linea. Por lo tanto al ancho de bus determina la cantidad de bits que se pueden transportar a la vez. A su vez el ancho de bus es determinado por el procesador del sistema. Según el tipo de CPU, el bus de datos tiene una anchura de 8, 16, 32 o 64 bits. Contra mas ancho sea este canal, mayor cantidad de datos podrá transportaren cada intervalo de trabajo. La frecuencia del bus es es el número de “ciclos de trabajo” por segundo. A mayor frecuencia de trabajo mas rápido será el sistema del bus.

Por otro lado, el número de lineas del bus de direcciones determina el tamaño del espacio que se puede diferenciar en ella. El procesador también el ancho del bus de direcciones.

Debido a que el bus tiene un papel sumamente importante en el comportamiento del sistema en su tráfico interno y que este piede convertirse fácilmente en el cuello de botella en la arquitectura de una computadora. Un buen procesador solo puede desplegar todo su potencial en la medida en que el bus pueda proveer y y enviar datos de u mediante los demás periféricos. La frecuencia y la anchura ha evolucionado paralelamente al aumento de prestaciones de procesadores. 

viernes, 3 de agosto de 2012

Integrar Pidgin en Gnome-shell

El entorno Gnome viene con el cliente para mensajería instantánea Empathy por defecto, lo cierto es; y se que no soy el único; este es muy sencillo. Un excelente alternativa es el mensajero Pidgin que tiene mas funciones y de entrada puedo decir que este si acepta el que alguien nos quiera mandar imágenes; Empathy no y esto ya es bastante por el cual cambiar.

Pero si lo instalamos nos quedaremos con que el escritorio tiene un símbolo en forma de carta donde podemos definir nuestro estado y esta integrado el mensajero cosa que pidgin no.

Bueno si seguimos estos pasos conseguiremos que esto suceda, integrar el mensajero y dejarlo como si fuera el de  defecto, con sus notificaciones y demás.

Teniendo nuestro nuevo paquete instalado, abrimos un terminal y escribimos lo siguiente:

wget -c http://blog.desdelinux.net/wp-content/uploads/2012/02/Integracion_Pidgin.tar.gz
tar -xzvf Integracion_Pidgin.tar.gz
cd Integracion_Pidgin/gnome-shell/extensions
cp -R pidgin@gnome-shell-extensions.gnome.org/ ~/.local/share/gnome-shell/extensions/.




Esto lo hacemos obvio poniendo una linea y dando enter.


Posteriormente reiniciamos Gnome-Shell. Oprimos la combinación Alt+F2, escribimos “r” sin las comillas y damos enter. Solo nos queda activar la extensión mediante Gnome-Tweak-Tool y asi de sencillo tenemos el trabajo terminado.



miércoles, 1 de agosto de 2012

¿Qué es CSS?

Esta es una breve; tal vez muy breve reseña de lo que es CSS.

Para empezar diremos que CSS significa hojas de estilo en cascada o dicho por sus sigles en inglés Cascading Style Sheets. Estas nacieron como una propuesta de la W3C para definir un estándar para darle estilos a las paginas web. En un principio se tuvieron dos propuestas principales, los CHSS y SSP pero al final ninguno de los dos tenia los alcances deseados. Pero eran muy buenos en ciertos campos para desecharlos por lo que optaron por unir ambos lenguajes y crear CSS entre 1994 y 1995 tomando las; obviamente; los puntos fuertes de cada uno. 


Es entonces que para 1995 la W3C integra un grupo para desarrollo de CSS y lo adjunto al de HTML para que a finales de 1996 este publique la primer recomendación llamada CSS 1.


El año 1997 trae un gran cambio para la W3C pues determina necesario separar el grupo HTML y lo deja en tres parte

  1. El grupo HTML
  2. El grupo DOM
  3. El grupo CSS
Ya con los equipos de trabajo delimitados para darle una desarrollo mas acelerado es en 1998 que se publica CSS 2 y esta es la versión; aún al día de hoy; que soportan todos los navegadores. Como programadores web es indispensable que se tome este como estándar en el trabajo ya que aunque la siguiente recomendación o CSS 3 se mantiene incompleta, mucho debido a que se opto por darle una modularidad que no tiene CSS 2.1 y que le permite tener un desarrollo mas acelerado en ciertos aspectos y en otros se mantiene como candidatos a ser los estándares.

Pero al final podemos seguirnos preguntando que es CSS. 

Bueno en resumen CSS es lo que le dice a una pagina web como debe verse, dando atributos a las diferentes etiquetas del código sobre color, fuente, tamaño comportamiento y otros. En general se lo da a toda la pagina. 

Y su gran importancia es que una página que lo utilice puede puede definir sus estilos desde un archivo externo con extensión .css y si esta página utiliza este archivo para 10 páginas de las que esta conformada con la sola actualización del .css podemos cambiar el estilo de las 10 paginas vinculadas a este. En proyectos mas grandes, por decir 1000 paginas es sumamente útil, ya que de otra forma si el cliente nos pide cambiar el color o la fuente de determinada parte del sitio sin CSS habrá que hacerlo para cada una de las páginas que lo conforman. 


lunes, 30 de julio de 2012

Estructura en los algoritmos (segunda parte)

Estructura condicional múltiple

A estas estructuras también se les suele nombrar como if's anudados. En estas estructuras no se ve tanta diferencia con una sencilla, solo que el algoritmo al cumplir una condicion; comúnmente cuando la condición no se cumple, nuestro argumento se vuelve a evaluar bajo otro criterio.

Esto es especialmente útil cuando estamos refinando cierto análisis. Podemos ejemplificarlo con el siguiente diagrama de flujo:

Estructura condicional múltiple "en caso de"

En esta estructura con una sola evaluación del argumento podemos tomar mas de dos caminos, esta estructura esta enfocada para acortar nuestro trabajo de programación ya que en lugar de hacer una serie muy grande de if's anidados, con una sola sentencia podemos obtener varias evaluaciones. En nuestro ejemplo de la entrada anterior seria muy recomendable tomar esta estructura para programar nuestro código para elegir calcetines en función del color de los zapatos.

  1. ¿De qué color son los zapatos?
    1. Caso 1: Azules
      1. Utiliza calcetines azules
    2. Caso 2: Café
      1. Utiliza calcetines color café
    3. Caso 3: Blanco
      1. Utiliza calceta blanca
    4. Caso 5: Negro
      1. Utiliza calcetines negros
Claro que este es solo un pequeño ejemplo, podemos refinarlo mucho mas. Esta estructura podemos ejemplificarla con el siguiente diagrama de flujo:


Hasta aquí dejamos nuestro sencillo estudio de las estructuras condicionales, que por muy rudimentario que sea; estas son las bases para toda programación.Desde un simple cálculo hecho en c++ hasta el último lanzamiento en sistemas operativos.

sábado, 21 de julio de 2012

Estructuras en los algoritmos

Ya mencionamos que los algoritmos cuentan con ciertas estructuras que pueden ser implementadas para la resolución de nuestro problema. La primera de ellas que estudiaremos es la estructura condicional.

Estructura condicional

Esta es una instrucción o grupo de instrucciones que pueden o no ejecutarse dependiendo de que se cumpla una condición. Es decir si un evento sucede se ejecuta la instrucción, de lo contrario si este evento no sucede no se ejecutara la instrucción. De otro punto de vista, una estructura condicional compara una variable contra un valor establecido y en base al resultado el programa toma un curso.

Estructura condicional simple 

Esta es el tipo mas sencillo, a menudo se le nombra como toma de decisión, dentro del flujo del programa hay un punto en el puede llegar a una estructura de este tipo. el valor en que se ha trabajado llega a el rombo que indica la condición a evaluar y de este se puede obtener una respuesta verdadera; osea donde la condición se cumple; o una respuesta falsa. 


La estructura puede ejemplificarse con el siguiente diagrama de flujo.


Retomando el ejemplo anterior de un algoritmo para ponerse un zapato, podemos aplicar esta estructura para definir en que pie se debe poner; izquierdo o derecho. Podemos plantear la siguiente solución:
  1. ¿Las agujetas están desamarradas?
    1. Si: Haz un nudo.
    2. No: Continua
Este fragmento puede agregarse a algoritmo de colocarse un par de zapatos. Como se puede ver esta estructura solo plantea un proceso para una sola opción; en el ejemplo se aplica cuando la opción es verdadera, pero en términos generales la opción puede aplicarse si la opción es falsa, todo depende de la lógica que aplicamos en la solución. Siendo así podemos plantear el siguiente fragmento y seria válido igual:
  1. ¿Las agujetas están atadas?
    1. Si: Continua
    2. No: Átalas 
Aunque se aplica un criterio de validación el resultado obtenido es el mismo.

Estructura condicional doble

Las estructuras dobles al igual que las sencillas permiten hacer una evaluación de la cual tenemos dos posibles resultados; verdadero y falso, si o no; pero a cada una le da un camino diferente. Esta estructura puede ejemplificarse en el siguiente diagrama de flujo:


Siguiendo con el ejemplo se puede plantear el siguiente algoritmo:

  1. Tomar un zapato
    1. ¿El zapato es derecho?
      1. Si: Colocar el zapato en el pie derecho
      2. No: Colocar el zapato en pie izquierdo

Como se menciono el algoritmo puede cumplir una y solo una de las dos opciones y de acuerdo a cual tome se plantea una solución diferente.

Faltan dos estructuras condiciones más que analizaremos en el siguiente post. 

miércoles, 18 de julio de 2012

Algoritmos

Por definición un algoritmo es la recopilación de los pasos lógicos ordenados para resolver un problema; es decir,un algoritmo enumera todo lo que tenemos que hacer cuando se nos presenta un problema a resolver.

Entonces vamos a plantear un problema; que aunque burdo; no sirve para ejemplificar y explicar lo que son los algoritmos. Ponerse un par de zapatos.


Desde un punto de vista sencillo, el ponerse un zapato no representa gran problema, solo tomas el zapato, te lo pones en un pie y lo anudas. Pero desde un punto de vista como informático debes pensar un poco mas a detalle. Esto implica mucho mas observaciones que solo tomarlo y ponerlo en un pie; es así como podemos plantear este algoritmo.
  1. Elegir un par de zapatos.
    1. Verificar que tenemos los dos zapatos del par
  2. Escoger un par de calcetines acorde al color de los zapatos
  3. Ponerse un calcetín en un pie
    1. Tomar el calcetín por el extremo abierto
    2. Verificar que el calcetín esta derecho; la parte del talo hacia abajo
    3. Poner la punta del pie en la boca del calcetín
    4. Deslizar el pie dentro
    5. Acomodar las arrugas a lo largo del pie
  4. Poner el otro calcetín en el otro pie
    1. Tomar el calcetín por el extremo abierto
    2. Verificar que el calcetín esta derecho; la parte del talo hacia abajo
    3. Poner la punta del pie en la boca del calcetín
    4. Deslizar el pie dentro
    5. Acomodar las arrugas a lo largo del pie
  5. Tomar un zapato
    1. Verificar de que pie es el zapato
    2. Verificar que las agujetas están desanudadas
      1. Si están desanudadas soltarlas
    3. Colocar el zapato en el pie correspondiente
    4. Acomodarlo
    5. Ajustar las agujetas
    6. Anudar las agujetas
  6. Tomar el otro zapato
    1. Verificar de que pie es el zapato
    2. Verificar que las agujetas están desanudadas
      1. Si están desanudadas soltarlas
    3. Colocar el zapato en el pie correspondiente
    4. Acomodarlo
    5. Ajustar las agujetas
    6. Anudar las agujetas

Como informático es necesario analizar mas las cosas, solo en las caricaturas podemos ver a Dexter en su laboratorio ordenandole a su computadora a hacer cosas, realizar búsquedas y ver como esta lo hace como por arte de magia, sin pensar en lo que hay detrás. Esto son los algoritmos, cada programa son un conjunto de algoritmos, de hecho, al oprimir el botón de "negrilla" en el editor de texto este no es otra cosa que una rutina o algoritmo que obedece el programa para realizar una función. En google al ingresar un criterio de búsqueda y dar click en "buscar" esto desata otro algoritmo para realizar por el servidor. Es entonces que una computadora sin algoritmos no puede realizar nada, seria lo mas parecido a tener una licuadora descompuesta ya que una pc no puede moler una salsa.

Ahora bien los algoritmos responden a ciertas estructuras ya establecidas (Estructuras condicionales y repetitivas), pues estas nos van a permitir un análisis mas sencillo del problema o hacerlo mas preciso. Como ya mencione nosotros damos por hecho muchas cosas. En el ejemplo anterior solo mencionamos en escoger unos zapatos y unos calcetines; los pusimos en una forma lógica, primero los calcetines y después los zapatos, aunque podemos hacerlo al revés no seria correcto. Pero también podemos afinar mas nuestro algoritmo si incluimos una rutina para hacer que el color de los calcetines y el de los zapatos sea coherente. Hay que recordar que existen reglas de acerca de esto ya que unos zapatos negros con calcetines blancos no se ven bien, o que dentro de el cajón de los calcetines en probable encontrar calcetas deportivas, calcetines con rombos, de colores y que los zapatos deben combinar con el cinturón que utilicemos y el pantalón.

Esto lo detallare mas en la siguiente entrada.

sábado, 14 de julio de 2012

Diferencias del algoritmo de Google para móviles


El SEO debería adaptarse en función de si las búsquedas se realizan desde Smarthpones o lugares fijos.

Google por ejemplo utiliza el algoritmo Googlebot-Mobile para ofrecer los resultados las búsquedas a al navegar desde teléfonos móviles. Y éste algoritmo no es el mismo que el de las búsquedas en Pcs y otros ordenadores de sobremesa o portátiles.

La diferencia básica es que por una parte, el algoritmo Googlebot-Mobile tiene el cuenta que la web en cuestión tenga una visualización correcta en el móvil a la hora ofrecer sus resultados. Si no la tiene, el buscador tenderá a retrasar éstas webs en el orden de resultados.
Por eso son fundamentales las versiones web para móviles además de para ofrecer un contenido legible y manejable al usuario.

Otra diferencia del algoritmo Googlebot-Mobile respecto al de “sobremesa”, es que en los resultados del móvil hay una mayor preferencia por la geolocalización, es decir se priman resultados cuyas webs o servicios sean cercanos a nosotros.

Ésto esta pensado con la lógica evidente de que desde el móvil tendemos mas a buscar resultados por geolocalización, para acudir a lugares de trabajo, buscar direcciones de bares o eventos o para encontrar un servicio en la ciudad.

Sin embargo hay que tener en cuenta que en los últimos años Google ha optimizado también su algoritmo clásico para ofrecer una mejor geolocalización y que el el boom de las aplicaciones móviles resta importancia a este aspecto, al igual que Foursquare y otras redes sociales, con lo que las diferencias entre los dos algoritmos se han limado.

jueves, 7 de junio de 2012

Breve historia del sistema operativo

  Entender el sistema operativo es comprender el funcionamiento de toda la maquina, porque este es quien administra todas y cada una de las piezas de hardware y el software. En términos extremadamente simples; un sistema operativo es el gerente ejecutivo, es decir la parte que administra todo el software y el hardware. Siendo específicos controla todos los archivos, dispositivos, secciones de la memoria principal y cada segundo del tiempo de procesamiento; de igual forma controla quien puede utilizar el equipo y la forma en que eso sucede.

La base de la pirámide de la figura anterior muestra los cuatro administradores esenciales de un sistema operativo; los cuales son; la base de todos los sistemas operativos. Cada administrador trabaja de cerca con los demás sea cual sea el sistema operativo en cuestión.

Software del sistema operativo
Sin importar el tamaño o configuración del sistema, cada administrador de subsistema llevan acabo estas tareas:

  • Monitorizar continuamente sus recursos
  • Obligar al cumplimiento de las políticas que determinan quien obtiene que, cuando y cuanto
  • Asignarlos recursos cuando es necesario
  • Liberar el recurso -recuperarlo- cuando es conveniente

Una de las principales funciones del administrador de memoria es proteger el espacio en la memoria principal que ocupa el sistema operativo: no puede permitir que parte alguna de ese espacio sea alterada de manera accidental o propositiva. 

El administrador del procesador decide como asignar la unidad de procesamiento central (CPU) y controlar el estado de cada proceso.
Este administrador monitorea si se esta ejecutando un proceso o espera que termine la ejecución de un comando de lectura o escritura. Dado que maneja las transiciones de procesos de un estado a otro se puede comparar con un controlador de trafico. El administrador asigna el procesador y establece los registros y tablas necesarias; mas tarde, cuando la tarea a terminado o el tiempo de ejecución ha expirado lo recupera.

El administrador de dispositivos vigila todos los dispositivos, canales y unidades de control. Su tarea es escoger la manera mas eficiente de asignar los dispositivos del sistema (impresoras, terminales, unidades de disco, etc) con base en una política de programación escogida por los diseñadores del sistema. Este administrador asigna el dispositivo, lo inicializa y lo libera.

Sin embargo, no basta que cada uno de los administradores lleve acabo sus tareas individuales. También deben ser capaces de trabajar en conjunto con los otros administradores. Suponiendo que alguien escribe un comando para ejecutar un programa, el sistema debería realizar los siguientes pasos en secuencia

  1. El administrador de dispositivos recibe los impulsos eléctricos del teclado, los codifica para formar el comando y lo envía a la interfaz de comando del usuario, donde el administrador del procesador lo valida.
  2. Luego el administrador del procesador manda un mensaje de reconocimiento, para que aparezca en el monitor de vídeo, de manera que quien lo escribió sepa que se envío el comando
  3. Cuando el administrador del procesador recibe el comando, determina si hay que traer el programa correspondiente de donde este almacenado o si ya esta en la memoria, después de lo cual notifica al administrador apropiado
  4. Si el programa esta almacenado, el administrador de archivos debe calcular su localización exacta en el disco y pasar la información al administrador de dispositivos. Este lo recupera y envía el programa al administrador de la memoria el cual debe encontrar el espacio para el mismo y registrar su ubicación exacta en la memoria
  5. Una vez que el programa se halla en la memoria, el administrador de esta debe controlar su localización y progreso conforme lo ejecuta el administrador del procesador
  6. Cuando termina la ejecución del programa, este manda un mensaje de “terminado” de vuelta al administrador del procesador
  7. Por último el administrador del procesador manda el mensaje de “terminado” de vuelta al administrador de dispositivos, que lo muestra en el monitor para que el usuario lo vea

Aunque esta es una simplificación del proceso de un sistema operativo, sirve para identificar que ningún administrador puede trabajar solo, o por su parte.

Tipos de sistemas operativos

Los sistemas operativos de las computadoras grandes y pequeñas se ubican en cuatro clases, que se distinguen por su tiempo de respuesta y la forma en que se introducen los datos en el sistema:
  • Sistemas por lotes
  • Sistema interactivo
  • Sistema operativo multitarea
  • Sistema operativo en red
  • Sistema en tiempo real
  • Sistema mixto
  • Sistema operativo distribuido
  • Sistemas por lotes 
Estos existen desde las primeras computadoras, que se apoyaban en tarjetas perforadas o en citas para la entrada cuando se introducía una tarea mediante la agrupación de tarjetas en un paquete y se corría todo este a través de un lector como un grupo. Los sistemas por lotes de hoy no están limitados a tarjetas o cintas pero los trabajo todavía se procesan serie sin interacción del usuario.
La eficiencia del sistema se media por producción -esto es la cantidad de tareas completadas en una cantidad de tiempo, y el tiempo total se media en hora o a veces en días. Hoy en día no es común encontrar un sistema por lotes en funcionamiento.

Permiten la simulación de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario.
Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria.

Sistemas interactivos

También conocidos como sistemas de tiempo compartido; dan un tiempo de retorno mas rápido que los sistemas por lotes, pero son mas lentos que los sistemas en tiempo real. Se introdujeron opara satisfacer las demandas de los usuarios que necesitaban un tiempo de retorno mas rápido al hacer el retorno al eliminar los errores de sus programas. El sistema requería el desarrollo de software de tiempo compartido, lo que permitía a cada usuario interactuar directamente con el sistema de computo vía comandos introducidos a través de un terminal del tipo maquina de escribir.

El sistema proporciona una retroalimentación inmediata al usuario, y el tiempo de respuesta puede medirse en minutos o incluso en segundos, esto según la cantidad de usuarios activos.

Sistemas en tiempo real

Estos son los más rápidos de los cuatro y se utilizan en entornos de tiempo critico donde los datos se deben procesar con suma rapidez porque la salida afecta decisiones inmediatas. Los sistemas de tiempo real se utilizan para vuelos espaciales, controladores de trafico, aeronaves de alta velocidad, procesos industriales, equipo médico y conmutación telefónica entre otros. Un sistema en tiempo real debe ser 100% sensible el 100% de las veces. El tiempo de respuesta se mide en fracciones de segundo, aunque en la práctica no se logra a menudo.
Si bien en teoría es posible convertir un sistema operativo de tipo general en un sistema en tiempo real, en la práctica la carga general de los sistemas de tipo general es tan grande que no se logra desempeños en tiempo real. Por lo tanto la mayor parte de los trabajos en tiempo real requiere sistemas operativos diseñados para llenar necesidades en tiempo real.

Sistema operativo multitarea o multiprogramación

Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización.
Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP.

Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea.

Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:
  • Mejora productividad del sistema y utilización de recursos.
  • Multiplexa recursos entre varios programas.
  • Generalmente soportan múltiples usuarios (multiusuarios).
  • Proporcionan facilidades para mantener el entorno de usuarios inndividuales.
  • Requieren validación de usuario para seguridad y protección.
  • Proporcionan contabilidad del uso de los recursos por parte de los usuarios.
  • Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real.
  • Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores
En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.

Sistemas operativos distribuidos

Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.

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.

Caracteristicas de los Sistemas Operativos distribuidos:

Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software .
Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.

Objetivo clave es la transparencia.

Generalmente proporcionan medios para la compartición global de recursos.
Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).
Sistema operativo en red
Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (fisico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema.
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.

Historia de los sistemas operativos

Los sistemas operativos han evolucionado con el paso de los años y desde la perspectiva histórica los sistemas operativos han estado íntimamente ligados con la arquitectura de las computadoras en las que se ejecutan. Por ello es necesario revisar las generaciones de las la computadora para ver que tipo de sistema operativo usaba.

La primera computadora digital verdadera fue la creada por Charles Babbage, quien aunque invirtió la mayor parte de su vida y su fortuna intentando construir su maquina analítica nunca logro que funcionara como debiera porque era mecánica por completo y la tecnología de su época no era capaz de construir los engranes y las ruedas necesarias con la suficiente precisión. A parte sobra decir que esta carecía de un sistema operativo.

Como nota histórica, Babbage se dio cuenta que necesitaría de software para su máquina analítica, así que contrato a una mujer llamada Ada Lovelace hija del afamado poeta ingles Byron, para serla primer programadora del mundo. El lenguaje de programación Ada® se llama así en su honor.

Primera generación: Tubos al vacío
Después de la infructuosa labor de Babbage, poco avanzo la construcción de computadoras deigitales antes de la segunda guerra mundial. A mediados de la década de 1940, Howard Aiken, en Harvard; Jhon Von Neumann, En el instituto de estudios avanzados de Princeton; Presper Eckert y William Mauchley, En la universidad de Pensilvania entre otros, lograron construir máquinas calculadoras. Las primeras empleaban relevadores mecánicos pero eran sumamente lentas, con tiempos de ciclos medios en segundos. Luego los relevadores fueron sustituidos por tubos la vacío; eran enormes; ocupaban recintos enteros y tenían decenas de miles de tubos al vacío, con todo eran millones de veces mas lentas que las computadoras personales mas económicas que se venden en la actualidad.

En esos tiempos, un solo grupo de personas diseñaba, construía, programaba, operaba y mantenia cada maquina. Toda la programación se hacia en lenguaje máquina absoluto, a menudo alambrando tableros de conexiones para controlar las funciones básicas de la máquina. No existían los lenguajes de programación. Nadie había oído hablar de los sistemas operativos. La forma de operación usual era que el programador reservaba un bloque de tiempo en una hoja pegada en la pared, bajaba al cuarto de la máquina, insertaba su tablero de conexiones e la computadora, y pasaba horas esperando a que ninguno de los tubos al vacío se quemara durante la ejecución de su programa. Casi todos los problemas eran cálculos numéricos simples como la preparación de tablas de senos, cosenos y tangentes así como logaritmos.


Para principios de la década de 1950, la rutina había mejorado un poco con la introducción de las tarjetas perforadas, Ahora era posible escribir programas y hacer que la máquina las leyera, en lugar de usar tableros de conexiones; por lo demás el procedimiento era lo mismo.

Segunda generación: Transistores y sistemas por lotes
La introducción del transistor a mediados de la década de 1950, altero el panorama de manera radical. Las computadoras se volvieron lo bastante fiables como para fabricarse y venderse a clientes comerciales con la expectativa de que seguirían funcionando el tiempo suficiente para efectuar algún trabajo útil. Por primera vez hubo una distinción entre programadores, operaqdores y personal de mantenimiento.

Estas máquinas eran llamadas mainframes o macrocomputadoras se alojaban en salas de computo especiales con aire acondicionado y las operaban grupos de operadores profesionales. Solo las grandes corporaciones y dependencias gubernamentales o universidades importantes podían pagar los millones de dolares que costaban. Para ejecutar un trabajo un programador escribía el programa en papel (en FORTRAN o en ensamblador) y luego lo perforaba en tarjetas. Seguido de esto llevaba el mazo de tarjetas al cuarto de entrada, lo entregaba a uno de los operadores y esperaba a que estuvieran listas las salidas.

Cuando la computadora terminaba un trabajo que estaba ejecutando, un operador tomaba las hojas de la impresora y las llevaba al cuarto de salida, donde el programador podía recogerlas. Luego tomaba uno de los mazos de tarjetas traídos del cuarto de entrada y lo colocaba en la lectora de la computadora. Si se necesitaba el compilador de FORTRAN, el operador tenia que traerlo de un archivero y colocarlo en la lectora. Se desperdiciaba mucho tiempo de computadora mientras los operadores iban de un lado a otro en el cuarto de máquinas.

En vista del elevado costo de los equipos, no es sorprendente que pronto se buscaran formas de reducir el espacio de tiempo. La solución por lo general fue el sistema por lotes. La idea básica era juntar una bandeja llena de trabajos en el cuarto de entrada y luego pasarlos a una cinta magnética, empleando una computadora pequeña y (relativamente) de bajo costo como la IBM 1401 , que era muy buena para leer tarjetas, copiar cintas e imprimir salidas, pero mala para los cálculos numéricos, otras maquinas mucho mas costosas como la IBM 7094, realizaban los cómputos propiamente dichos. Esta situación se muestra en la siguiente figura:

Después de cerca de cerca de una hora de reunir trabajos, la cinta se rebobinaba y se llevaba al cuarto de máquinas. Luego el operador cargaba un programa especial (el antecesor del sistema operativo actual) que leía el primer trabajo de la cinta y lo ejecutaba. Las salidas de grababan en una segunda cinta, en lugar de imprimirse. Una vez terminado el trabajo, el sistema operativo leía en forma automática el siguiente de la cinta y comenzaba a ejecutarlo. Una vez terminado todo el lote, el operador desmontaba todas las cintas de entrada y las de salidas, reemplazaba la cinta de entrada por otro lote y llevaba la cinta de salida a una 1401 para imprimir las salidas fuera de linea .

Tercera generación
A principio de la década de 1960, la mayoría de los fabricantes de computadoras tenían dos lineas de productos diferentes e incompatibles por completo. Por un lado estaban las computadoras científicas a gran escala como la 7094, orientadas a palabras, que se orientaba a cálculos numéricos en ciencia e ingeniería. Por otro lado estaban las computadoras comerciales como la 1401, orientadas a caracteres, que los bancos y las compañías de seguros utilizaban en forma amplia para ordenar e imprimir cintas.

El desarrollo y mantenimiento de dos lineas de productos totalmente distintas representaba costos muy altos. Además muchos clientes necesitaban al principio una maquina pequeña, pero mas adelante, al crecer, querian una de mayor tamaño que ejecutara todos sus antiguos programas, pero en menor tiempo.
IBM intento resolver ambos problemas de un solo golpe, introduciendo el Sistema/360. Este era una serie de maquinas de software compatible que iba desde el tamaño de la 1401, hasta otras mucho mas potentes que la 7094. Las máquinas solo diferían en el costo y desempeño. Puesto que todas las máquinas tenían la misma arquitectura y conjunto de instrucciones, los programas escritos para una máquina podían ejecutarse en todas las demás, al menos en teoría. 

Además la 360 se diseño para que pudiera manejar cómputos tanto científicos como comerciales. Así, una sola familia de máquinas podía satisfacer las necesidades de todos los clientes. En años posteriores, IBM produjo, sucesoras compatibles con la 360, empleando tecnologías mas modernas.

La 360 fue la primer computadora importante que utilizo circuitos integrados (a pequeña escala), por lo que ofrecía una notable ventaja en precio respecto a las máquinas de segunda generación, que se construían con transistores individuales. Su éxito fue inmediato y los principales fabricantes de computadoras adoptaron la idea de una sola linea de computadoras compatibles. Los descendientes de estas máquinas se siguen usando en centros de computo en algunos lugares al día de hoy, para administrar bases de datos enormes o como servidores de sitios web que deben procesar miles de solicitudes por segundo.

La mayor ventaja de la idea de “una familia” era al mismo tiempo su punto mas débil. La intención era que todo el software, incluido el sistema operativo OS/360, tenia que funcionar en todos los modelos. Tenia que hacerlo en todos los modelos, incluido los pequeños y los grandes utilizados para hacer cálculos meteorológicos y otros cálculos pesados. Debía ser buenos para sistemas con pocos periféricos, en entornos comerciales y científicos.

Era imposible que IBM, u otro fabricante escribiera software capaz de satisfacer todos esos requisitos opuestos. El resultado fue un sistema operativo enorme y extremadamente complejo. Cosiste en miles de lineas en lenguaje ensamblador escritas por miles de programadores, y contenía miles y miles de errores, por lo que se requería un flujo continuo de versiones en un intento por corregirlos. 

Cada versión nueva corregía algunos errores, pero introducía unos nuevos por lo que se penso que el número de errores se mantuvo con el tiempo.

A pesar de lo enorme de su tamaño y sus problemas, el OS/360 y los sistemas operativos producidos por otros fabricantes en realidad satisficieron de manera razonable la mayoría de sus clientes. Además popularizo técnicas que no se utilizaban en los sistemas operativos de segunda generación siento, tal vez la mas importante la de multiprogramación.

Una solución que se hallo fue dividir la memoria en varias partes, con un trabajo distinto en cada partición. Mientras que un trabajo estaba esperando a que terminara la E/S, otro podía utilizar la CPU. Si era posible tener varios trabajos al mismo tiempo en la memoria principal, la CPU podía mantenerse ocupada casi el 100% del tiempo. Tener varios trabajos en la memoria principal sin ocasionar problemas, requiere hardware especial que proteja cada trabajo de espionaje y acciones hostiles de otros.

Otra característica de los sistemas operativos de tercera generación era que podían leer trabajos de tarjetas y grabarlos en el disco tan pronto como se llevaban al cuarto de computadoras. Así, cada vez que se terminaba un trabajo podía cargarse otro desde el disco y ponerlo en la partición recién desocupada. 

A esta técnica se le llama spooling y también se utilizaba para la salida.

El deseo de obtener una respuesta mas rápida preparo el camino para los sistemas de tiempo compartido, una variante de la multiprogramación en la que cada usuario tiene una terminal en linea. En estos sistemas si 20 usuarios están trabajando y 17 de ellos están pensando o haciendo algo diferente a estar ocupando la máquina, la CPU puede asignarse por turnos a los tres trabajos que desean ser atendidos.

El primer sistema de tiempo compartido serio, CTSS se desarrollo en el MIT en una 7094 con modificadores especiales; sin embargo el tiempo compartido no se popularizo si no hasta que se generalizo el software de protección necesario durante la tercera generación.

Tiempo después, los fabricantes mas representativos de computadoras decidieron emprender el desarrollo de un servicio de computadora; una máquina que atendiera a miles de usuarios. A este sistema lo llamaron MULTICS y con el imaginaron una máquina enorme que podria dar potencia de computadora a todos los habitantes del área de Boston.

Al final MULTICS no tuvo el éxito comercial que se espero tuvo gran influencia en los sistemas subsecuentes. Uno de los científicos de computación de los laboratorios BELL que trabajó en el proyecto MULTICS escribió una versión austera de MULTICS para un solo usuario; esta labor dio pie mas adelante para el desarrollo de UNIX , que se popularizo en el mundo académico, en las dependencias gubernamentales y muchas compañías.

Este al no ser de código abierto pronto su desarrollo se torno al caos ya que varias organizaciones iniciaron su propia versión o clon de este sistema para poder utilizarlo. Principalmente surgieron dos versiones SystemV de AT&T, y BSD de la Universidad de California Berkeley. El IEEE creo entonces un estándar para UNIX llamado POSIX, reconocido por la mayoría de las versiones actuales.

En 1987 surge MINIX una alternativa compacta a UNIX creado con fines educativos. El desea de contar con una versión de producción libre (no meramente educativa) de MINIX, Linus Trolvads escribió LINUX (LINUX Is Not UNIX) escrito en base a MINIX y que incluso reconocía varios de sus recursos como el sistema de archivos.

Cuarta generación
Con el desarrollo de los circuitos integrados a gran escala que contienen miles de transistores en cada centímetro cuadrado de silicio, surgió la era de la computadora personal. Este adelanto logró hacer que cada persona fuese capaz de tener su propia computadora.

En 10974 cuando intel presento si 8080, la primer CPU de ocho bits de propósito general, quería un sistema operativo para ese procesador. Primero se escribió los controladores para el disco flexible de ocho pulgadas y lo conectaron al 8080 con lo que nace la primer PC con disco. Después se escribió el primer sistema basado en disco llamado CP/M.

A principio de la década de 1980 IBM se puso en contacto con Bill Gates para usar bajo licencia su interprete de BASIC y se le consulto si sabia de algún sistema operativo. Gates los dirigío a ponerse en contacto con Digital Research dueños de CP/M pero estos se reusaron reunir con IBM, por lo que este regresa con Bill Gates para preguntarle si podia ofrecerles un sistema operativo.
Gates se percato que un fabricante local de computadora tenia un sistema aceptable llamado DOS (Disk Operating System) y lo compro; se dice que por 50,000 USD; contrata a uno de los desarrolladores de DOS para hacer mejorías que requería IBM para ofrecer paquetes DOS/BASIC. A esto lo rebautiza como MS-DOS (Microsoft Disk Operating System) y Bill Gates con su naciente empresa ofrece el sistema a los grandes fabricantes para ser incluido en su hardware. Contrario a la estrategia de Digital Research quien pensaba distribuirlo con los usuario finales uno por uno.

La primera versión de MS-DOS era mas bien primitiva, las posteriores consiguieron hacer funciones avanzadas, muchas de ellas tomadas de UNIX.
En estos momento los sistemas operativos interactuaban con el usuario mediante linea de comandos pero esto cambio gracias a investigaciones hechas en la década de 1970 cuando se desarrollo la GUI o interfaz gráfica de usuario. Provista de ventanas, iconos y ratón. Estas interfaces fueron adoptadas por Xerox. En algún momento Steve Jobs; fundador de Aple Computer, visito las instalaciones de Xerox y observo el GUI que de inmediato adopto para su computador LISA, pero que por el costo al mercado tan alto fue un fracaso. El mismo GUI fue instalado en un Aple Macintosh que era varias veces mas económica que la LISA y que gracias a ser tan intuitiva pronto gano gran popularidad.

Microsoft avanzo en el desarrollo de su MS-DOS mediante Windows, el cual corría encima de MS-DOS por lo que era mas un Shell que un sistema completo. Entre 1985 a 1995 Windows no fue mas que un entorno gráfico hasta que salio Windows 95 que solo ejecutaba a MS-DOS para arrancar y ehjecutar programas viejos. Windows 98 fue una versión modificada del 95 y que aún contenía mucho código ensamblador de Intel 16bits.

Posterior a Windows 98, viene Windows NT, que después fue rebautizado como Windows 2000 pero que no pudo eliminar por completo a MS-DOS, y no funciono como se esperaba. Después sale Windows ME, Antecesor de Windows XP. Este último mucho mas popular y con mayor permanencia en el mercado de 2001 a 2011. En 2007 Microsoft lanza Windows Vista, y en 2009 Windows 7.

Otro contendiente principal es UNIX que domino en las otras computadoras que no utilizan Intel, asi como en las estaciones de trabajo, en especial las que utilizan chips de alto desempeño (RISC). Estas tienen, en general, la potencia de computo de una micro computadora, aunque se dediquen a un solo usuario, por lo que es lógico que estén equipadas con un sistema operativo para micro computadoras.

Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década de 1980 ha sido el crecimiento de las redes de computadoras con sistemas operativos en red y sistemas operativos distribuidos. En un sistema operativo en red, los usuarios están consientes de máquinas remotas y pueden conectarse con ellas para copiar archivos. Cada máquina ejecuta su propio sistema local y tiene su propio usuario.

Por el contrario un sistema distribuido es aquel que aparece como un sistema tradicional de un solo procesador, aunque este compuesto por varios. En este los usuarios no deben ser cocientes del lugar donde se ejecute su programa o del lugar donde se encuentran sus archivos, esto es manejado de forma automática por el sistema operativo.

Unix es un sistema operativo portable multitarea y multiusuario desarrollado a principios de 1969 por un grupo de empleados de BELL LABORATORYS de AT&T.Este sistema nació después de que su creador Ken Thompson programo un juego llamado Space travel, pero noto que correrlo en una computadora de General Electric resulto ser demasiado costoso (79 USD por partida) por lo que reescribió el juego en lenguaje ensamblador para una DEC PDP 7. Este hecho junto con su experiencia en MULTICS lo animo a escribir UNIX.

No es hasta 1970 que se tiene la primer referencia oficial de UNIX como sistema operativo cuando consiguen implementar la herramienta de procesamiento de texto e integrarlo a una máquina PDP 11-20. En 1970 se reescribe UNIX pero esta vez en lenguaje C por lo que pudo ser fácilmente modificado para implementarse en otras máquinas y así se volvió portable.

Hacia 1991, un estudiante de ciencias de la computación de la Universidad de Helsinki, llamado Linus Torvalds desarrolló un núcleo para computadoras con arquitectura x86 de Intel que emulaba muchas de las funcionalidades de UNIX y lo lanzó en forma de código abierto en 1991, bajo el nombre de Linux. En 1992, el Proyecto GNU comenzó a utilizar el núcleo Linux junto a sus programas.

De UNIX se desprenden varias familias de sistemas operativos aparte de la de LINUX, como BSD, AIX, XENIX y a su ves de estas familas se desprenden otras como en el caso de LINUX donde podemos encontrar la familia Red Hat, Slackware, DEBIAN entre otras. Todas con sus distintas distribuciones libres y comerciales.

El 24 de enero de 1984, Apple Computer Inc. (ahora Apple Inc.) introdujo la computadora personal Macintosh, con el modelo Macintosh 128K, el cual incluía el sistema operativo Mac OS, conocido en esa época como System Software (Software de sistema).

A la Macintosh a menudo se le atribuye la popularización de las interfaces gráficas de usuario. El Mac OS ha sido pre-instalado en casi todos los computadores Macintosh vendidos. El sistema operativo también se vende en forma separada en las tiendas de Apple y en línea. El Mac OS original estaba basado parcialmente en el Lisa OS, previamente comercializado por Apple para la computadora Lisa en 1983 y, como parte de un acuerdo que permitía a Xerox comprar acciones de Apple a un precio favorable, también usaba conceptos del Xerox PARC Xerox Alto, el cual Steve Jobs y otros miembros del equipo Macintosh habían visto.

En un principio Mac OX fue escrito y llamado como Mac Os Clasic de código propio de Aple Computer, pero es en la versión Mac Os X que se decidió en desarrollar basados basándose en Mac Os Clasic, NextSTEP y UNIX
Varios fabricantes de computadores a través de los años han hecho clones de Macintosh capaces de ejecutar Mac OS, en particular Power Computing, UMAX y Motorola. Estas máquinas ejecutaron varias versiones del sistema operativo clásico de Mac. En 1997 Steve Jobs cerró el programa de licencia clon al regresar a Apple.

En 2008 el fabricante estadounidense Psystar Corporation anunció un ordenador de bajo coste (499 USD) que ejecutaba Mac OS X 10.5 Leopard. Amenazados por las batallas legales, Psystar denominó a su sistema OpenMac y posteriormente Open Computer. Actualmente Apple sigue en litigio con esta compañía a la que pretende hacer pagar por daños y perjuicios, por cada clon vendido y por los costes de la batalla legal.

En 2009 el fabricante HyperMegaNet UG lanzó un ordenador "Macintosh Compatible" bajo la marca comercial PearC basándose en el hecho de que la Licencia de software no puede aceptarse al no poder ser leída antes de adquirir el producto puesto que se encuentra dentro de la caja en la que viene el ordenador por lo que la parte que apela a la no instalación de OS X en hardware que no sea Apple es nula a todos los efectos, al menos en Alemania.

Clasificación de los sistemas operativos

Según administración de tareas
  • Monotarea: Solamente permite ejecutar un proceso (aparte de los procesos del propio SO) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará haciéndolo hasta su finalización y/o interrupción.
  • Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de SO. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente.
Según su administración de usuarios
  • Monousuario: Si sólo permite ejecutar los programas de un usuario al mismo tiempo.
  • Multiusuario: Si permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.
Según el manejo de recursos
  • Centralizado: Si permite usar los recursos de una sola computadora.
  • Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos...) de más de una computadora al mismo tiempo.
Según el tipo de su núcleo
  • Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas.
  • Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.4
  • Los núcleos híbridos (micronúcleos modificados) son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente.
  • Los exonúcleos no facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.
Referencias
  • Mchoes,F.(2001).Sistemas operativos (Tercera edición) México. Thomson
  • Tanembaun A.(2003). Sistemas operativos modernos. México. Pearson Educación.
  • Sistema operativo. (2012, 15 de mayo). Wikipedia, La enciclopedia libre. Fecha de consulta: 00:32, mayo 18, 2012 desde http://es.wikipedia.org/w/index.php?title=Sistema_operativo&oldid=56185783.
  • Núcleo (informática). (2012, 11 de abril). Wikipedia, La enciclopedia libre. Fecha de consulta: 00:35, mayo 18, 2012 desde http://es.wikipedia.org/w/index.php?title=N%C3%BAcleo_(inform%C3%A1tica)&oldid=55299756.
  • Mac OS. (2012, 10 de mayo). Wikipedia, La enciclopedia libre. Fecha de consulta: 00:40, mayo 18, 2012 desde http://es.wikipedia.org/w/index.php?title=Mac_OS&oldid=56063564.