Anuncios

Bienvenidos sean a este post, hoy verermos un tema que nos sera fundamental para el siguiente.

Anuncios
Anuncios

Hasta ahora vimos que las variables son espacios de memoria donde almacenaremos la informacion que le asignemos, y la direccion de la memoria esta relacionada al identificador de la variable, a esto se lo denomina direccionamiento directo, en cambio cuando usamos un apuntador en lugar de acceder directamente lo haremos a traves de un identificador que apunta a esa direccion de memoria, es decir que esa variable no estara el valor sino la direccion de memoria donde esta el valor, ahora comentemos mas sobre la memoria.

Anuncios

Como sabemos todo lo que procesa en una computadora esta en la memoria, stel proceso es:

  • Se lee del disco el programa
  • Se carga en memoria
  • Se procede con la ejecucion del mismo
Anuncios
Anuncios

Esto es asi porque en realidad al momento de ejecucion, sea el programa que sea, siempre se hace desde la memoria y no desde el origen (sea HDD, CD, USB, etc), con esto decimos que todo lo relacionado al codigo ya sean funciones, variables, arrays y estructuras, asi como cada elemento informatico tiene su direccion de memoria y nosotros procedemos utilizarlos desde nuestros codigos gracias a esto, por esto ultimo no deben preocuparse porque la CPU lo hace de manera extraordinaria.

Anuncios
Anuncios

Como dijimos todo se carga en memoria por lo tanto cada elemento sin importar si es una funcion, hardware, variable una direccion de memoria la cual iniciara desde 1 hasta el numero maximo del tipo de dato unsigned int, por ejemplo si el CPU usara 4 bytes de tipo unsigned int nos dara que se puedenn usar desde la direccion 1 hasta 4294967295, esto equivale a mas de 4 GB, si bien parece un monton no olvidemos que al momento de escribir este post los equipos ya almacenan hasta 64 GB de memoria, por lo tanto esto podria incurrir en un desperdicio de memoria porque solo estariamos utilizando una parte de la misma y dejando el resto sin usar, este tipo de direccionamiento se denomina como de 32 bits, en cambio si usaramos 8 bytes de unsigned int tendriamos disponibles de 1 hasta 18446744073709551615, esto equivale a 18 quintillones de bytes, y son denominados como direccionamiento de 64 bits, si bien los procesadores de 64 bits hoy pueden manejarlos, no tenemos la capacidad fisica para poder proveer esta cantidad de memoria, por lo menos al momento de escribir este post, afortunadamente el SO se encarga con sus propias herramientas de manejar la parte mas baja del rango de memoria.

Anuncios
Anuncios

El lenguaje nos provee varias formas para que un programa localice, libere y acceda a memoria virtual en nuestro espacio de direcciones fisicas, luego queda delegada la administracion de la memoria a nuestro SO, este a si vez es el encargado del ingreso y salida de la memoria virtual en la memoria fisica cada vez que sea necesario, aunque nuestro programa solo necesita conocer el espacio de la direccion de memoria virtual, si bien el lenguaje nos provee herramientas para poder controlar el acceso y manipulacion de la memoria esto lo veremos mas adelante en otro post, pero un inconveniente que tenemos con C es que fue diseñado mucho antes de que existieran las GUI, Interfaz Graica del Usuario, o la mayoria del Hardware actual para poder manipularlas deberemos utilizar librerias que nos permiitan accceder o manipularlas, para ir resumiendo un poco ahora sabemos que:

  • La memoria es vista como un gran bloque contiguo.
  • Todo en la computadora se almacena en la memoria
  • Todo byte tiene su direccion de memoria
  • Las variables son ubicaciones fijas en memoria
Anuncios

En resumen, hoy hemos visto como es la memoria, como se compone, como trabaja, los tipos de direccionamiento a ella que podemos tener, alguna explicacion sobre la misma en el ordenador y un pequeño preambulo de los apuntadores, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50