Documente Academic
Documente Profesional
Documente Cultură
Un nmero binario puede ser representado por cualquier secuencia de bits (dgitos
binarios), que suelen representar cualquier mecanismo capaz de usar dos estados
mutuamente excluyentes. Las siguientes secuencias de smbolos podran ser
interpretadas como el mismo valor numrico binario:
1010011010
|- | - -|| -| xoxooxxoxo
ynynnyynyn
El valor numrico representado en cada caso depende del valor asignado a cada
smbolo. En una computadora, los valores numricos pueden representar dos voltajes
diferentes; tambin pueden indicar polaridades magnticas sobre un disco magntico.
Un "positivo", "s", o "sobre el estado" no es necesariamente el equivalente al valor
numrico de uno; esto depende de la nomenclatura usada.
Ejemplo
Transformar el nmero decimal 131 en binario. El mtodo es muy simple:
131 dividido entre 2 da 65 y el residuo es igual a 1
65 dividido entre 2 da 32 y el residuo es igual a 1
32 dividido entre 2 da 16 y el residuo es igual a 0
16 dividido entre 2 da 8 y el residuo es igual a 0
8 dividido entre 2 da 4 y el residuo es igual a 0
4 dividido entre 2 da 2 y el residuo es igual a 0
Ejemplo
Transformar el nmero decimal 100 en binario.
Ejemplo
100|0
50|0
25|1 --> 1, 25-1=24 y seguimos dividiendo entre 2
12|0
6|0
3|1
1|1 -->
Decimal (con decimales) a binario
Para transformar un nmero del sistema decimal al sistema binario:
1. Se transforma la parte entera a binario. (Si la parte entera es 0 en binario ser 0,
si la parte entera es 1 en binario ser 1, si la parte entera es 5 en binario ser
101 y as sucesivamente).
2. Se sigue con la parte fraccionaria, multiplicando cada nmero por 2. Si el
resultado obtenido es mayor o igual a 1 se anota como un uno (1) binario. Si es
menor que 1 se anota como un 0 binario. (Por ejemplo, al multiplicar 0.6 por 2
obtenemos como resultado 1.2 lo cual indica que nuestro resultado es un uno (1)
en binario, solo se toma la parte decimal del resultado).
3. Despus de realizar cada multiplicacin, se colocan los nmeros obtenidos en el
orden de su obtencin.
4. Algunos nmeros se transforman en dgitos peridicos, por ejemplo: el 0.1.
0,3125 (decimal) => 0,0101 (binario).
Proceso:
0,3125 2 = 0,625 => 0
0,625 2 = 1,25 => 1
0,25 2 = 0,5 => 0
0,5 2 = 1 => 1
En orden: 0101 -> 0,0101 (binario)
0,1 (decimal) => 0,0 0011 0011 ... (binario).
Proceso:
0,1 2 = 0,2 ==> 0
0,2 2 = 0,4 ==> 0
0,4 2 = 0,8 ==> 0
0,8 2 = 1,6 ==> 1
0,6 2 = 1,2 ==> 1
0,2 2 = 0,4 ==> 0 <--se repiten las cuatro cifras, peridicamente
0,4 2 = 0,8 ==> 0 <0,8 2 = 1,6 ==> 1 <0,6 2 = 1,2 ==> 1 <- ...
En orden: 0 0011 0011 ... => 0,0 0011 0011 ... (binario peridico)
Arquitectura de von Neumann
Las primeras mquinas de computacin tenan programas fijos. Algunos equipos muy
simples siguen utilizando este diseo, ya sea por motivos de simplificacin o de
formacin. Por ejemplo, una calculadora de escritorio es (en principio) una
computadora de programa fijo. En ella, se pueden hacer matemticas bsicas, pero no
puede ser utilizada como procesador de texto o consola de juegos. Cambiar el
programa de una mquina de programa fijo requiere re cablear, reestructurar, o
redisear la mquina. Las primeras computadoras no eran tanto "programadas" ya
que fueron "diseadas". Solo se "reprogramaba" cuando era absolutamente posible,
siendo un proceso laborioso, que comenzaba con diagramas de flujo y notas de papel,
seguido de diseos de ingeniera detallada, y luego el muchas veces arduo proceso
2.
3.
4.
Evolucin
A lo largo de las dcadas de los aos 1960 y 1970, las computadoras hicieron, en
general, tanto ms pequeas como rpidas, lo que llev a algunas evoluciones en su
arquitectura. Por ejemplo, el mapeado en memoria de E/S permiti que los dispositivos
de entrada y salida sean tratados de la misma como la memoria. 16 Un nico bus de
sistema podra ser utilizado para proporcionar un sistema modular con un menor
coste. A veces esto se denomina "racionalizacin" de la arquitectura. 17 En las dcadas
siguientes, los microcontroladores sencillos seran algunas veces omitir caractersticas
del modelo a menor costo y tamao. Las computadoras ms grandes aaden
caractersticas para un mayor rendimiento.
forzada a esperar continuamente a que lleguen los datos necesarios desde o hacia la
memoria. Puesto a que la velocidad de procesamiento y la cantidad de memoria han
aumentado mucho ms rpidamente que el rendimiento de transferencia entre ellos, el
cuello de botella ha vuelto ms que un problema, un problema cuya gravedad
aumenta con cada nueva generacin de CPU.
El trmino cuello de botella de von Neumann fue acuado por John Backus en su
conferencia de la concesin del Premio Turing ACM de 1977. Segn Backus:
Seguramente debe haber una manera menos primitiva de realizar grandes cambios
en la memoria, que empujando tantas palabras hacia un lado y otro del cuello de
botella de von Neumann. No solo es un cuello de botella para el trfico de datos, sino
que, ms importante, es un cuello de botella intelectual que nos ha mantenido atados
al pensamiento de "una palabra a la vez" en vez de fomentarnos el pensar en
unidades conceptuales mayores. Entonces la programacin es bsicamente la
planificacin del enorme trfico de palabras que cruzan el cuello de botella de von
Neumann, y gran parte de ese trfico no concierne a los propios datos, sino a dnde
encontrar stos.18 19
El problema de rendimiento puede ser aliviado (hasta cierto punto) utilizando diversos
mecanismos. Ofreciendo una memoria cach entre la CPU y la memoria principal,
proporcionando cachs separadas o vas de acceso independientes para datos e
instrucciones (la llamada arquitectura Harvard modificada), utilizando algoritmos y
lgica de predictor de saltos y proporcionando una limitada pila de CPU u otro en el
chip de memoria reutilizable para reducir el acceso a memoria, son cuatro de las
maneras que se dispone para aumentar el rendimiento. El problema tambin se puede
eludirse, cierta medida, usando computacin paralela, utilizando por ejemplo la
arquitectura de acceso a memoria no uniforme (NUMA), este enfoque es
comnmente empleado por las supercomputadoras. Est menos claro si el cuello de
botella intelectual que criticaba Backus ha cambiado mucho desde 1977. La solucin
que propuso Backus no ha tenido influencia importante. [cita requerida] La moderna
programacin funcional y la programacin orientada a objetos se preocupan mucho
menos de "empujar un gran nmero de palabras hacia un lado a otro" que los
lenguajes anteriores como era Fortran, pero internamente, esto sigue siendo lo que las
computadoras pasan gran parte del tiempo haciendo, incluso las supercomputadoras
altamente paralelas.
A partir de 1996, un estudio de referencia de base de datos se encontr que tres de
cada cuatro ciclos de CPU se dedican a la espera de de memoria. Los investigadores
esperan que el aumento del nmero de instrucciones simultneas arroye con el
multihilo o el multiprocesamiento de un solo chip har que este cuello de botella an
peor. 20
Procesadores no von Neumann
Mueve el cabezal (que es descrito por d k y puede tener los valores: 'L' para
un paso a la izquierda, o 'R' para un paso a la derecha, o 'N' para
permanecer en el mismo lugar) y luego
sQ es el estado inicial.
Funcionamiento
La mquina de Turing consta de un cabezal lector/escritor y una cinta infinita en la que
el cabezal lee el contenido, borra el contenido anterior y escribe un nuevo valor. Las
operaciones que se pueden realizar en esta mquina se limitan a:
Esta mquina de Turing est definida sobre el alfabeto ={a,b,c}, posee el conjunto de
estados Q={qo,q1,q2,q3,q4,q5,q6}, con las transiciones que se pueden ver. Su estado
inicial es q0 y el estado final es q2, el lenguaje de salida
={X,Y,Z,B} siendo B el smbolo denominado "blanco". Esta mquina reconoce la
expresin regular de la forma anbncn con n>=0.
Los estados se representan como vrtices, etiquetados con su nombre en el
interior.
Una transicin desde un estado a otro, se representa mediante una arista
dirigida que une a estos vrtices, y est rotulada por smbolo que lee el
cabezal/smbolo que escribir el cabezal, movimiento del cabezal.
El estado inicial se caracteriza por tener una arista que llega a l y que no
proviene de ningn otro vrtice.
Descripcin instantnea
Es una secuencia de la forma 1q2 donde 1,2 y qQ que escribe el estado
de una MT. La cinta contiene la cadena 12 seguida de infinitos blancos. El cabezal
seala el primer smbolo de 2.
Por ejemplo, para la mquina de Turing
MT=({p,q},{0,1},{0,1,x},,p,,{q}),
con las transiciones
(p,1)(p,0)(p,)=(p,x,D),=(p,0,D) y=(q,,D).
La descripcin instantnea para la cinta 1011 es:
p1011
xp011
x0p11
x0xp1
x0xxp
x0xxq
Ejemplo
Definimos una mquina de Turing sobre el alfabeto {0,1}, donde 0 representa el
smbolo blanco. La mquina comenzar su proceso situada sobre un smbolo "1" de
una serie. La mquina de Turing copiar el nmero de smbolos "1" que encuentre
hasta el primer blanco detrs de dicho smbolo blanco. Es decir, posiciona el cabezal
sobre el 1 situado en el extremo izquierdo, doblar el nmero de smbolos 1, con un 0
en medio. As, si tenemos la entrada "111" devolver "1110111", con "1111" devolver
"111101111", y sucesivamente.
El conjunto de estados es {s1,s2,s3,s4,s5} y el estado inicial es s1. La tabla que
describe la funcin de transicin es la siguiente:
Estado Smbolo ledo Smbolo escrito Mov. Estado sig.
s1
s2
s2
s2
s2
s3
s3
s4
s3
s3
s4
s4
s4
s5
s5
s5
s5
s1
s1
11
s2
01
s2
010
s3
0100
s4
0101
s5
0101
s5
0101
s1
1101
s2
1001
10
s3
1001
11
s3
10010
12
s4
10011
13
s4
10011
14
s5
10011
15
s1
11011
Parada
Se dice que esta cinta tiene mltiples pistas puesto que cada celda de esta mquina
de Turing contiene mltiples caracteres, el contenido de las celdas de la cinta puede
ser representado mediante n-tuplas ordenadas. Los movimientos que realice esta
mquina dependern de su estado actual y de la n-tupla que represente el contenido
de la celda actual. Cabe mencionar que posee un solo cabezal al igual que una MT
sencilla.
Mquina de Turing multicinta
Una MT con ms de una cinta consiste de un control finito con k cabezales
lectores/escritores y k cintas. Cada cinta es infinita en ambos sentidos. La MT define
su movimiento dependiendo del smbolo que est leyendo cada uno de sus cabezales,
da reglas de sustitucin para cada uno de los smbolos y direccin de movimiento para
cada uno de los cabezales. Inicialmente la MT empieza con la entrada en la primera
cinta y el resto de las cintas en blanco.
Mquina de Turing multidimensional
Una MT multidimensional es aquella cuya cinta puede verse como extendindose
infinitamente en ms de una direccin, el ejemplo ms bsico sera el de una mquina
bidimensional cuya cinta se extendera infinitamente hacia arriba, abajo, derecha e
izquierda.
En la modificacin bidimensional de MT que se muestra en la figura tambin se
agregan dos nuevos movimientos del cabezal {U,D} (es decir arriba y abajo). De esta
forma la definicin de los movimientos que realiza el cabezal ser {L,R,U,D}.
esto es, que siempre elige la transicin que finalmente la llevar a un estado final de
aceptacin. La otra es imaginarse que la mquina se "clona", bifurcndose en varias
copias, cada una de las cuales sigue una de las posibles transiciones. Mientras que
una mquina determinista sigue un nico "camino computacional", una mquina no
determinista tiene un "rbol computacional". Si cualquiera de las ramas del rbol
finaliza en un estado de aceptacin, se dice que la mquina acepta la entrada.
La capacidad de cmputo de ambas versiones es equivalente; se puede demostrar
que dada una mquina de Turing no determinista existe otra mquina de Turing
determinista equivalente, en el sentido de que reconoce el mismo lenguaje, y
viceversa. No obstante, la velocidad de ejecucin de ambos formalismos no es la
misma, pues si una mquina no determinista M reconoce una cierta palabra de
tamao n en un tiempo O(t(n)), la mquina determinista equivalente reconocer la
palabra en un tiempo O(2t(n)). Es decir, el no determinismo permitir reducir la
complejidad de la solucin de los problemas, permitiendo resolver, por ejemplo,
problemas de complejidad exponencial en un tiempo polinmico.
Problema de la parada (halting problem)
El problema de la parada o problema de la detencin (halting problem en ingls) para
mquinas de Turing consiste en: dada una MT M y una palabra w, determinar si M
terminar en un nmero finito de pasos cuando se ejecuta usando w como entrada.
Alan Turing, en su famoso artculo "On computable numbers, with an application to the
Entscheidungsproblem" (1936), demostr que el problema de la parada de la mquina
de Turing es indecidible, en el sentido de que ninguna mquina de Turing lo puede
resolver.
Codificacin de una mquina de Turing
Toda mquina de Turing puede codificarse como una secuencia binaria finita, es decir
una secuencia finita de ceros y unos. Para simplificar la codificacin, suponemos que
toda MT tiene un nico estado inicial denotado por q1, y un nico estado final
denotado q2. Tendremos que para una MT M de la forma
s1
s2
11
s3
111
.
.
.
.
.
.
sm
1m
sp
1p
.
.
.
qn
1n
Un cabezal.
Mquina virtual
En informtica una mquina virtual es un software que emula a una computadora y
puede ejecutar programas como si fuese una computadora real. Este software en un
principio fue definido como "un duplicado eficiente y aislado de una mquina fsica". La
acepcin del trmino actualmente incluye a mquinas virtuales que no tienen ninguna
equivalencia directa con ningn hardware real.
Una caracterstica esencial de las mquinas virtuales es que los procesos que
ejecutan estn limitados por los recursos y abstracciones proporcionados por
ellas. Estos procesos no pueden escaparse de esta "computadora virtual".
Uno de los usos domsticos ms extendidos de las mquinas virtuales es ejecutar
sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema
operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro sistema
operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo directamente en
nuestra computadora y sin miedo a que se desconfigure el sistema operativo primario.
Tipos de mquinas virtuales
Las mquinas virtuales se pueden clasificar en dos grandes categoras segn su
funcionalidad y su grado de equivalencia a una verdadera mquina.
Varias mquinas virtuales (cada una con su propio sistema operativo llamado
sistema operativo "invitado" o "guest"), pueden ser utilizadas para consolidar
servidores. Esto permite que servicios que normalmente se tengan que ejecutar
en computadoras distintas para evitar interferencias, se puedan ejecutar en la
misma mquina de manera completamente aislada y compartiendo los recursos
de una nica computadora. La consolidacin de servidores a menudo contribuye
a reducir el coste total de las instalaciones necesarias para mantener los
servicios, dado que permiten ahorrar en hardware.
La virtualizacin es una excelente opcin hoy da, ya que las mquinas actuales
(Laptops, desktops, servidores) en la mayora de los casos estn siendo "subutilizados" (gran capacidad de disco duro, memoria RAM, etc.), llegando a un
uso de entre 30% a 60% de su capacidad. Al virtualizar, la necesidad de nuevas
mquinas en una ya existente permite un ahorro considerable de los costos
asociados (energa, mantenimiento, espacio, etc).
del sistema operativo, que oculte los detalles de la plataforma subyacente y permita
que un programa se ejecute siempre de la misma forma sobre cualquier plataforma.
El ejemplo ms conocido actualmente de este tipo de mquina virtual es la mquina
virtual de Java. Otra mquina virtual muy conocida es la del entorno .Net de Microsoft
que se llama "Common Language Runtime".
Inconvenientes de las mquinas virtuales
Uno de los inconvenientes de las mquinas virtuales es que agregan gran complejidad
al sistema en tiempo de ejecucin. Esto tiene como efecto la ralentizacin del sistema,
es decir, el programa no alcanzar la misma velocidad de ejecucin que si se instalase
directamente en el sistema operativo "anfitrin" (host) o directamente sobre la
plataforma de hardware. Sin embargo, a menudo la flexibilidad que ofrecen compensa
esta prdida de eficiencia.
Tcnicas
Emulacin del hardware subyacente (ejecucin nativa)
Esta tcnica se suele llamar virtualizacin completa (full virtualization) del hardware, y
se puede implementar usando un hypervisor de Tipo 1 o de Tipo 2:
Cada mquina virtual puede ejecutar cualquier sistema operativo soportado por el
hardware subyacente. As los usuarios pueden ejecutar dos o ms sistemas operativos
distintos simultneamente en computadoras "privadas" virtuales.
El sistema pionero que utiliz este concepto fue la CP-40, la primera versin (1967) de
la CP/CMS de IBM (1967-1972) y el precursor de la familia VM de IBM (de 1972 en
adelante). Con la arquitectura VM, la mayor parte de usuarios controlan un sistema
operativo monousuario relativamente simple llamado CMS que se ejecuta en la
mquina virtual VM.
Actualmente tanto Intel como AMD han introducido prestaciones a sus procesadores
x86 para permitir la virtualizacin de hardware.
Open Firmware
Esta tcnica permite que cualquier computadora pueda ejecutar software escrito para
la mquina virtual. Slo la mquina virtual en s misma debe ser portada a cada una
de las plataformas de hardware.
Virtualizacin a nivel de sistema operativo
Esta tcnica consiste en dividir una computadora en varios compartimentos
independientes de manera que en cada compartimento podamos instalar un servidor.
A estos compartimentos se los llama "entornos virtuales". Desde el punto de vista del
usuario, el sistema en su conjunto acta como si realmente existiesen varios
servidores ejecutndose en varias mquinas distintas. Dos ejemplos son las zonas de
Solaris (Solaris Zones) y la tcnica de Micro Partioning de AIX.
Lista de hardware con soporte para virtualizacin
+
EiffelStudiopara el lenguaje de
programacin Eiffel
Inferno - Limbo
FAUmachine
Lua
MMIX - MMIXAL
OKL4
Parrot - Perl 6
YARV - Ruby
SheepShaver.
Rubinius - Ruby
Simics
ScummVM - Scumm
SVISTA
TwoOStwo
User-mode Linux
VirtualBox
opcodes
SWEET16
VM de IBM
Xen
KVM
Z-machine - Z-Code
FreeVPS
Linux-VServer
FreeBSD Jails
Solaris Containers
Adeos es una Capa de Abstraccin de Hardware que puede ser cargado como
un mdulo del ncleo Linux. Esto permite la carga de un ncleo en tiempo real
como mdulo, al mismo tiempo que se ejecuta Linux, pero con una prioridad
ms alta.
Denali utiliza la paravirtualizacin para proporcionar mquinas virtuales de alto
rendimiento sobre procesadores x86.
OKL4 utiliza el software libre L4 (microncleo) como un hypervisor para
proporcionar una solucin de virtualizacin de alto rendimiento para sistemas
embebidos.
Parallels
Virtual Iron
Virtuozzo
VMware
Xen
KVM