LENGUAJE ENSAMBLADOR

LENGUAJE ENSAMBLADOR El lenguaje ensamblador, o assembler (assembly language en inglés), es un lenguaje de programación

Views 188 Downloads 8 File size 501KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

LENGUAJE ENSAMBLADOR El lenguaje ensamblador, o assembler (assembly language en inglés), es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la de máquina del Intel 8088. El código de representación más directa del Lenguaje máquina en hexadecimal se resalta en rojo, el código máquina específico para equivalente en lenguaje ensamblador en magenta, y las cada arquitectura legible por un direcciones de memoria donde se encuentra el código, programador. Esta representación en azul. Abajo se ve un texto en hexadecimal y ASCII. es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles. Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. El ensamblador realiza una traducción más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a las instrucciones y datos de máquina. Esto está en contraste con los lenguajes de alto nivel, en los cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina. Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuración. Particularmente, la mayoría de los ensambladores modernos incluyen una facilidad de macro (descrita más abajo), y se llaman macro ensambladores. Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware, alto rendimiento, o un uso de recursos controlado y reducido. También es utilizado en el desarrollo de controladores de dispositivo (en inglés, device drivers) y en el desarrollo de sistemas operativos, debido a la necesidad del acceso directo a las instrucciones de la máquina. Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados.

CARACTERÍSTICAS 









El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel. El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra máquina distinta. Al cambiar a una máquina con arquitectura diferente, generalmente es necesario reescribirlo completamente. Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho más rápidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel. Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código difíciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no están disponibles en los lenguajes de alto nivel. También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecución.

EJEMPLOS Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables por un microprocesador. Por ejemplo, en el lenguaje ensamblador para un procesador x86: La sentencia 

MOV AL, 61h

Asigna el valor hexadecimal 61 (97 decimal) al registro "AL". El programa ensamblador lee la sentencia de arriba y produce su equivalente binario en lenguaje de máquina 

Binario: 10110000 01100001 (hexadecimal: B61)

El mnemónico MOV es un código de operación u "opcode". El opcode es seguido por una lista de argumentos o parámetros, completando una típica instrucción de ensamblador. En el ejemplo, AL es un registro de 8 bits del procesador, al cual se le asignará el valor hexadecimal 61 especificado.

El código de máquina generado por el ensamblador consiste de 2 bytes. El primer byte contiene empaquetado la instrucción MOV y el código del registro hacia donde se va a mover el dato:

En el segundo byte se especifica el número 61h, escrito en binario como 01100001, que se asignará al registro AL, quedando la sentencia ejecutable como: 

10110000 01100001

La cual puede ser entendida y ejecutada directamente por el procesador. DISEÑO DEL LENGUAJE ELEMENTOS BÁSICOS Hay un grado grande de diversidad en la manera en que los autores de los ensambladores categorizan las sentencias y en la nomenclatura que usan. En particular, algunos describen cualquier cosa como pseudo-operación (pseudoOp), con excepción del mnemónico de máquina o del mnemónico extendido. Un típico lenguaje ensamblador consiste en 3 tipos de sentencias de instrucción que son usadas para definir las operaciones del programa:   

Mnemónicos de opcode Secciones de datos Directivas de ensamblador

MNEMÓNICOS DE OPCODE Y MNEMÓNICOS EXTENDIDOS A diferencia de las instrucciones (sentencias) de los lenguajes de alto nivel, instrucciones en el lenguaje ensamblador son generalmente muy simples. Generalmente, una mnemónico es un nombre simbólico para una sola instrucción en lenguaje de máquina ejecutable (un opcode), y hay por lo menos un mnemónico de opcode definido para cada instrucción en lenguaje de máquina. Cada instrucción consiste típicamente en una operación u opcode más cero o más operandos. La mayoría de las instrucciones refieren a un solo valor, o a un par de valores. Los operandos pueden ser inmediatos (típicamente valores de un byte, codificados en la propia instrucción), registros especificados en la instrucción, implícitos o las direcciones de los datos localizados en otra parte de la memoria. Esto está determinado por la arquitectura subyacente del procesador, el ensamblador simplemente refleja cómo trabaja esta arquitectura. Los mnemónicos extendidos son frecuentemente usados para especificar una

combinación de un opcode con un operando específico, ej, el ensamblador del System/360 usa a B como un mnemónico extendido para el BC con una máscara de 15 y NOP al BC con una máscara de 0. Los mnemónicos extendidos son frecuentemente usados para soportar usos especializados de instrucciones, a menudo para propósitos no obvios con respecto al nombre de la instrucción. Por ejemplo, muchos CPU no tienen una instrucción explícita de NOP (No Operación), pero tienen instrucciones que puedan ser usadas para tal propósito. En el CPU 8086, la instrucción XCHG AX,AX (intercambia el registro AX consigo mismo) es usada para el NOP, con NOP siendo un pseudo-opcode para codificar la instrucción XCHG AX,AX. Algunos desensambladores reconocen esto y decodificarán la instrucción XCHG AX,AX como NOP. Similarmente, los ensambladores de IBM para el System/360 usan los mnemónicos extendidos NOP y NOPR con las máscaras cero para BC y BCR. Algunos ensambladores también soportan simples macroinstrucciones incorporadas que generan dos o más instrucciones de máquina. Por ejemplo, con algunos ensambladores para el Z80, la instrucción LD HL, BC genera las instrucciones LD L, C LD H, B. LD HL, BC es un pseudo-opcode, que en este caso simula ser una instrucción de 16 bits, cuando se expande se producen dos instrucciones de 8 bits que equivalen a la simulada de 16 bits. SECCIONES DE DATOS Hay instrucciones usadas para definir elementos de datos para manejar datos y variables. Definen el tipo de dato, la longitud y la alineación de los datos. Estas instrucciones también pueden definir si los datos están disponibles para programas exteriores (programas ensamblados separadamente) o solamente para el programa en el cual la sección de datos está definida. Algunos ensambladores clasifican esta instrucción DIRECTIVAS DEL ENSAMBLADOR Las directivas del ensamblador, también llamadas los pseudo opcodes, pseudooperaciones o pseudo-ops, son instrucciones que son ejecutadas por un ensamblador en el tiempo de ensamblado, no por un CPU en el tiempo de ejecución. Pueden hacer al ensamblado del programa dependiente de parámetros entrados por un programador, de modo que un programa pueda ser ensamblado de diferentes maneras, quizás para diversas aplicaciones. También pueden ser usadas para manipular la presentación de un programa para hacerlo más fácil leer y mantener.

Por ejemplo, las directivas pudieran ser usadas para reservar áreas de almacenamiento y opcionalmente su para asignar su contenido inicial. Los nombres de las directivas a menudo comienzan con un punto para distinguirlas de las instrucciones de máquina. Los ensambladores simbólicos le permiten a los programadores asociar nombres arbitrarios (etiquetas o símbolos) a posiciones de memoria. Usualmente, cada constante y variable tiene un nombre para que las instrucciones pueden referir a esas ubicaciones por nombre, así promoviendo el código autodocumentado. En el código ejecutable, el nombre de cada subprograma es asociado a su punto de entrada, así que cualquier llamada a un subprograma puede usar su nombre. Dentro de subprogramas, a los destinos GOTO se le dan etiquetas. Algunos ensambladores soportan símbolos locales que son léxicamente distintos de los símbolos normales (ej, el uso de "10$" como un destino GOTO). La mayoría de los ensambladores proporcionan un manejo flexible de símbolos, permitiendo a los programadores manejar diversos espacios de nombres, calcular automáticamente offsets dentro de estructuras de datos, y asignar etiquetas que refieren a valores literales o al resultado de cálculos simples realizados por el ensamblador. Las etiquetas también pueden ser usadas para inicializar constantes y variables con direcciones relocalizables. Los lenguajes ensambladores, como la mayoría de los otros lenguajes de computador, permiten que comentarios sean añadidos al código fuente, que son ignorados por el programa ensamblador. El buen uso de los comentarios es aún más importante con código ensamblador que con lenguajes de alto nivel, pues el significado y el propósito de una secuencia de instrucciones es más duro de descifrar a partir del código en sí mismo. El uso sabio de estas facilidades puede simplificar grandemente los problemas de codificar y mantener el código de bajo nivel. El código fuente de lenguaje ensamblador crudo generado por compiladores o desensambladores - código sin ningún comentario, ni símbolos con algún sentido, ni definiciones de datos - es muy difícil de leer cuando deben hacerse cambios. MACROS Muchos ensambladores soportan macros predefinidas, y otras soportan macros definidas (y repetidamente redefinibles) por el programador que implican secuencias de líneas del texto en las cuales las variables y las constantes están empotradas. Esta secuencia de líneas de texto puede incluir opcodes o directivas. Una vez una macro se define, su nombre se puede usar en lugar de un mnemónico. Cuando el ensamblador procesa tal sentencia, reemplaza la sentencia por las líneas del texto asociadas a esa macro, entonces las procesa como si hubieran existido en el archivo del código fuente original (incluyendo, en algunos ensambladores, la expansión de cualquier macro que exista en el texto de reemplazo).

Puesto que las macros pueden tener nombres cortos pero se expanden a varias, o de hecho, muchas líneas de código, pueden usarse para hacer que los programas en lenguaje ensamblador parezcan ser mucho más cortos, requiriendo menos líneas de código fuente, como sucede con los lenguajes de alto nivel. También se pueden usar para añadir niveles de estructura más altos a los programas ensamblador; opcionalmente introducen código de depuración empotrado vía parámetros y otras características similares. Muchos ensambladores tienen macros incorporadas (o predefinidas) para las llamadas de sistema y otras secuencias especiales de código, tales como la generación y el almacenamiento de los datos realizados a través de avanzadas operaciones bitwise y booleanas usadas en juegos, software de seguridad, gestión de datos y criptografía. Los macro ensambladores a menudo permiten a las macros tomar parámetros. Algunos ensambladores incluyen lenguajes macro muy sofisticados, incorporando elementos de lenguajes de alto nivel tales como parámetros opcionales, variables simbólicas, condiciones, manipulaciones de strings, operaciones aritméticas, todos usables durante la ejecución de una macro dada, y permitiendo a las macros guardar el contexto o intercambiar información. Así una macro puede generar un gran número de instrucciones o definiciones de datos en lenguaje ensamblador, basadas en los argumentos de la macro. Esto se podría usar para generar, por ejemplo, estructuras de datos de estilo de récord o bucles "desenrollados", o podría generar algoritmos enteros basados en parámetros complejos. Una organización, usando lenguaje ensamblador, que ha sido fuertemente extendido usando tal suite de macros, puede ser considerada que se está trabajando en un lenguaje de alto nivel, puesto que tales programadores no están trabajando con los elementos conceptuales de más bajo nivel del computador. Las macros se usaron para adaptar sistemas de software de gran escala para clientes específicos en la era del mainframe, y también se usaron por el personal del cliente para satisfacer las necesidades de sus patrones haciendo versiones específicas de los sistemas operativos del fabricante. Esto fue hecho, por ejemplo, por los programadores de sistema que trabajaban con el Conversational Monitor System / Virtual Machine (CMS/VM) de IBM y con los complementos real time transaction processing de IBM, CICS, Customer Information Control System, e ACP/TPF, el airline/financial system que comenzó en los años 1970 y todavía corre con muchos sistemas de reservaciones computarizados (CRS) y sistemas de tarjeta de crédito de hoy. También es posible usar solamente las habilidades de procesamiento de macros de un ensamblador para generar código escrito en lenguajes completamente diferentes. Por ejemplo, para generar una versión de un programa en COBOL usando un programa macro ensamblador puro conteniendo líneas de código

COBOL dentro de operadores de tiempo ensamblaje dando instrucciones al ensamblador para generar código arbitrario. Esto era porque, como en los años 1970 fue observado, el concepto de "procesamiento de macro" es independiente del concepto de "ensamblaje", siendo el anterior, en términos modernos, más un procesamiento de textos, que una generación de código objeto. El concepto de procesamiento de macro apareció, y aparece, en el lenguaje de programación C, que soporta "instrucciones de preprocesador" de fijar variables, y hace pruebas condicionales en sus valores. Observe que a diferencia de ciertos macroprocesadores previos dentro de los ensambladores, el preprocesador de C no es Turing-completo porque carecía de la capacidad de bucle o go to, esto último permitiendo a los programas hacer bucles. A pesar del poder del procesamiento macro, éste dejó de usarse en muchos lenguajes de alto nivel (una importante excepción es C/C++) mientras que seguía siendo perenne para los ensambladores. Esto era porque muchos programadores estaban bastante confundidos por la sustitución de parámetros macro y no distinguían la diferencia entre procesamiento macro, el ensamblaje y la ejecución. La sustitución de parámetros macro es estrictamente por nombre: en el tiempo de procesamiento macro, el valor de un parámetro es sustituido textualmente por su nombre. La clase más famosa de Error de software resultantes era el uso de un parámetro que en sí mismo era una expresión y no un nombre primario cuando el escritor macro esperaba un nombre. En el macro: foo: macro a load a*b la intención era que la rutina que llama proporcionaría el nombre de una variable, y la variable o constante "global b" sería usada para multiplicar a "a". Si foo se llama con el parámetro a-c, ocurre la expansión macro load a-c*b. Para evitar cualquier posible ambigüedad, los usuarios de macro procesadores pueden encerrar en paréntesis los parámetros formales dentro de las definiciones de macros, o las rutinas que llaman pueden envolver en paréntesis los parámetos de entrada. Así, el macro correcto, con los paréntesis, sería: foo: macro a load (a)*b y su expansión, daría como resultado: load (a-c)*b El PL/I y el C/C++ ofrecen macros, pero la esta facilidad solo puede manipular texto. Por otra parte, los lenguajes homoicónicos, tales como Lisp, Prolog, y Forth, retienen el poder de los macros de lenguaje ensamblador porque pueden manipular su propio código como datos.

SOPORTE PARA PROGRAMACIÓN ESTRUCTURADA Algunos ensambladores han incorporado elementos de programación estructurada para codificar el flujo de la ejecución. El ejemplo más temprano de este acercamiento estaba en el Concept-14 macro set, originalmente propuesto por el Dr. H.D. Mills (marzo de 1970), e implementado por Marvin Kessler en la Federal Systems Division de IBM, que extendió el macro ensamblador del S/360 con bloques de control de flujo IF/ELSE/ENDIF y similares. Esto era una manera de reducir o eliminar el uso de operaciones GOTO en el código en lenguaje ensamblador, uno de los principales factores que causaban código espagueti en el lenguaje ensamblador. Este acercamiento fue ampliamente aceptado a principios de los años 1980 (los últimos días del uso de lenguaje ensamblador en gran escala). Un curioso diseño fue A-natural, un ensamblador "orientado a la corriente" (stream-oriented) para los procesadores 8080/Z80 de Whitesmiths Ltd. (desarrolladores del sistema operativo Idris, similar al Unix), y lo que fue reportado como el primer compilador C comercial). El lenguaje fue clasificado como un ensamblador, porque trabajaba con elementos de máquina crudos tales como opcodes, registros, y referencias de memoria; pero incorporaba una sintaxis de expresión para indicar el orden de ejecución. Los paréntesis y otros símbolos especiales, junto con construcciones de programación estructurada orientadas a bloques, controlaban la secuencia de las instrucciones generadas. A-natural fue construido como el lenguaje objeto de un compilador C, en vez de la codificación manual, pero su sintaxis lógica ganó algunos seguidores. Ha habido poca demanda aparente para ensambladores más sofisticados debido a la declinación del desarrollo de lenguaje ensamblador de larga escala. A pesar de eso, todavía se están desarrollando y aplicando en casos donde las limitaciones de recursos o las particularidades en la arquitectura de sistema objetivo previenen el efectivo uso de lenguajes de alto nivel.

SISTEMAS OPERATIVOS CLIENTE Y SERVIDOR CLIENTE El cliente es una aplicación informática o un ordenador que consume un servicio remoto en otro ordenador conocido como servidor, normalmente a través de una red de telecomunicaciones. El término se usó inicialmente para los llamados terminales tontos, dispositivos que no eran capaces de ejecutar programas por sí mismos, pero podían conectarse e interactuar con computadores remotos por medio de una red y dejar que éste realizase todas las operaciones requeridas, mostrando luego los resultados al usuario. Se utilizaban sobre todo porque su costo en esos momentos era mucho menor que el de un computador. Estos terminales tontos eran clientes de un computador mainframe por medio del tiempo compartido. Actualmente se suele utilizar para referirse a programas que requieren específicamente una conexión a otro programa, al que se denomina servidor y que suele estar en otra máquina. Ya no se utilizan por criterios de costo, sino para obtener datos externos (por ejemplo páginas web, información bursátil o bases de datos), interactuar con otros usuarios a través de un gestor central (como por ejemplo los protocolos BitTorrent o IRC), compartir información con otros usuarios (servidores de archivos y otras aplicaciones Groupware) o utilizar recursos de los que no se dispone en la máquina local (por ejemplo impresión) Uno de los clientes más utilizados, sobre todo por su versatilidad, es el navegador web. Muchos servidores son capaces de ofrecer sus servicios a través de un navegador web en lugar de requerir la instalación de un programa específico. TIPOS Existen varios tipos de clientes, dependiendo de la cantidad de tareas que realice el cliente en comparación con el servidor. CLIENTE PESADO Artículo principal: Cliente pesado Un cliente pesado puede almacenar datos locales, y tiene la capacidad de procesar datos. CLIENTE LIVIANO Artículo principal: Cliente liviano Un cliente liviano no puede almacenar datos locales, ni tiene la capacidad de procesar datos.

SISTEMAS OPERATIVOS CLIENTE WINDOWS WINDOWS 3.X Windows 3.0 fue desarrollado en 1989, cuando un grupo de programadores de Microsoft, de forma independiente decidió desarrollar un nuevo Windows en modo protegido, como un experimento. Se armó un prototipo en bruto y fue presentado a los ejecutivos de la empresa, quienes se impresionaron lo suficiente para su aprobación como proyecto oficial.       

Entre las principales características de Windows 3.0 se encuentran: Modo estándar (286), con soporte amplio de memoria (large memory). Modo Mejorado 386, con más capacidad de memoria y soporte de múltiples sesiones DOS. Se agregó el Administrador de Programas y de Archivos Soporte para Red Soporte para profundidades de color de hasta 16. Soporte para casillas, jerarquías de menú y los archivos INI privados para cada aplicación.

WINDOWS 95 Fue un sistema operativo con interfaz gráfica de usuario híbrido de entre 16 y 32 bits. Fue lanzado al mercado el 24 de agosto de 1995 por la empresa de software Microsoft con notable éxito de ventas. Durante su desarrollo se conoció como Windows 4 o por el nombre clave Chicago. Sustituyó a MS-DOS como sistema operativo y a Windows 3.x como entorno gráfico. Se encuadra dentro de la familia de sistemas operativos de Microsoft denominada Windows 9x. En la versión OSR2 (OEM Service Release 2) incorporó el sistema de archivos FAT32, además del primer atisbo del entonces novedoso USB. WINDOWS 98 El 25 de junio de 1998 llegó Windows 98, que era una revisión mejor de Windows 95. Incluía nuevos controladores de hardware y el sistema de ficheros FAT32 que soportaba particiones mayores a los 2GB permitidos por Windows 95. En 1999 Microsoft sacó al mercado Windows 98 Second Edition, cuya característica más notable era la capacidad de compartir entre varios equipos una conexión a Internet a través de una sola línea telefónica y algunas mejoras al Windows 98 original. WINDOWS 2000

En este sistema operativo se pueden encontrar grandes mejoras respecto a su versión anterior, entre estas se encuentran: abundancia de herramientas de conectividad, madurez de la interfaz, buen reconocimiento del hardware y estabilidad. Se añade a esto el soporte de nuevas tecnologías, las mejoras en sus funciones de informática remota, aplicaciones centralizadas de servicio y reinicios obligatorios drásticamente reducidos. Muchas de las mejoras en Windows 2000 son sutiles, pero en conjunto crean una mejor experiencia en el uso de un ordenador.

WINDOWS XP Cuyo nombre clave inicial fue Whistler fue una versión de Microsoft Windows, línea de sistemas operativos desarrollado por Microsoft. Lanzado al mercado el 25 de octubre de 2001, en diciembre de 2013, tenía una cuota de mercado de 500 millones de ordenadores. Las letras "XP" provienen de la palabra eXPeriencia (eXPerience en inglés). Características: Ambiente gráfico más agradable que el de sus predecesores. Secuencias más rápidas de inicio y de hibernación. Capacidad del sistema operativo de desconectar un dispositivo externo, de instalar nuevas aplicaciones y controladores sin necesidad de reiniciar el sistema. Una nueva interfaz de uso más fácil, incluyendo herramientas para el desarrollo de temas de escritorio. Uso de varias cuentas, lo que permite que un usuario guarde el estado actual y aplicaciones abiertos en su escritorio y permita que otro usuario abra una sesión sin perder esa información. ClearType, diseñado para mejorar legibilidad del texto encendido en pantallas de cristal líquido (LCD) y monitores similares CRT de Pantalla Plana. Escritorio Remoto, que permite a los usuarios abrir una sesión con una computadora que funciona con Windows XP a través de una red o Internet, teniendo acceso a sus usos, archivos, impresoras, y dispositivos. Soporte para la mayoría de módems establecimiento de una red FireWire.

ADSL

y

wireless,

así

como

el

Interfaz Windows XP ofrece una nueva interfaz gráfica, llamada Luna. El menú Inicio y la capacidad de indexación de los directorios de Windows fueron reajustados, y otros efectos visuales fueron agregados, incluyendo:

Colores brillantes. Botón "Cerrar" en forma de "Cruz" de color Rojo. Botones estándar de colores en las barras de herramientas de Windows e Internet Explorer. Un rectángulo azul translúcido en la selección de los archivos. Un gráfico en los iconos de la carpeta, indicando el tipo de información que se almacena. Sombras para las etiquetas del icono en el tablero del escritorio. Capacidad de agrupar aplicaciones similares en la barra de tareas. Capacidad para prevenir cambios accidentales. Resalta de color Naranja claro programas recién instalados en el menú de inicio. Sombras bajo los menús en (Windows 2000 solo lo tenía bajo el puntero del ratón, pero no en las ventanas o menús). Al igual que en los anteriores Windows (Windows 98, Windows ME, Windows 2000), el Explorador de Windows incluye la vista preliminar (en miniatura) de archivos Web (*.htm, *.html) en los detalles en la barra de tareas comunes en las carpetas y en la vista en miniatura, ya sean páginas Web guardadas localmente o accesos directos a Internet. Windows XP analiza el impacto del funcionamiento de efectos visuales y mediante esto determina si debe o no permitirlos, para evitar que la nueva funcionalidad consuma recursos en forma excesiva. Los usuarios pueden modificar más estos ajustes para requisitos particulares. Algunos efectos, tales como mezcla alfa o (transparencia), son dirigidos enteramente a muchas tarjetas de vídeo más nuevas. Sin embargo, si la tarjeta gráfica no es capaz, el funcionamiento puede verse reducido substancialmente y Microsoft recomienda la característica de apagado manualmente. Windows XP agrega la capacidad para el uso de “estilos visuales” para cambiar la interfaz gráfica. Sin embargo, los estilos visuales son firmados mediante criptografía por Microsoft para funcionar. El estilo Luna es el nombre del nuevo estilo visual por defecto de Windows XP para máquinas con más que 64 MB de RAM. Luna se refiere solamente a un estilo visual particular, no a todas las nuevas características de la nueva interfaz de usuario de Windows XP en su totalidad. Para utilizar estilos visuales sin firmar, muchos usuarios usan software como por ejemplo StyleXP de TGTSoft o WindowBlinds de Stardock. Algunos usuarios “modifican” el archivo de uxtheme.dll que restringe la capacidad de utilizar estilos visuales, creado por el público en general o el usuario. Aún así, muchos desconocen que Microsoft creó un par de temas “oficiales” que no fueron incluidos con las actualizaciones ni con los SP: Zune y Royale/Royale Noir). Estos dos temas están firmados por

Microsoft y se pueden utilizar sin necesidad de modificar ningún archivo ni instalar software complementario. El papel tapiz por defecto, es una fotografía.png de un paisaje en valle de Napa (California), con colinas verdes y un cielo azul con estratocumulos y nubes cirros. Existen varias utilidades de terceros que proporcionan centenares de diversos estilos visuales. Además, Microsoft creó el tema llamado "Energy Blue", que fue incluido con la edición Media Center 2005 de Windows XP y también fue lanzado para otras versiones de Windows XP. El tema clásico de las ventanas es extensamente popular (debido a la familiaridad con las versiones anteriores de Windows como Windows 98 y Windows ME.), no obstante las ventanas “clásicas” utilizan la misma interfaz que el otro tema estándar de Windows XP y no afectan el funcionamiento. WINDOWS VISTA Es una versión de Microsoft Windows, línea de sistemas operativos desarrollada por Microsoft. Esta versión se enfoca para ser utilizada en equipos de escritorio en hogares y oficinas, equipos portátiles, tabletas y equipos media center. El proceso de desarrollo terminó el 8 de noviembre de 2006 y en los siguientes tres meses fue entregado a los fabricantes de hardware y software, clientes de negocios y canales de distribución. El 30 de enero de 2007 fue lanzado mundialmente y fue puesto a disposición para ser comprado y descargado desde el sitio web de Microsoft. La aparición de Windows Vista viene más de cinco años después de la introducción de Windows XP, es decir, el tiempo más largo entre dos versiones consecutivas de Microsoft Windows. La campaña de lanzamiento fue incluso más costosa que la de Windows 95, ocurrida el 25 de agosto de 1995. WINDOWS 7 Es una versión de Microsoft Windows, línea de sistemas operativos producida por Microsoft Corporation. Esta versión está diseñada para uso en PC, incluyendo equipos de escritorio en hogares y oficinas, equipos portátiles, tablet PC, netbooks y equipos media center.2 El desarrollo de Windows 7 se completó el 22 de julio de 2009, siendo entonces confirmada su fecha de venta oficial para el 22 de octubre de 2009 junto a su equivalente para servidores Windows Server 2008 R2.3 Características Multitáctil El 27 de mayo de 2008, Steve Ballmer y Bill Gates, en la conferencia «D6: All Things Digital», dieron a conocer la nueva interfaz multitáctil, y dijeron que era «sólo una pequeña parte» de lo que vendría con Windows 7. Más tarde, Julie Larson Green, vicepresidente corporativa, mostró posibles usos, como hacer

dibujos en Paint, agrandar o reducir fotos y recorrer un mapa en Internet, arrastrar y abrir elementos, simplemente con toques en la pantalla. Compatibilidad Las versiones cliente de Windows 7 se lanzaron en versiones para arquitectura 32 bits y 64 bits en las ediciones Home Basic, Home Premium, Professional y Ultimate. No obstante, las versiones servidor de este producto fueron lanzadas exclusivamente para arquitectura 64 bits. Esto significa que las versiones cliente de 32 bits aún soportan programas Windows 16 bits y MS-DOS. Y las versiones 64 bits (incluidas todas las versiones de servidor) soportan programas tanto de 32 como de 64 bits.

SISTEMAS OPERATIVOS PARA CLIENTE LINUX UBUNTU La distribución de Linux más popular y ampliamente utilizada se llama "Ubuntu". Ubuntu está destinado a llevar Linux a los usuarios de computadoras casuales y es comparable en características al sistema operativo Windows de Microsoft. Se estima que el 30 por ciento de todos los usuarios de Linux utilizan la distribución Ubuntu. KUBUNTU Es similar a Ubuntu en funcionamiento. La principal diferencia es que Kubuntu utiliza un tipo de sistema de archivos diferente al de Ubuntu. Ambos realizan las mismas funciones básicas, y ambos son de fácil acceso para los usuarios de computadoras casuales. DEBIAN Es una versión más complicada del sistema operativo Linux. Está basado en las distribuciones Ubuntu y Kubuntu, aunque no es tan accesible para los usuarios de computadoras casuales. Debian tiene la capacidad de funcionar como un sistema operativo de escritorio estándar, y también como un sistema operativo para ejecutar equipos servidores. FEDORA Es otro ejemplo de una distribución Linux. En apariencia, el escritorio y las operaciones estándar de Fedora son similares a las de Ubuntu y Kubuntu. Fedora se utiliza principalmente para computadoras antiguas debido a sus limitados requisitos de sistema. LINUX MINT Es una distribución Linux que fue modelada después de Ubuntu. A diferencia de Ubuntu, que tiene una funcionalidad limitada cuando se instala por primera vez,

y requiere que los usuarios elijan qué aplicaciones instalar en función de sus necesidades, el enfoque de Linux Mint es proporcionar todos los programas y controladores que un usuario podría necesitar inmediatamente después de la instalación.

SERVIDOR Un servidor es una aplicación en ejecución (software) capaz de atender las peticiones de un cliente y devolverle una respuesta en concordancia. Los servidores se pueden ejecutar en cualquier tipo de computadora, incluso en computadoras dedicadas a las cuales se les conoce individualmente como "el servidor". En la mayoría de los casos una misma computadora puede proveer múltiples servicios y tener varios servidores en funcionamiento. La ventaja de montar un servidor en computadoras dedicadas es la seguridad. Por esta razón la mayoría de los servidores son procesos daemon diseñados de forma que puedan funcionar en computadoras de propósito específico. Los servidores operan a través de una arquitectura cliente-servidor. Los servidores son programas de computadora en ejecución que atienden las peticiones de otros programas, los clientes. Por tanto, el servidor realiza otras tareas para beneficio de los clientes. Ofrece a los clientes la posibilidad de compartir datos, información y recursos de hardware y software. Los clientes usualmente se conectan al servidor a través de la red pero también pueden acceder a él a través de la computadora donde está funcionando. En el contexto de redes Internet Protocol (IP), un servidor es un programa que opera como oyente de un socket. Comúnmente los servidores proveen servicios esenciales dentro de una red, ya sea para usuarios privados dentro de una organización o compañía, o para usuarios públicos a través de Internet. Los tipos de servidores más comunes son servidor de base de datos, servidor de archivos, servidor de correo, servidor de impresión, servidor web, servidor de juego, y servidor de aplicaciones. Un gran número de sistemas usa el modelo de red cliente-servidor, entre ellos los sitios web y los servicios de correo. Un modelo alternativo, el modelo red peer-to-peer permite a todas las computadoras conectadas actuar como clientes o servidores acorde a las necesidades. USO El término servidor es ampliamente utilizado en el campo de las tecnologías de la información. A pesar de la amplia disponibilidad de productos etiquetados como productos de servidores (tales como versiones de hardware, software y OS diseñadas para servidores), en teoría, cualquier proceso computacional que comparta un recurso con uno o más procesos clientes es un servidor. Tomemos como ejemplo la acción de compartir ficheros. Mientras la existencia de ficheros

dentro de una computadora no la clasifica como un servidor, el mecanismo del sistema operativo que comparte estos ficheros a los clientes si es un servidor. De manera similar consideremos una aplicación web servidor (como por ejemplo el servidor multiplataforma "Apache"). Este servidor web puede en cualquier tipo de computadora ejecutarse en cualquier tipo de computadora que cumpla con los requerimientos mínimos. Por ejemplo, mientras una laptop o computadora personal usualmente no son consideradas como servidores, en ciertos casos (como el anterior) pueden cumplir el rol de uno y por lo tanto ser denominadas servidores. En este caso es el rol de la computadora el que la coloca en la categoría de servidor. En el sentido del hardware, la palabra servidor normalmente etiqueta modelos de computadora diseñados para hospedar un conjunto de aplicaciones que tiene gran demanda dentro de una red. En esta configuración cliente-servidor, uno o más equipos, lo mismo una computadora que una aplicación informática, comparten información entre ellos de forma que uno actúa como host de los otros. Casi todas las computadoras personales pueden actuar como un servidor, pero un servidor dedicado tendrá cualidades más adecuadas para un ambiente de producción. Entre estas cualidades se pueden mencionar CPU más rápidas, RAM mejoradas para alto desempeño, y mayores capacidades de almacenamiento en forma de múltiples discos duros. Los servidores también cuentan con otras cualidades como confiabilidad, disponibilidad y utilidad (RAS) y tolerancia a fallos, esta última en forma de redundancia en el número de fuentes, almacenamiento (RAID), y conexiones de red. Los servidores se volvieron comunes a principios de 1990 en la medida en que los negocios comenzaron a utilizar computadoras personales para brindar servicios que anteriormente se alojaban en mainframes o en microcomputadoras. Los primero servidores de archivos contaban con múltiples torres de CD, utilizados para alojar grandes aplicaciones de bases de datos.[cita requerida] Entre 1990 y el 2000 el aumento en el uso de hardware específico marco el advenimiento aplicaciones de servidor autosuficientes. Uno de estas aplicaciones bien conocidas es el Google Search Appliance, que combina hardware y software en un paquete out-of-the-box packaging. Productos similares fueron el Cobalt Qube y el RaQ. Ejemplos más sencillos de dichos equipos incluyen switches, routers, gateways, y servidores de impresión, los cuales son fácilmente utilizables a través de una configuración plug-and-play. Los sistemas operativos modernos como Microsoft Windows o las distribuciones de Linux parecen haber sido diseñados siguiendo una arquitectura clienteservidor. Estos sistemas operativos se abstraen del hardware, permitiendo a una gran variedad de software trabajar con componentes de la computadora. De

alguna forma, el sistema operativo puede ser visto como un servidor de hardware al software, pues excepto en los lenguajes de programación de bajo nivel el software debe interactuar con el hardware a través de un API. Estos sistemas operativos son capaces de ejecutar programas en un segundo plano los cuales son llamados servicios o daemons. Estos programas, entre los que se encuentra el Servidor HTTP Apache previamente mencionado, pueden permanecer en un estado dormido hasta que sea necesario su uso. Como cualquier software que brinde servicios puede ser llamado servidor, las computadoras personales modernas se pueden ver como bosques de aplicaciones clientes y servidores operando en paralelo. El propio Internet es un bosque de servidores y clientes. Solo el hecho de solicitar una página web de un servidor a pocos kilómetros de distancia conlleva a satisfacer una pila de protocolos de red que incluyen varios ejemplos del uso de hardware y software para servidores. Los más sencillos de estos son los routers, módems, servidores DNS, además de otros sin cuya interacción no podríamos acceder a la web. La aparición de la computación en la nube permite servidores de almacenamiento, así como compartir recursos con un fondo común; igualmente permite a los servidores mantener un mayor grado de tolerancia a los fallos.

TIPOS DE SERVIDOR En la siguiente lista hay algunos tipos comunes de servidores:  

 



Servidor de archivos: es el que almacena varios tipos de archivos y los distribuye a otros clientes en la red. Servidor de impresiones: controla una o más impresoras y acepta trabajos de impresión de otros clientes de la red, poniendo en cola los trabajos de impresión (aunque también puede cambiar la prioridad de las diferentes impresiones), y realizando la mayoría o todas las otras funciones que en un sitio de trabajo se realizaría para lograr una tarea de impresión si la impresora fuera conectada directamente con el puerto de impresora del sitio de trabajo. Servidor de correo: almacena, envía, recibe, enruta y realiza otras operaciones relacionadas con el correo electrónico para los clientes de la red. Servidor de fax: almacena, envía, recibe, enruta y realiza otras funciones necesarias para la transmisión, la recepción y la distribución apropiadas de los fax. Servidor de la telefonía: realiza funciones relacionadas con la telefonía, como es la de contestador automático, realizando las funciones de un sistema interactivo para la respuesta de la voz, almacenando los mensajes de voz, encaminando las llamadas y controlando también la red o el Internet, p. ej., la entrada excesiva de la voz sobre IP (VoIP), etc.















 



Servidor proxy: realiza un cierto tipo de funciones a nombre de otros clientes en la red para aumentar el funcionamiento de ciertas operaciones (p. ej., prefetching y depositar documentos u otros datos que se soliciten muy frecuentemente), también proporciona servicios de seguridad, o sea, incluye un cortafuegos. Permite administrar el acceso a internet en una red de computadoras permitiendo o negando el acceso a diferentes sitios Web. Servidor del acceso remoto (RAS): controla las líneas de módem de los monitores u otros canales de comunicación de la red para que las peticiones conecten con la red de una posición remota, responde llamadas telefónicas entrantes o reconoce la petición de la red y realiza la autenticación necesaria y otros procedimientos necesarios para registrar a un usuario en la red. Servidor de uso: realiza la parte lógica de la informática o del negocio de un uso del cliente, aceptando las instrucciones para que se realicen las operaciones de un sitio de trabajo y sirviendo los resultados a su vez al sitio de trabajo, mientras que el sitio de trabajo realiza la interfaz operadora o la porción del GUI del proceso (es decir, la lógica de la presentación) que se requiere para trabajar correctamente. Servidor web: Almacena documentos HTML, imágenes, archivos de texto, escrituras, y demás material Web compuesto por datos (conocidos colectivamente como contenido), y distribuye este contenido a clientes que la piden en la red. Servidor de base de datos: provee servicios de base de datos a otros programas u otras computadoras, como es definido por el modelo clienteservidor. También puede hacer referencia a aquellas computadoras (servidores) dedicadas a ejecutar esos programas, prestando el servicio. Servidor de reserva: tiene el software de reserva de la red instalado y tiene cantidades grandes de almacenamiento de la red en discos duros u otras formas del almacenamiento (cinta, etc.) disponibles para que se utilice con el fin de asegurarse de que la pérdida de un servidor principal no afecte a la red. Esta técnica también es denominada clustering. Servidor de Seguridad: Tiene software especializado para detener intrusiones maliciosas, normalmente tienen antivirus, antispyware, antimalware, además de contar con cortafuegos redundantes de diversos niveles y/o capas para evitar ataques, los servidores de seguridad varían dependiendo de su utilización e importancia. Sin embargo, de acuerdo al rol que asumen dentro de una red se dividen en: Servidor dedicado: son aquellos que le dedican toda su potencia a administrar los recursos de la red, es decir, a atender las solicitudes de procesamiento de los clientes. Servidor no dedicado: son aquellos que no dedican toda su potencia a los clientes, sino también pueden jugar el rol de estaciones de trabajo al procesar solicitudes de un usuario local.

SISTEMAS OPERATIVOS PARA SERVIDORES WINDOWS WINDOWS 2000 SERVER Windows 2000 Server Era destinada a ser el servidor de archivos, impresión, web, FTP de una pequeña o mediana empresa. Su antecesor es Windows NT 4.0 Server. Es ideal para cuando no se requiere de un servidor dedicado a cada tarea o departamento, logrando de esta manera mantener todo centralizado en un solo servidor. Soporta hasta 4 procesadores.

WINDOWS SERVER 2003 Es un sistema operativo de la familia Windows de la marca Microsoft para servidores que salió al mercado en el año 2003. Está basada en tecnología NT y su versión del núcleo NT es la 5.2. En términos generales, Windows Server 2003 se podría considerar como un Windows XP modificado para labores empresariales, no con menos funciones, sino que estas están deshabilitadas por defecto para obtener un mejor rendimiento y para centrar el uso de procesador en las características de servidor; por ejemplo, la interfaz gráfica denominada Luna de Windows XP viene desactivada por lo que sólo se utiliza la interfaz clásica de Windows. Sus características más importantes son: 







  

Sistema de archivos NTFS: 1. Cuotas 2. Cifrado y compresión de archivos, carpetas y no unidades completas. 3. Permite montar dispositivos de almacenamiento sobre sistemas de archivos de otros dispositivos al estilo unix. Gestión de almacenamiento, backups... incluye gestión jerárquica del almacenamiento, consiste en utilizar un algoritmo de caché para pasar los datos menos usados de discos duros a medios ópticos o similares más lentos, y volverlos a leer a disco duro cuando se necesitan. Windows Driver Model: Implementación básica de los dispositivos más utilizados, de esa manera los fabricantes de dispositivos sólo han de programar ciertas especificaciones de su hardware. ActiveDirectory Directorio de organización basado en LDAP, permite gestionar de forma centralizada la seguridad de una red corporativa a nivel local. Autentificación Kerberos5 DNS con registro de IP's dinámicamente Políticas de seguridad

Servidores Los servidores que maneja Windows 2003 son:

           

Servidor de archivos Servidor de impresiones Servidor de aplicaciones Servidor de correo (SMTP/POP) Servidor de terminal Servidor de Redes privadas virtuales (VPN) (o acceso remoto al servidor) Controlador de Dominios (mediante Active Directory) Servidor DNS Servidor DHCP Servidor de Streaming de Vídeo Servidor WINS Servidor RIS Remote Installation Services (Servicios de instalación remota)

WINDOWS SERVER 2008 Algunas veces abreviado como "Win2K8" o "W2K8" es el nombre de un sistema operativo de Microsoft diseñado para servidores. Es el sucesor de Windows Server 2003, distribuido al público casi cinco años después. Al igual que Windows Vista, Windows Server 2008 se basa en el núcleo Windows NT 6.0 Service Pack 1. Entre las mejoras de esta edición, se destacan nuevas funcionalidades para el Active Directory, nuevas prestaciones de virtualización y administración de sistemas, la inclusión de IIS 7.5 y el soporte para más de 256 procesadores. Hay siete ediciones diferentes: Foundation, Standard, Enterprise, Datacenter, Web Server, HPC Server y para Procesadores Itanium. Características Hay algunas diferencias (unas sutiles y otras no tanto) con respecto a la arquitectura del nuevo Windows Server 2008, que pueden cambiar drásticamente la manera en que se usa este sistema operativo. Estos cambios afectan a la manera en que se gestiona el sistema hasta el punto de que se puede llegar a controlar el hardware de forma más efectiva, se puede controlar mucho mejor de forma remota y cambiar de forma radical la política de seguridad. Entre las mejoras que se incluyen, están:  

 

Nuevo proceso de reparación de sistemas NTFS: proceso en segundo plano que repara los archivos dañados. Creación de sesiones de usuario en paralelo: reduce tiempos de espera en los Terminal Services y en la creación de sesiones de usuario a gran escala. Cierre limpio de Servicios. Sistema de archivos SMB2: de 30 a 40 veces más rápido el acceso a los servidores multimedia.

    

Address Space Load Randomization (ASLR): protección contra malware en la carga de controladores en memoria. Windows Hardware Error Architecture (WHEA): protocolo mejorado y estandarizado de reporte de errores. Virtualización de Windows Server: mejoras en el rendimiento de la virtualización. PowerShell: inclusión de una consola mejorada con soporte GUI para administración. Server Core: el núcleo del sistema se ha renovado con muchas y nuevas mejoras.

WINDOWS SERVER 2012 Es la última edición lanzada por Microsoft del sistema operativo Windows Server. Es la versión para servidores de Windows 8 y es el sucesor de Windows Server 2008 R2. El software está disponible para los consumidores desde el 4 de septiembre de 2012. A diferencia de su predecesor, Windows Server 2012 no tiene soporte para computadoras con procesadores Intel Itanium y se venden cuatro ediciones. Se han agregado o mejorado algunas características comparado con Windows Server 2008 R2, como una actualización de Hyper-V, un rol de administración de direcciones IP, una nueva versión del Administrador de Tareas de Windows, y se presenta un nuevo sistema de archivos: ReFS.

SISTEMAS OPERATIVOS PARA SERVIDORES LINUX CENTOS CentOS o Community Enterprise Operating System es un sistema operativo de código libre basado enteramente en Red Hat Enterprise Linux con el objetivo de ser 100% compatible con el mismo. CentOS es básicamente Red Hat pero sin el logotipo, marcas y soporte oficial de la compañía. Es el sistema operativo por excelencia para empresas y servidores. Versiones Versiones disponibles: CentOS 5, 6, 6.2 (64-bit). CentOS 4.5, 4.6, 4.7, 4.8, 5, 6 (32-bit) Disponibilidad Disponible en: Si Servidores Dedicados Si Servidores Cloud Si Servidores a Medida

DEBIAN

Debian es un sistema operativo de código abierto basado directamente en Linux con el objetivo de adherirse estrictamente a Unix. Es ampliamente utilizado en todo tipo de dispositivos dada su estabilidad y seguridad. Es la base para muchas otras variantes de Linux y cuenta con una abundante cantidad de paquetes adicionales. Versiones Versiones disponibles: Debian Squeeze 6 (64-bit y 32-bit). Debian Lenny 5.0 (32-bit) Disponibilidad Disponible en: Si Servidores Dedicados Si Servidores Cloud Si Servidores a Medida

UBUNTU Ubuntu es una distribución de Linux basada en Debian pero que cuenta con el respaldo comercial de una compañía privada. Es una de las distribuciones de Linux para escritorios más populares y también es de código libre. Versiones Versiones disponibles: Ubuntu Lucid Lynx 10.04 (64-bit y 32-bit). Ubuntu Maverick Meerkat 10.10 (64-bit y 32-bit) Disponibilidad Disponible en: Si Servidores Dedicados Si Servidores Cloud Si Servidores a Medida

REDHAT Red Hat Enterprise Linux es la plataforma corporativa preferida para servidores y centros de datos utilizado ampliamente en plataformas científicas, comerciales y financieras. Con actualizaciones y soporte comercial de Red Hat Inc. Versiones Versiones disponibles: Red Hat Enterprise Linux 6, 5 (64-bit). Red Hat Enterprise Linux 4.5, 4.6, 4.7, 4.8, 5, 6 (32-bit) Disponibilidad Disponible en: Si Servidores Dedicados Si Servidores Cloud Si Servidores a Medida