Protección de memoria

Protección de memoria

La protección de memoria, del inglés memory protection, es un método para controlar el uso de memoria en una computadora, y es parte esencial de prácticamente todos los sistemas operativos modernos. El principal propósito de la protección de memoria es evitar que un proceso en un sistema operativo acceda a la memoria que no le ha sido asignada. Así pueden evitarse problemas durante la ejecución del software, y también se evita que software maligno acceda a los recursos del sistema.

Contenido

Métodos

Segmentación

La segmentación (segmentation en inglés) hace referencia a la división de la memoria de una computadora en segmentos.

La arquitectura del x86 cuenta con diferentes opciones para la segmentación para quien desee protección de memoria en esta arquitectura.[1] En la arquitectura del x86, la Global Descriptor Table y la Local Descriptor Table se pueden usar para referenciar segmentos en la memoria de la computadora. Los punteros a los segmentos de memoria en los procesores x86 también pueden almacenarse en los registros de segmentos del procesor. Inicialmente el x86 tenía 4 registros de segmentos: CS (code segment), SS (stack segment), DS (data segment) y ES (extra segment); para añadirse posteriormente dos registros más – FS and GS.[1]

Páginas

Este concepto, conocido en inglés como Paging, se basa en dividir el espacio de direcciones de memoria en pequeñas piezas idénticas llamadas páginas. Usando un mecanismo de memoria virtual se consigue que cada página resida en cualquier ubicación dentro de la memoria física, o pueda ser marcada como protegida. La memoria virtual posibilita tener un espacio de direcciones de memoria lineal y usarlo para acceder a bloques fragmentados a lo largo del espacio de direcciones de memoria física.

La mayoría de las arquitecturas de las computadoras basados en páginas, entre ellos la arquitectura del x86, hacen uso de la protección de memoria.

Se usa una tabla de páginas para asociar la memoria virtual con la memoria física. La tabla de páginas resulta transparente durante el proceso. Las tablas de memoria facilitan la asignación de memoria nueva, dado que cada página puede ser asignada desde cualquier memoria física.

Esta solución impide que una aplicación acceda anuna página que no le ha sido explícitamente asignada, pues todas las direcciones de memoria, incluso las aleatorias, que son usadas por una aplicación, apuntan a una página asignada o generan un page fault, PF (error de página). Las páginas que no han sido asignadas no tienen una dirección desde el punto de vista de la aplicación, y por ello no son visibles.

Un error de página no tiene porqué ser un error fatal del sistema. Este tipo de errores no solo se utilizan para protección de memoria, sino también de otra forma interesante: el sistema operativo puede interceptar el error de página y puede cargar una página que ha sido trasladado a un disco, y volver a la aplicación que causó el error de página. De esta forma la aplicación obtiene la página de memoria requerida. Este concepto, conocido como swapping, permite desplazar a un disco los datos de la memoria que no se están usando, y traerlos de vuelta de forma transparente para las aplicaciones, aumentando así la capacidad de memoria.

Llaves de protección

El concepto de llave de protección, conocido en inglés como protection key, divide la memoria física en bloques de un tamaño particular (ej. 2KB), de forma que cada uno de ellos tiene asociado un número denominado llave de protección. Cada proceso está asociado con una llave de protección. A la hora de acceder a la memoria el hardware comprueba que la llave de protección del proceso actual coincide con el del bloque de memoria al que se accede, en caso contrario se produce una excepción. Este mecanismo se usó en la arquitectura del System/360.

Las llaves de protección del System/360 se asocian con direcciones físicas. No ha de confundirse con el concepto usado por procesadores tales como el Intel Itanium y el HP Precision Architecture (el HP/PA es también conocido como PA-RISC), que son asociados con direcciones virtuales, y que permiten múltiples llaves por proceso.

En las arquitecturas de la computadora PA las traducciones (entradas TLB) tienen llaves (Itanium) o "identificadores de acceso" (PA) asociados. Un proceso en ejecución tiene varios registros de llaves de protección: 16 en el caso del Itanium,[2] 4 en el caso del HP PA.[3] Una traducción seleccionada por la dirección virtual compara su llave con la de los otros registros de llave de protección. Si alguno de ellos coincide (además de superar otros tipos de pruebas), el acceso es permitido. Si ninguno coincide, entonces se genera un error o una excepción. El administrador de errores de software puede, en caso necesario, comparar la llave que falta con una larga lista de llaves mantenidas por el software. Por ello, los registros de llave de protección dentro del procesador pueden contemplarse como una caché controlada por software de una larga lista de llaves asociadas con un proceso,

PA tiene un tamaño de llave de entre 15-18 bits; Itanium requiere al menos 18 bits. Las llaves se asocian normalmente con "dominios de protección", tales como bibliotecas, módulos, etc.

Segmentación simulada

La simulación es el uso de un programa de vigilancia interpretar las instrucciones de código máquina de una computadora. Un simulador de un conjunto de instrucciones puede proveer protección de memoria usando un concepto similar al de segmentación, y validando la dirección destino y la longitud de cada instrucción en tiempo real antes de ejecutarlas. El simulador debe calcular la dirección destino y la longitud y compararla con una lista de rangos de direcciones válidas de las que dispone en un entorno de hilos de ejecución, tales como los bloques de memoria dinámica adquiridos desde la inception del hilo de ejecución más huecos de memoria estática compartida. El significado de "válido" puede cambiar a lo largo de la vida del thread dependiendo del contexto: en algunas ocasiones puede ser permisible alterar un bloque estático de almacenaje, en otras ocasiones no, dependiendo del modo de ejecución que puede variar según la llave de almacenaje o el estado de supervisión.

Generalmente no se recomienda utilizar este método de protección de memoria si se dispone de recursos ajustados en el CPU, dado que la pérdida de recursos de la computadora para procesar es considerable. Sin embargo, se usa normalmente para facilitar la búsqueda de errores, y para verificar el software, proveyendo un nivel de granularidad extremadamente fino para combatir la violación de almacenamiento, y puede indicar con exactitud que instrucción trata de sobrescribir una sección dada de almacenamiento, que podría tener la misma llave de almacenamiento que almacenamiento desprotegido. Antiguos sistemas de IBM de teleprocesamiento como por ejemplo, CICS, multi-threaded transacciones comerciales en almacenamiento desprotegido y compartido durante aprox. 20 años.

Direccionamiento basado en la capacidad

El direccionamiento basado en la capacidad es un interesante concepto para la protección de memoria, aunque ya no se use en las computadoras modernos. Bajo este concepto, los punteros son reemplazados por objetos protegidos (denominados capacidades) que solo pueden crearse mediante el uso de instrucciones privilegiadas que sólo pueden ejecutarse por el núcleo (o algún otro proceso con la autoridad para ello). Esto posibilita al núcleo controlar qué procesos pueden acceder qué objetos en la memoria sin tener que usar espacios de direcciones separados y sin la necesidad de cambios de contexto.

Mediciones

Una estimación útil sobre el nivel de protección de una implementación en particular es medir en que medida se ciñe al principio de menor privilegio.[4]

Protección de memoria en diferentes sistemas operativos

Son escasos los sistemas operativos que no hacen uso de la protección de memoria. La mayoría de los sistemas operativos de los PCs de los años 1970 y 1980, CP/M, y todas las variantes de MS-DOS no disponían de ella dado que fueron diseñados para ordenadores que no ofrecían el hardware necesario que la hacían viable. Incluso entonces, versiones de Microsoft Windows, comenzando con Windows 2.1x implementaron protección de memoria sobre el DOS en procesadores Intel 80286 o superiores.

Algunos de los sistemas operativos que disponen de protección de memoria incluyen:

Referencias

  1. a b (PDF) Intel 64 and IA-32 Architectures Software Developer's Manuals: Volume 3A: System Programming Guide, Part 1. Intel. 2008-07. http://www.intel.com/design/processor/manuals/253668.pdf. Consultado el 2008-08-21. 
  2. Keys in Itanium
  3. Memory protection in HP PA-RISC
  4. Cook, D.J. Measuring memory protection, accepted for 3rd International Conference on Software Engineering, Atlanta, Georgia, mayo 1978.

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Mira otros diccionarios:

  • Protección — ► sustantivo femenino 1 Acción y resultado de ayudar o resguardar de un mal: ■ corrió a él para que le diera protección. SINÓNIMO auxilio 2 Cosa o persona que protege: ■ una cueva le sirvió de protección contra la fuerte tormenta. SINÓNIMO amparo …   Enciclopedia Universal

  • Memoria (informática) — En informática, la memoria (también llamada almacenamiento) se refiere a parte de los componentes que forman parte de una computadora. Son dispositivos que retienen datos informáticos durante algún intervalo de tiempo. Las memorias de computadora …   Wikipedia Español

  • Memoria virtual — Cómo la memoria virtual se mapea a la memoria física. La memoria virtual es una técnica de administración de la memoria real que permite al sistema operativo brindarle al software de usuario y a sí mismo un espacio de direcciones mayor que la… …   Wikipedia Español

  • memoria — (Del lat. memorĭa). 1. f. Facultad psíquica por medio de la cual se retiene y recuerda el pasado. 2. En la filosofía escolástica, una de las potencias del alma. 3. Recuerdo que se hace o aviso que se da de algo pasado. 4. Exposición de hechos,… …   Diccionario de la lengua española

  • Memoria Activa — es una Asociación Civil sin fines de lucro argentina, creada con el fin de esclarecer las responsabilidades del atentado terrorista a la Asociación Mutual Israelita Argentina (AMIA). Contenido 1 Conformación 2 Estructura del acto semanal 3… …   Wikipedia Español

  • Memoria — (Del lat. memoria.) ► sustantivo femenino 1 SICOLOGÍA Capacidad para evocar hechos o experiencias del pasado: ■ a raíz del accidente ha perdido la memoria. 2 Capacidad de retener y repetir lo que se ha aprendido: ■ recuerda la lista de los reyes… …   Enciclopedia Universal

  • Memoria de acceso aleatorio — Para otros usos de este término, véase RAM (desambiguación). DIMM normal y corriente de memoria RAM tipo DDR3 de 240 contactos. La memoria de acceso aleatorio (en inglés: random access memory, cuyo acrónimo es RAM) es la memoria desde donde el …   Wikipedia Español

  • Memoria USB — Lector de tarjetas SD que actúa como memoria USB. Una memoria USB (de Universal Serial Bus; en inglés pendrive, USB flash drive), es un dispositivo de almacenamiento que utiliza una memoria flash para guardar información. Se lo conoce también con …   Wikipedia Español

  • Memoria extendida — La memoria extendida está por arriba de 1 MB, por arriba de la memoria convencional y el UMA. En un IBM PC o compatible con un microprocesador 80286 o posterior, la memoria extendida se refiere a la memoria por arriba del primer megabyte de… …   Wikipedia Español

  • Gestión de memoria — Se denomina gestión de memoria al acto de gestionar la memoria de un dispositivo informático. De forma simplificada se trata de proveer mecanismos para asignar secciones de memoria a los programas que las solicitan, y a la vez, liberar las… …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”