miércoles, 19 de noviembre de 2014

Requisitos para instalar los principales sistemas operativos.

Windows XP


Éstos son los requisitos mínimos de la funcionalidad básica. Los requisitos reales varían dependiendo de la configuración del sistema y de los programas y características que decida instalar. Si instala Windows XP sobre una red, quizás necesite más espacio libre en el disco duro.

Los requisitos mínimos de hardware para Windows XP Home Edition son:

  • Procesador Pentium a 233 megahercios (MHz) o mayor velocidad (se recomienda 300 MHz)
  • Al menos 64 megabytes (MB) de RAM (se recomienda 128 MB)
  • Un mínimo de 1,5 gigabytes (GB) de espacio disponible en el disco duro
  • Unidad de CD-ROM o DVD-ROM
  • Un teclado y un mouse de Microsoft, o algún otro dispositivo señalador compatible
  • Adaptador de vídeo y monitor con una resolución Super VGA (800 x 600) o mayor
  • Tarjeta de sonido
  • Altavoces o auriculares


Windows 7

Si desea ejecutar Windows 7 en su equipo, necesitará:
  • Procesador de 32 bits (x86) o 64 bits (x64) a 1 gigahercio (GHz) o más.
  • Memoria RAM de 1 gigabyte (GB) (32 bits) o memoria RAM de 2 GB (64 bits).
  • Espacio disponible en disco rígido de 16 GB (32 bits) o 20 GB (64 bits).
  • Dispositivo gráfico DirectX 9 con controlador WDDM 1.0 o superior.


Windows Vista

Requisitos de hardware mínimos recomendados para Windows Vista

En la lista siguiente se describen los requisitos de hardware mínimos recomendados para la funcionalidad básica de las diferentes ediciones de Windows Vista. Los requisitos reales de hardware variarán según la configuración del sistema y los programas y características que instale. Si instala Windows Vista a través de una red, quizás se necesite más espacio en el disco duro.
    Windows Vista Home Basic
    • Procesador de 32 bits (x86) o de 64 bits (x64) a 800 megahercios (MHz)
    • 512 megabytes (MB) de memoria del sistema
      Nota: en las configuraciones del sistema que utilizan memoria del sistema como memoria de gráficos, debe haber disponibles al menos 448 MB de memoria del sistema para el sistema operativo después de asignar memoria para los gráficos.
    • Tarjeta gráfica de clase de DirectX 9
    • 32 MB de memoria de gráficos
    • Disco duro de 20 gigabytes (GB) con 15 GB de espacio libre
    • Unidad DVD interna o externa
    • Capacidad de acceso a Internet
    • Capacidad de salida de audio

    Windows Vista Home Premium, Windows Vista Business, Windows Vista Enterprise y Windows Vista Ultimate
    • Procesador de 32 bits (x86) o de 64 bits (x64) a 1 gigahercios (GHz)
    • 1 GB de memoria del sistema
    • Tarjeta de gráficos con capacidad para Windows Aero

      Nota : esto incluye una tarjeta gráfica de clase DirectX 9 que admita lo siguiente:
      • Un controlador WDDM
      • Pixel Shader 2.0 en hardware
      • Admite 32 bits por píxel
    • 128 MB de memoria de gráficos (como mínimo)
    • Disco duro de 40 GB con 15 GB de espacio libre (los 15 GB de espacio libre son para el almacenamiento de archivos temporales durante la instalación o actualización)
    • Unidad DVD interna o externa
    • Capacidad de acceso a Internet
    • Capacidad de salida de audio

Nota: una tarjeta gráfica compatible con Windows Aero que cumple los siguientes requisitos:
  • Admite un controlador Windows Display Driver Model (WDDM)
  • Tiene una unidad de procesamiento de gráficos (GPU) de clase DirectX 9 que admite Pixel Shader 2.0
  • Admite 32 bits por píxel
  • Pasa la prueba de aceptación de Windows Aero del Kit de controladores de Windows (WDK, Windows Driver Kit)
Windows 8

Si quieres ejecutar Windows 8.1 en tu PC, esto es lo que necesitas:
  • Procesador: 1 gigahercio (GHz) o más rápido, compatible con PAE, NX y SSE2 
  • RAM: 1 gigabyte (GB) (32 bits) o 2 GB (64 bits)
  • Espacio en el disco duro: 16 GB (32 bits) o 20 GB (64 bits)
  • Tarjeta gráfica: dispositivo gráfico Microsoft DirectX 9 con controlador WDDM
Si usas Windows 8, puedes obtener una actualización gratuita de Windows 8.1. Solo tienes que pulsar o hacer clic en el icono de la Tienda Windows de la pantalla de inicio. Cuando actualices a Windows 8.1 deberías conseguir la actualización automáticamente. 

Ubuntu/Linux

Los requisitos mínimos «recomendados», teniendo en cuenta los efectos de escritorio, deberían permitir ejecutar una instalación de Ubuntu.

    * Procesador x86 a 1 GHz.
    * Memoria RAM de 1 GB.
    * Disco Duro de 15 GB (swap incluida).
    * Tarjeta gráfica y monitor capaz de soportar una resolución de 800x600.
    * Lector de CD-ROM, puerto USB o tarjeta de red.
    * Conexión a Internet puede ser útil.

Los efectos de escritorio, proporcionados por Compiz, se activan por defecto en las siguientes tarjetas gráficas:

    * Intel (i915 o superior, excepto GMA 500, nombre en clave «Poulsbo»)
    * NVidia (con su controlador propietario o el controlar abierto incorporado Nouveau)
    * ATI (a partir del modelo Radeon HD 2000 puede ser necesario el controlador propietario)

Si se dispone de una computadora con un procesador de 64 bits (x86-64), y especialmente si dispone de más de 3 GB de RAM, se recomienda utilizar la versión de Ubuntu para sistemas de 64 bits.







APPLE
Requisitos del sistema para OS X Lion y Mac OS X v10.6
Más información acerca de los requisitos del sistema para OS X Lion y Mac OS X v10.6.

Requisitos del sistema de OS X Lion

Para usar Lion, asegúrate de que tu ordenador cuente con lo siguiente:
  • Un procesador Intel Core 2 Duo, Core i3, Core i5, Core i7 o Xeon
  • Mac OS X v10.6.6 o posterior para instalarlo por medio del Mac App Store (v10.6.8 recomendado)
  • 7 GB de espacio disponible en el disco
  • 2 GB de RAM
Si tu Mac no cumple estos requisitos, tendrás que actualizarlo antes de instalar Lion.
Para obtener más información, consulta OS X Lion - Especificaciones técnicas.

Requisitos del sistema de Mac OS X v10.6 Snow Leopard

Para instalar Snow Leopard por primera vez, necesitas un Mac con:
  • Un procesador Intel
  • Una unidad de DVD interna o externa, o Compartir DVD o CD
  • Al menos 1 GB de RAM (se recomienda utilizar RAM adicional)
  • Una pantalla integrada o un monitor conectado a una tarjeta de vídeo suministrada por Apple compatible con tu ordenador
  • Al menos 5 GB de espacio disponible en el disco, o 7 GB de espacio en el disco si instalas las herramientas para desarrolladores
Para obtener más información, consulta Mac OS X v10.6 Snow Leopard - Guía de instalación y configuración.



lunes, 17 de noviembre de 2014

Interpretes

Los interpretes son traductores que toman o leen código fuente, lo traducen y lo ejecutan este proceso se repite por cada ejecución del programa.


Es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.

Usando un intérprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ejemplo. una PC y un Xbox One). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables específicos a cada sistema.



Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intérprete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores. En pocas palabras "el compilador sólo traduce; el intérprete decodifica y ejecuta. "









Vídeo de un ejemplo de como funciona un Interprete con PYTHON



Compiladores

Un compilador 

Es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación.




USOS
Los compiladores trabajan en fases, las cuales transforman el programa fuente de una representación en otra.

Se usa con el fin de analizar las secciones, administrar la taba de símbolos y manejar los errores, para esto utiliza el análisis léxico, análisis sintáctico, análisis semántico, generación de código intermedio, optimización de código y generación de código.

Dentro de las característica importantes de un compilador es que traduce de un Lenguaje de alto nivel a uno de bajo nivel.



FUNCIÓN

La función principal que cumple es traducir a un lenguaje mucho mas sencillo y entendible por la maquina, informa al usuario si existen errores en el código fuente con el fin de ejecutar la aplicación sin problema, si existe algún error simplemente se detiene.

También registra los identificadores utilizados en el programa fuente y toma la información de los atributos de cada identificador.










Clasificación de Compiladores

El programa compilador traduce las instrucciones en un lenguaje de alto nivel a instrucciones que la computadora puede interpretar y ejecutar. Para cada lenguaje de programación se requiere un compilador separado. El compilador traduce todo el programa antes de ejecutarlo. Los compiladores son, pues, programas de traducción insertados en la memoria por el sistema operativo para convertir programas de cómputo en pulsaciones electrónicas ejecutables (lenguaje de máquina). Los compiladores pueden ser de:


una sola pasada: examina el código fuente una vez, generando el código o programa objeto.

pasadas múltiples: requieren pasos intermedios para producir un código en otro lenguaje, y una pasada final para producir y optimizar el código producido durante los pasos anteriores.

Optimización: lee un código fuente, lo analiza y descubre errores potenciales sin ejecutar el programa.

Compiladores incrementales: generan un código objeto instrucción por instrucción (en vez de hacerlo para todo el programa) cuando el usuario teclea cada orden individual. El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente.


Ensamblador: el lenguaje fuente es lenguaje ensamblador y posee una estructura sencilla.

Compilador cruzado: se genera código en lenguaje objeto para una máquina diferente de la que se está utilizando para compilar. Es perfectamente normal construir un compilador de Pascal que genere código para MS-DOS y que el compilador funcione en Linux y se haya escrito en C++.

Compilador con montador: compilador que compila distintos módulos de forma independiente y después es capaz de enlazarlos.

Autocompilador: compilador que está escrito en el mismo lenguaje que va a compilar. Evidentemente, no se puede ejecutar la primera vez. Sirve para hacer ampliaciones al lenguaje, mejorar el código generado, etc.

Metacompilador: es sinónimo de compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje. 

El desarrollo de los metacompiladores se encuentra con la dificultad de unir la generación de código con la parte de análisis. 


Descompilador: es un programa que acepta como entrada código máquina y lo traduce a un lenguaje de alto nivel, realizando el proceso inverso a la compilación.







QUE ES UN COMPILADOR





Ensambladores


Ensamblador 



Es un programa que se utiliza para convertir código fuente (lenguaje Assembly) a código objeto (lenguaje máquina). El lenguaje Assembly se creo con el propósito de facilitar la escritura de programas ya que el lenguaje binario es bastante complicado y difícil de entender, este lenguaje usa referencias simbólicas para evitar cálculos tediosos. El lenguaje Assembly sigue siendo utilizado para varios dispositivos programables como los microcontroladores.



Qué es el ensamblador:

El sistema alfanumérico para escribir código máquina mediante expresiones abreviadas (mnemotécnicos).

La compilación es más complicada porque incluye la conversión de operaciones matemáticas complejas, comandos de lenguaje natural o tipos de comandos complejos.

Cada ordenador tiene su propio lenguaje ensamblador, exclusivo de su CPU; un lenguaje de alto nivel (LAN) puede ser compilado en distintas máquinas.



Tipos de ensambladores:

Ensambladores cruzados: Se denominan así a los ensambladores que se utilizan en una computadora que posee el procesador diferente al que tendrán las computadoras donde se va a ejecutar el programa objeto producido.

Ensambladores residentes: 
Son aquellas que permanecen en la memoria principal de la computadora y cargar para su ejecución al programa objeto producido.

Micro ensambladores: 
Al programa que indica al intérprete de instrucciones de la CPU como debe actuar se le denomina microprograma. El programa que ayuda a realizar este microprograma se llama micro ensamblador.

Macro ensambladores: Son ensambladores que permiten el uso de macroinstrucciones.

Ensambladores de una fase:
 Leen una línea y la traducen directamente para producir una instrucción de lenguaje maquina o la ejecuta si se trata de una pseudosinstrucción. Se construye la tabla de símbolos a medida que aparecen las definiciones de variables, etiquetas, etc.

Ensambladores de dos fases: 
Realiza la traducción en dos etapas: 1° fase leen el programa fuente y construyen la tabla de símbolos, 2° fase vuelve a leer el programa fuente y pueden ir traduciendo totalmente pues reconocen la totalidad de los símbolos.









Tipos de Lenguajes





El lenguaje de programación es un lenguaje artificial que se utiliza para definir una secuencia de instrucciones para su posterior procesamiento. En muchas ocasiones, resulta inentendible para el común de la gente. Vamos a intentar aclarar algunas cuestiones al respecto. 

La traducción de una serie de instrucciones en lenguaje ensamblador (el código fuente) a un código máquina (o código objeto) no es un proceso muy complicado y se realiza normalmente por un programa especial llamado compilador. Estas instrucciones son las que permiten que la computadora ejecute aquellas funciones que nosotros, como usuarios, le ordenamos.













El mencionado compilador crea una lista de instrucciones de código máquina, el código objeto, basándose en un código fuente. El código objeto resultante es un programa rápido y listo para funcionar, pero que puede hacer que falle el ordenador si no está bien diseñado. 

Lenguajes de bajo nivel 

Vistos a muy bajo nivel, los microprocesadores procesan exclusivamente señales electrónicas binarias. Dar una instrucción a un microprocesador supone en realidad enviar series de unos y ceros espaciadas en el tiempo de una forma determinada.Esta secuencia de señales se denomina código máquina. 

El código representa normalmente datos y números e instrucciones para manipularlos. Un modo más fácil de comprender el código máquina es dando a cada instrucción un nombre fácil de recordar, como por ejemplo STORE, ADD o JUMP. Esta abstracción da como resultado el ensamblador, un lenguaje de muy bajo nivel que es específico de cada microprocesador. 













Lenguajes de alto nivel 

Por lo general se piensa que los ordenadores son máquinas que realizan tareas de cálculos o procesamiento de textos. La descripción anterior es sólo una forma muy esquemática de ver una computadora. Hay un alto nivel de abstracción entre lo que se pide a la computadora y lo que realmente comprende. Existe también una relación compleja entre los lenguajes de alto nivel y el código máquina. 

Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como por ejemplo el inglés. EnBASIC, el lenguaje de alto nivel más conocido, los comandos como 'IF CONTADOR = 10 THEN STOP' pueden utilizarse para pedir a la computadora que pare si CONTADOR es igual a 10. 

Sin embargo, para muchas personas esta forma de trabajar es un poco frustrante, porque aunque las computadoras parecen comprender un lenguaje natural, lo hacen en realidad de una forma rígida y sistemática. Es así que en la actualidad se emplean otros tipos de lenguajes para poder ejecutar las funciones de un ordenador básico, cuyo lenguaje de funcionamiento interno queda en manos de especialistas, mientras que los usuarios trabajan con aplicaciones que no requieren el manejo de un argot técnico.


Historia de los lenguajes de programación





Memoria Virtual



Memoria Virtual

El método diseñado por Fotheringham en 1961 se conoce como Memoria Virtual, la idea es que el tamaño combinado de la pila, programa y datos puede exceder la memoria física disponible para ello. El S.O. mantiene en memoria aquellas partes del programa que se deben permanecer en memoria y el resto lo deja en disco, las partes entre el disco y la memoria se intercambian de modo que se vayan necesitando.


La memoria virtual es una técnica de gestión de la memoria que permite que el sistema operativo disponga, tanto para el software de usuario como para sí mismo, de mayor cantidad de memoria que esté disponible físicamente. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, La memoria cache  (tanto dentro como fuera del CPU), la memoria RAM y el disco duro. En ese orden, van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad.


Paginación y memoria virtual


La memoria virtual usualmente (pero no necesariamente) es implementada usando paginación. En paginación, los bits menos significativos de la dirección de memoria virtual son preservados y usados directamente como los bits de orden menos significativos de la dirección de memoria física. Los bits más significativos son usados como una clave en una o más tablas de traducción de direcciones (llamadas tablas de paginación), para encontrar la parte restante de la dirección física buscada.







Memoria Virtual en Linux


Como funciona la Memoria Virtual en Windows



Gestión de Memoria Virtual


Administración de memoria








Administración de la memoria sin intercambio o paginación.




Los sistemas de administración de memoria se pueden clasificar en dos tipos. Los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución (intercambio y paginación) y aquellos que no.




Monoprogramación sin intercambio o paginación.

Es en forma secuencial pues solo se tiene un objeto en memoria en cada instante, el usuario carga toda la memoria con un programa, esto implica que cada proceso debe contener controladores de dispositivo para cada uno de los dispositivos E/S que utilice.


Multiprogramación y uso de la memoria.


La multiprogramación facilita la programación de una aplicación al dividirla en dos o mas procesos. La mayoría de los procesos tardan cierto tiempo en la espera de datos de dispositivos E/S.

Un modelo para el uso y aprovechamiento de la CPU es el modelo probabilístico dado por la fórmula :

Uso de la CPU = 1 - pn


Multiprogramación con particiones fijas

El objetivo en todo esto es tener mas de un proceso en memoria a la vez, solución posible sería dividir la memoria en n partes al inicio de una sesión de uso de la máquina, pero aún así se obtiene el desperdicio de particiones grandes con una tarea pequeña, la respuesta puede ser tener particiones pequeñas también.

Las tareas que van llegando se forman hasta que una partición adecuada está disponible, en cuyo momento la tarea se carga en esa partición y se ejecuta hasta terminar.






Intercambio

En un sistema por lotes la organización de la memoria en particiones fijas es adecuado pero en un ambiente multiusuario la situación es distinta con el tiempo compartido, ya que existen mas usuarios de los que puede albergar la memoria, por lo que es conveniente albergar el exceso de los procesos en disco., por supuesto para ser ejecutados estos procesos deben ser trasladados a la memoria principal. Al traslado de procesos de disco a memoria y viceversa se le llama intercambio.


Multiprogramación con particiones variables.

Mediante un algoritmo de administración de memoria las particiones variables varían de forma dinámica durante el uso de la máquina, evitando desperdicio de memoria

Otros métodos de administración de memoria que tenemos son:

la administración de memoria con mapa de bits

la memoria se divide en unidades de asignación, a cada asignación le corresponden un bit en el mapa de bits, un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria.

la administración de memoria con listas ligadas

otra forma de mantener un registro en memoria es mediante una lista ligada donde cada entrada de la lista específica un hueco o un proceso.

la administración de memoria con el sistema de los asociados basado en el sistema binario o utiliza para las direcciones.