La memoria RAM

¿Quien no ha frotado un bolígrafo en la manga demostrando a su compañero de pupitre que atraía papelillos? Este es el pricipio de un condensador, también llamado capacitor. Las cargas eléctricas de un signo quedaban en la lana del jersey  y las de otro en el plástico del bolígrafo. Electricidad estática, se llama. Al cabo de pocos segundos, la propiedad de atraer desaparecía y había que volver a frotar.
Este es principio de la memoria RAM, Random Access Memory o memoria de acceso aleatorio. Nos la podemos imaginar como un inmenso apartado de correos al que se puede acceder directamente y de manera aleatoria a cualquiera de los cajetines. Cada uno sería una célula que contendría 8, 16, 32 o 64 bits, dependiendo de la llamada arquitectura del sistema. Si un bit tiene carga decimos que toma el valor "1" y si no, "0".
Con el tiempo esa carga desaparece, por lo que hay que ir refrescándola, volver a frotar antes que se le vaya como al bolígrafo.

Decíamos que cuantos más bits tiene un sistema (mejor 64 que 32), a más memoria RAM puede acceder. Esto no significa que tenga instalada toda la que admite, pero si tenemos el "sitio", tendremos la posibilidad de ampliarla.
El tiempo de acceso a ella es de 60 nanosegundos, 60x10⁻¹² segundos. Para hacernos idea, la luz solo recorre en ese tiempo 18 milímetros. El refresco se hace cada 15 nanosegundos.
El acceso al disco duro tarda 8 milisegundos. Es aproximadamente 10 millones de veces más lento. De ahí  lo de cargar lo máximo posible en la memoria y leer del disco cuanto menos mejor.

El Procesador 

Es lo que gestiona, manipula, ordena, cambia, ejecuta operaciones aritméticas y controla muchas otras cosas. Es decir, procesa lo almacenado en la memoria RAM. Esto significa que lo que hay en el disco duro tiene que ser cargado primero en esa memoria. Los discos duros tienen una capacidad del orden de mil veces mayor que la RAM instalada, pero  cargar los datos en ella lleva un tiempo mucho mayor que el de las operaciones internas que hace el procesador, por eso cuantas menos lecturas y escrituras se hagan más rápido parecerá el sistema, que es lo que se busca. De ahí que a mayor cantidad de memoria, más cabe en ella, menos lecturas hay que hacer y por tanto más rapidez.

¿Como es esto en la práctica? Cuando hacemos click a un programa, el Explorer por ejemplo, lee del disco duro los archivos de que se compone, los carga en la memoria y a partir de ahí el procesador va ejecutando nuestros "deseos" cuando movemos el ratón o interaccionamos con el teclado.
Si el computador es antiguo, por consiguiente el disco duro lento y el procesador también (baja frecuencia), tarda hasta que vemos en pantalla el programa que hemos arrancado. Esto da idea del tiempo que lleva leer los datos y cargarlos en la memoria RAM.
¿Y por qué cuando compramos nuestro flamante aparato pagamos una pasta y nos parecía rápido y ahora no?, porque entonces los programas eran más flacos y había que cargar menos datos. El Windows Xp no pesaba tanto como el actual Windows 8.1; tampoco el Explorer, el Microsoft Office etc. Esto por nombrar el mundo de Microsoft. Macintosh y Linux, lo mismo.

Threads

Puede un procesador ejecutar varios programas a la vez?, en principio, no. Como tenemos entonces en nuestra computadora varios abiertos y trabajando al mismo tiempo?, la respuesta es porque hay una técnica que se llama time slicing en la que se ejecuta cada uno de ellos un corto periodo (slicing); agotado este, se pasa al siguiente durante otro periodo, luego al siguiente y cuando ha pasado por todos vuelve al primero. Si se entretuviera el procesador en un sólo programa, los otros estarían congelados. Se reparte así el tiempo (time sharing) y el efecto es como si fuese paralela su ejecución. 

Los procesadores multi-nucleo se llaman así porque se comportan como si fuesen varios de ellos. Cada uno de los núcleos puede ejecutar una parte de cṍdigo llamado thread. Los hay de ocho núcleos que se reparten las tareas de forma paralela. Esta, real.