Archivo de 'curiosidades'

Metro de Torrijos

Parece que Torrijos (El lugar del que soy) poco a poco evoluciona. Lo último con lo que nos han sorprendido ha sido con una fantástica red de Metro. Echo en falta algunas paradas, pero menos da una piedra. Os dejo el plano de metro por si queréis consultarlo.

Metro de Torrijos

Metro de Torrijos

Por si alguien no se ha dado cuenta (¿?), es una broma.

Entendiendo a los ordenadores (O a las personas)

¿Cuántas veces te has visto, oh ser friki, en la disyuntiva de intentar explicar a un mortal común cómo funciona un ordenador? En el siguiente artículo intentaré mostrar un ejemplo que creo que es bastante didáctico. Mediante analogías con el ser humano explicaré el funcionamiento básico de un ordenador.

Periféricos de entrada/salida

Un ordenador necesita una interfaz con la que comunicarse con el exterior, ya sea enviando o recibiendo información. Algunos ejemplos son el teclado, el monitor, el ratón, la impresora… En el ser humano sus equivalentes serían los sentidos. La vista, el olfato, el oído, el tacto, el gusto… Gracias a éstos, podemos interactuar con el entorno que nos rodea. Los periféricos suelen traer una sencilla circuitería que les dota de una pequeña “inteligencia” capaz de tomar pequeñas decisiones y servir de interfaz con el propio ordenador. Ésto se conocido como controlador. En el ser humano los controladores de los periféricos se encuentran alojados en el cerebro, como por ejemplo la parte que se encarga del olfato.

Procesador

Lo de los periféricos está muy bien, pero ¿dónde reside la inteligencia que los controla y gobierna? Grosso modo podríamos decir que esa inteligencia es el microprocesador. Este elemento es el que da las órdenes, el que gobierna a todos los demás, y el que interpreta la información que le llega. El correspondiente en el ser humano es, cómo no, el cerebro (pero el cerebro hace más cosas a parte de eso!)

Espera activa

Hay varios mecanismos para saber que un periférico necesita enviar o recibir información. Uno de ellos es la espera activa. Su funcionamiento es muy sencillo. El procesador espera que el usuario pulse la tecla “Enter”. Entonces lo que hace es meterse en un bucle cuya condición de salida es que el usuario haya pulsado la tecla Enter. Es una técnica muy poco usada en computadores complejos ya que no es nada eficiente. Un ejemplo en el ser humano sería el clásico viaje de los niños con sus padres. El hijo repite constantemente “hemos llegado ya?” – “No” – “hemos llegado ya?” – “No”, hasta que al final… “hemos llegado ya?” – “Sí”. Y el hijo entonces ya sabe que han llegado a su destino.

Interrupciones

Otro mecanismo son las interrupciones. La idea es que el procesador permanece ocupado hasta el momento en que un periférico lanza una interrupción. En ese momento, el procesador deja lo que estaba haciendo, y se encarga de manejar la petición. Un ejemplo en el ser humano sería estar viendo la tele, y de pronto recibir una llamada de teléfono. En ese momento el cerebro (procesador) deja de ver la televisión, y atiende la llamada. Una vez finalizada prosigue con su trabajo

DMA

El tercer mecanismo es dejar que el periférico acceda diréctamente a los recursos del ordenador, sin necesidad de delegar esa tarea al procesador. De este modo logramos que nuestro micro pueda dedicarse a otras cosas, con lo que el rendimiento se ve notablemente incrementado. Ejemplo en el ser humano: Hay determinadas tareas que no necesitan de nuestro “consciente” para realizarse. Por ejemplo, podemos estar centrados en una conversación mientras damos un paseo. Puesto que caminamos, estamos enviando información a nuestro cuerpo para que se mueva. ¿Tenemos que pensarlo explícitamente? no. Estamos hechos de tal manera que se hace de forma automática sin tener que estar pensando “ahora avanza la pierna derecha. Peligro! Perdemos equilibrio! tienes que lanzar ya la pierna izquierda, …”.

La Memoria

Hay dos tipos de memoria. Volatil y no volatil. La memoria volatil es aquella que desaparece cuando se va la luz (RAM y caché). En la práctica la memoria volatil es una memoria por lo general a corto plazo. En cambio la memoria no volatil es a largo plazo (Disco Duro). Pero el disco duro no es infinito. A menudo hace falta liberar espacio en él para dejar que otras cosas puedan almacenarse. En el ser humano ocurre algo muy similar. La memoria caché es la memoria a muy corto plazo (“Corre! recuerda este numero de teléfono, que te lo voy a pedir enseguida!”), luego tenemos la RAM que dura un poco más (Como cuando estudias unas horas antes para un examen, y a las 5 horas se te ha olvidado), y por ultimo el disco duro (La memoria de “la vida”).

“Pero yo recuerdo muchas cosas. Tengo un disco duro la ostia de grande?”

No! La mente humana no recuerda tanto como creemos. El prodecimiento que subyace bajo esto es muy similar a técnicas que se emplean en la Programación Orientada a Objetos. En estas disciplinas, existe un concepto llamado “clase”. Una clase no es mas que una generalización. Consiste en quedarse con lo esencial de algo (abstracción). Por ejemplo, podemos definir “vehículo” como algo que transporta cosas. De la clase vehículo podría salir una nueva clase “vehículo de ruedas”, que es tan solo un vehículo que utiliza ruedas para moverse. De esta ultima clase podríamos sacar vehículos de 4 ruedas, así hasta llegar a un modelo de coche (Por ejemplo un Opel Corsa). De este modo se registran solo los atributos básicos que definen a los tipos de elementos, y luego se instancian por cada objeto con el que nos encontramos. Ocurre igual con los conceptos, por ejemplo “justicia”. El ¿problema? es que cada persona hace una generalización de lo que entiende por justicia.

Prefijos decimales y binarios

El articulo de esta vez no es mas que una anotación sobre un concepto básico y erróneo. A menudo utilizamos prefijos numéricos, tales como kilo (kilómetro), mega (megahercio), mili (mililitro) o nano (nanosegundo). Especialmente curiosos son aquellos que se utilizan para denominar la capacidad de almacenamiento de un disco duro o memoria RAM. Por lo general estos prefijos hacen referencia a potencias de 10, sin embargo cuando nos referimos al tamaño de un disco duro, no nos referimos a potencias de 10, sino a potencias de 2, lo cual es en la mayoría de los casos erróneo.
Tabla de algunos prefijos numéricos

1024 yotta 1.000.000.000.000.000.000.000.000
1021 zetta 1.000.000.000.000.000.000.000
1018 exa 1.000.000.000.000.000.000
1015 peta 1.000.000.000.000.000
1012 tera 1.000.000.000.000
109 giga 1.000.000.000
106 mega 1.000.000
103 kilo 1.000
102 hecto 100

De este modo, tenemos por ejemplo

  • 1.000 gramos = 1Kilogramo
  • 100 metros cúbicos = 1 hectómetro cúbico
  • 1.000.000 Bytes = 1MegaByte

Sin embargo todos sabemos que esa última equivalencia no es correcta. ¡Pues sí! Sí es correcta. Ocurre que en el mundo digital todo se representa con dos estados (el 0 o el 1), esto es el sistema binario. Debido a esto, resulta muy cómodo trabajar siempre con potencias de 2. Tenemos además que 2^10 es 1024, un valor bastante aproximado a 1000, motivo por el cual históricamente se le han asumido como correctas afirmaciones como estas:

  • 210 bits = 1.024 bits = 1kilobit
  • 220 bytes = 1.048.576 Bytes = 1MegaByte

Pero algo falla. ¿No habíamos quedado en que el prefijo mega se usa para representar a 10^6? Desde luego! ¿Entonces los resultados de arriba son inexactos? ¡Eso es! Realmente serían esto:

  • 210 bits = 1.024 bits = 1,024 kilobit
  • 220 bytes = 1.048.576 Bytes = 1,048576 MegaByte

La International Electrothecnical Commision se dio cuenta de esto, y en 1999 decidió publicar una serie de prefijos nuevos para emplearnos en la tecnología electrónica:

280 yobi Yi 1,208,925,819,614,629,174,706,176 20,8%
270 zebi Zi 1,180,591,620,717,411,303,424 18,0%
260 exbi Ei 1,152,921,504,606,846,976 15,2%
250 pebi Pi 1,125,899,906,842,624 12,5%
240 tebi Ti 1,099,511,627,776 9,9%
230 gibi Gi 1,073,741,824 7,3%
220 mebi Mi 1,048,576 4,8%
210 kibi Ki 1,024 2,4%

Ejemplo práctico
Un día decides comprarte un nuevo disco duro. En la carcasa pone claramente que el disco duro es de 200GB (GigaBytes). Echemos pues cuentas:

200GigaBytes = 200.000 MegaBytes = 200.000.000 KiloBytes = 200.000.000.000 Bytes

decides conectarlo a tu ordenador, y en cuanto lo abres y consultas el espacio libre… ¡Santo Dios! Pero si no tiene nada y pone que solo quedan 186 GB libres! ¿Dónde han ido a parar esos 14 GB? Resulta que tu sistema operativo está usando prefijos binarios, y el fabricante del disco duro utiliza prefijos decimales. ¿Cuál de ellos tiene razón?

En un mundo correcto todos usaríamos prefijos binarios para este cometido, los hombres no pegarían a las mujeres, y a Ana Obregón se la expulsaría del país. Hasta entonces se aceptará como válido llamar 2^20 mega aunque no sea del todo correcto. Esto es algo que saben muy bien los fabricantes de discos duros, y aprovechando la ambigüedad, deciden “inflar” los tamaños de sus dispositivos de cara al cliente.

Mi opinión: Todos deberíamos usar los prefijos binarios en lugar de los decimales, de este modo se elimina la ambigüedad, y si compramos un disco de 1TebiByte sabemos que es de 2^40 Bytes, ni más ni menos.

Mis estadísticas P2P

Que la mayoría de los usuarios del mundo usan Microsoft Windows es por todos sabidos. De ahí no es difícil deducir que la mayoría de los usuarios de aplicaciones Peer To Peer (P2P) utilicen también Windows, en concreto el programa de moda para dicha plataforma; emule. ¿Debemos deducir de ahí que los usuarios de emule son los que más información envían a la red? ¿Cuáles de ellos son los que envían más datos por conexión?¿Quiénes son los más “egoístas”? Para el siguiente estudio he utilizado las estadísticas que me ha proporcionado mi cliente de p2p.

Nota: Si te tomas en serio el siguiente estudio, es que estás completamente loco… Sólo son los resultados estadísticos de un corto intervalo de tiempo en un solo cliente.

Conexiones realizadas

La siguiente tabla muestra las conexiones realizadas con éxito con otros clientes:

eMule     225016 (85.3%)
ePlus      18578 ( 7.0%)
lPhant      6062 ( 2.3%)
Overnet     4971 ( 1.9%)
eDonkey     3520 ( 1.3%)
aMule       3108 ( 1.2%)
mldonkey    2150 ( 0.8%)
shareaza     445 ( 0.2%)

¡Aplastante victoria de eMule! Más notable aún si tenemos en cuenta que ePlus es sólo un fork del propio emule. No hay información suficiente para conocer el porcentaje de sistemas operativos, pero sin duda alguna Windows es la arquitectura más extendida en mis conexiones con aproximadamente el 94% del total.

Descargas realizadas

Resultados de las descargas realizadas:

eMule     1873507934 (75.0%)
ePlus      239692552 ( 9.6%)
eDonkey    163440562 ( 6.5%)
lPhant     127506080 ( 5.1%)
Overnet     55414669 ( 2.2%)
aMule       20055552 ( 0.8%)
mldonkey    15361024 ( 0.6%)
shareaza     1484800 ( 0.1%)

De un golpe de vista podemos comprobar que los usuarios de eMule son bastante egoístas, pues pese a ser el 87% de los usuarios, tan solo envían el 75% de la información total. Algo similar (o al revés) ocurre en la mayoría de los casos. Para sacar a relucir esta información calcularé lo que acabo de bautizar como “Índice de Generosidad”. Dividiendo el total de bytes recibidos entre el total de conexiones obtenemos una media de 9268 Bytes por conexión. Con este dato calculamos el número de Bytes estimados.

Tabla de los índices de generosidad:

Cliente     Bytes Estimados  I.Generosidad
------------------------------------------
eDonkey       32.623.360     4.00
lPhant        56.182.616     1.26
ePlus        172.180.904     0.39
Overnet       46.071.228     0.20
eMule      2.085.448.288     -0.11
mldonkey      19.926.200     -0.23
aMule         28.804.944     -0.31

Un resultado de 0 significaría que la proporción [Numero de clientes]/[Descargas de ese cliente] está perfectamente equilibrada. Observamos que los usuarios de la red eDonkey son tremendamente generosos. Muy generosos son también los usuarios de lPhant, y más de lejos los de ePlus y Overnet. El resto de los clientes salen tachados de egoístas en mis estadísticas.

Subidas realizadas

Resultados de las subidas realizadas:

eMule     1054547592 (77.7%)
ePlus      143093751 (10.5%)
eDonke y    55418880 ( 4.1%)
Overnet     46041806 ( 3.4%)
mldonkey    25298614 ( 1.9%)
lPhant      23736329 ( 1.7%)
aMule        9912328 ( 0.7%)

Al igual que en el caso anterior, ahora sacaré una tabla con los índices de ambición. El número de bytes por cliente es de 5040:

Cliente     Bytes Estimados  I.Ambición
------------------------------------------
eDonkey       17.740.800     2.12
mldonkey      10.836.000     1.33
Overnet       25.053.840     0.83
ePlus         93.633.120     0.52
eMule      1.134.080.640     -0.08
lPhant        30.552.480     -0.23
aMule         16.027.200     -0.39

El eDonkey además de generoso es ambicioso! Sin embargo podemos observar que hay mucho “listillo” suelto (ejem…), pues por ejemplo los usuarios de mldonkey suben bastante poco y sin embargo son los segundos más ambiciosos!

Índice de cara_dura

Para finalizar, voy a comprobar cómo de avariciosos o generosos son los usuarios de cada cliente con un sencillo cálculo: [Índice de Ambición ] – [Índice de Generosidad].

Cliente     I. Cara_dura
------------------------------------------
mldonkey      1.56
Overnet       0.63
ePlus         0.13
eMule         0.03
aMule        -0.70
lPhant       -1.49
eDonkey      -1.88

¡Pero vaya morro que le echan los usuarios de mldonkey! ¡¡¡a ver si subimos el max_hard_upload_rate !!! Los de la red Overnet tampoco se quedan cortos! ;) También vemos que los usuarios de ePlus incrementan en 10 centésimas las descargas respecto de los usuarios de eMule. Con aMule se experimenta un nivel de subida superior a la mayoría. Mucho más notable es con lPhant, y sobre todo con eDonkey.

Bravo por los usuarios de eDonkey! Los más altruístas de la red p2p

Este estudio (por llamarlo de alguna manera) ha sido realizado con mis estadísticas, recogidas en un breve período de tiempo. La intención de estos datos no van más allá de una mera curiosidad. Cabe destacar que los ficheros que estaban en mi lista de descargas, contienen en su totalidad información multimedia legible por cualquier sistema operativo.