¿Por qué la memoria RAM no tiene esquema de partición?

¿Por qué la memoria RAM no tiene esquema de partición?

Otra forma de preguntar esto sería:

"¿Por qué los discos duros, pendrives y SSD necesitan un esquema de partición y la RAM no?"

Solo trato de comprender mejor cómo funcionan todas las cosas de la memoria.

Respuesta1

Bueno, el problema es un poco más complicado.

Primero, la suposición expresada en la pregunta es falsa. ¡Los discos duros y las memorias flash en realidad no necesitan ninguna partición! Simplemente puede escribir datos sin procesar en un disco duro y luego volver a leerlos y funcionará bien. Algunos sistemas informáticos relativamente simples no utilizan particiones incluso hoy en día, porque no es necesario utilizarlas. Por ejemplo, tengo aquí ahora mismo, en mi escritorio, una computadora basada en el microcontrolador ATmega 162 y utiliza flash sin particiones.

Básicamente, lo que hacen las particiones es permitir la separación de responsabilidades laborales entre los diseñadores de sistemas. En mi 162, necesito saber dónde se almacena cada bit de datos y cuántas veces se accede a cada celda flash, para poder implementar la nivelación de desgaste. Para hacer eso, ni siquiera necesito archivos. Sin embargo, el problema es que mi computadora en miniatura tiene solo 16 KiB de memoria flash y esa cantidad se puede administrar manualmente y con comentarios del código fuente. Es como tener un escritorio con un solo cajón. Puedo poner cualquier cosa allí y será fácil de alcanzar y acceder.

En un sistema informático grande, como las computadoras de escritorio actuales, el software es producto del trabajo de miles de programadores que trabajan por separado. Necesitan tener alguna forma de almacenar datos y es por eso que necesitamos archivos y particiones. Cuando los tenemos, el programador puede centrarse sólo en los datos con los que necesita trabajar y no necesita preocuparse por dañar otros datos. Puede dejar que los programadores que trabajan en la programación de sistemas de archivos se preocupen por el almacenamiento físico de datos. Para continuar con el ejemplo del cajón, es como tener un sistema de almacenes e intentar encontrar un solo artículo si tienes cientos de miles de artículos en stock. Entonces, si bien podrías simplemente meter la mano en el cajón simple y tomar un lápiz, por ejemplo, en el estuche del almacén, el lápiz estaría en el almacén 3, sección P, estante 273, nivel 3, caja 5.

Espero haber dejado más claro por qué usamos particiones incluso si en realidad no las necesitamos.

Ahora pasemos a la RAM. Tampoco es cierto que no haya particiones en la RAM. La razón básica por la que utilizamos particiones es la organización y la RAM también está organizada. En el caso de la RAM, sin embargo, es el núcleo del sistema el que decide dónde va a ir cada bit de información y realiza un seguimiento del uso del espacio.

Comparemos cómo funciona un programa en mi sencillo ATmega 162 y cómo funciona un programa en un sistema operativo moderno como Windows. En 162, el programa está preprogramado con direcciones de ubicaciones de memoria que utilizará para almacenar datos. Dado que 162 sólo tiene un programa, no necesito preocuparme por sobrescribir los datos utilizados por otro programa o por la asignación de memoria. Puedo escribir lo que quiera en cada celda de memoria y permanecerá allí mientras la computadora esté funcionando.

Por otro lado, en Windows podemos tener una gran cantidad de programas ejecutándose al mismo tiempo y todos ellos estarían escribiendo y leyendo datos dentro y desde la memoria. Es decir, no podemos permitir que programas individuales accedan directamente a las celdas de memoria (y el hecho de que el programador tendría que saber cómo acceder a la memoria en esa computadora en particular y cuánta RAM tiene esa computadora, etc. En este punto obtenemos Volvamos a la discusión sobre miles versus un programador). En cambio, cuando se inicia cada programa, el kernel le asigna memoria y al programa parece como si fuera el único programa que se ejecuta en la computadora. El kernel está ahí para garantizar que nuestro programa no intente leer o escribir la memoria asignada a otros programas y que no intente ejecutar la memoria marcada como datos y que no ponga en peligro a todo el sistema. Básicamente, en Windows y en muchos otros sistemas operativos modernos, cada programa tiene su propia partición de RAM. También es interesante notar que en sistemas de 32 bits, cada programa podía tomar sólo hasta 2 GiB de RAM, porque ese era el límite superior del tamaño de la "partición".

Me gustaría hacer aquí una pequeña digresión. Hay algunos programas que se ven afectados por las particiones de la RAM. Por ejemplo, existían programas llamados entrenadores que permitían hacer trampa en los juegos de ordenador. Trabajaron encontrando la ubicación de la memoria donde el juego almacena sus datos, por ejemplo, el número de vidas o la salud, y luego accederían directamente a los datos y los cambiarían. Por otro lado, también teníamos virus que funcionaban intentando acceder a la memoria utilizada por importantes servicios del sistema y corrompiéndola para permitirles realizar sus nefastas acciones.

Otra cosa que vale la pena mencionar es el archivo de paginación o la partición de intercambio. Para un programador que escribe una aplicación, no es importante si el programa está en un archivo de paginación o en la RAM, porque el kernel se encarga de eso. En mi ATmega 162 la situación es un poco más complicada. Cuando necesito usar más RAM de la que está disponible, primero debo detectar manualmente la situación en la que he usado toda la RAM, después de eso necesito copiar manualmente los datos de la RAM a la memoria flash, liberar la RAM y usarla para lo que quiera. necesita usarlo, liberarlo nuevamente, mover datos de la memoria flash a la RAM y luego liberar el espacio ocupado en la memoria flash. En una computadora de escritorio, el programa ni siquiera puede ver si se cambió al disco y luego se volvió a mover a la RAM.

Una cosa más interesante es el rendimiento. Volvamos al ejemplo del cajón y el almacén. Saquemos todos los artículos de nuestros almacenes y arrojémoslos en un montón. Entonces, si necesitamos sacar un lápiz del cajón, simplemente abriremos el cajón y tomaremos el lápiz. Si necesitamos tomar un lápiz en particular de una pila de miles de lápices, cuadernos, reglas, golosinas, borradores y demás, tendremos que dedicar un tiempo considerable a buscarlo. Ese tiempo (en el caso promedio) es mucho más largo en comparación con el tiempo necesario para encontrar el mismo lápiz en un almacén bien organizado. Por otra parte, el tiempo necesario para encontrar un lápiz en un almacén organizado es mucho mayor que el tiempo necesario para encontrarlo en un cajón. Por lo tanto, algunos métodos funcionan bien con pequeñas cantidades de datos y otros funcionan bien con grandes cantidades de datos. Los sistemas de archivos mejoran el rendimiento al almacenar datos de forma lógica en el disco en el que se puede encontrar fácilmente cada dato individual. Algunos sistemas de archivos también ofrecen otros beneficios. En el caso de JFFS2, un sistema de archivos diseñado para memorias flash, el sistema de archivos implementa una nivelación de desgaste para que el usuario o el hardware diseñado no tengan que hacerlo.

¡Otra cosa interesante es que también podemos usar sistemas de archivos estándar para RAM! Hay programas que ocupan RAM y la organizan como un sistema de archivos y permiten que los programas la utilicen como si fuera espacio en disco.

Algunos enlaces interesantes: Artículo de Wikipedia sobre gestión de la memoriaDescribe cómo y por qué se particionan los datos en la RAM. Artículo sobre sistema operativo, sección de memoria.Explica por qué necesitamos cosas como la segmentación de la memoria, la paginación de la memoria virtual, etc.

Respuesta2

Para simplificar demasiado, la RAM tiene un esquema de diseño, pero el hardware lo abstrae.

Internamente, la RAM está organizada como una matriz de "celdas de memoria" dispuestas en filas y columnas, como una hoja de cálculo. Cada celda de memoria se utiliza para almacenar un bit de datos, que se puede recuperar instantáneamente indicando la ubicación (o dirección) de la fila y la columna de los datos.

Esto no es muy diferente del concepto básico de cómo funciona el almacenamiento a largo plazo; el sistema de archivos y los mapas de partición son simplemente una abstracción para evitar que tenga que acceder directamente al disco sin formato.

Respuesta3

Se creó un esquema de partición para discos duros para que pueda instalar múltiples sistemas operativos incompatibles que puedan coexistir en diferentes partes de un mismo plato. Los pendrives y los discos SSD heredan el esquema del disco duro, su primo mayor.

En el caso de las computadoras personales, la RAM generalmente solo la usa un sistema operativo a la vez y, por lo tanto, no existe un esquema de partición para ella. Pero aun así, en algunas computadoras grandes (mainframes), también existe un esquema de partición para la RAM.

Respuesta4

La RAM no necesita particionamiento porque está organizada en páginas y estas páginas están estructuradas dinámicamente (MMU) sin necesidad de preasignar áreas. Sin embargo, se produce algún tipo de partición efímera con la RAM cuando los componentes de hardware, principalmente algunas tarjetas gráficas, pero puede ser cualquier cosa, reservan una parte de la RAM física antes de que arranque el sistema operativo.

En realidad, los discos duros, pendrives o SSD tampoco necesitan un esquema de partición, o al menos no deberían hacerlo. Todavía hay componentes inevitables como el BIOS (o firmwares equivalentes) y los cargadores de arranque que exigen que haya una tabla de particiones para funcionar correctamente, pero por lo demás, las particiones sólo son necesarias debido a las limitaciones de diseño de los sistemas operativos (más precisamente, sistemas de archivos y administradores de volúmenes).

El concepto de grupo ZFS demostró que las particiones no son necesarias incluso si desea iniciar múltiples sistemas operativos y si estos sistemas operativos requieren múltiples volúmenes y sistemas de archivos.

Entonces, las particiones solo son necesarias si las unidades son utilizadas por uno o más sistemas operativos que no admiten ZFS (o un equivalente hipotético).

información relacionada