Anda di halaman 1dari 4

PROTECCIN DE MEMORIA

La proteccin de memoria, del ingls memory protection, es un mtodo para controlar el uso de memoria en una computadora, y es parte esencial de prcticamente todos los sistemas operativosmodernos. El principal propsito de la proteccin 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 ejecucin del software, y tambin se evita que software maligno acceda a los recursos del sistema.

Mtodos
Segmentacin
La segmentacin (segmentation en ingls) hace referencia a la divisin de la memoria de una computadora en segmentos. La arquitectura del x86 cuenta con diferentes opciones para la segmentacin para quien desee proteccin de memoria en esta arquitectura.1 En la arquitectura del x86, la Global Descriptor Table y laLocal 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 tambin pueden almacenarse en los registros de segmentos del procesor. Inicialmente el x86 tena 4 registros de segmentos: CS (code segment), SS (stack segment), DS (data segment) y ES (extra segment); para aadirse posteriormente dos registros ms FS and GS.

Pginas
Este concepto, conocido en ingls como Paging, se basa en dividir el espacio de direcciones de memoria en pequeas piezas idnticas llamadas pginas. Usando un mecanismo de memoria virtualse consigue que cada pgina resida en cualquier ubicacin dentro de la memoria fsica, 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 fsica. La mayora de las arquitecturas de las computadoras basados en pginas, entre ellos la arquitectura del x86, hacen uso de la proteccin de memoria. Se usa una tabla de pginas para asociar la memoria virtual con la memoria fsica. La tabla de pginas resulta transparente durante el proceso. Las tablas de memoria facilitan la asignacin de memoria nueva, dado que cada pgina puede ser asignada desde cualquier memoria fsica. Esta solucin impide que una aplicacin acceda anuna pgina que no le ha sido explcitamente asignada, pues todas las direcciones de memoria, incluso las aleatorias, que son usadas por una aplicacin, apuntan a una pgina asignada o generan un page fault, PF (error de pgina). Las pginas que no han sido asignadas no tienen una direccin desde el punto de vista de la aplicacin, y por ello no son visibles.

Un error de pgina no tiene porqu ser un error fatal del sistema. Este tipo de errores no solo se utilizan para proteccin de memoria, sino tambin de otra forma interesante: el sistema operativo puede interceptar el error de pgina y puede cargar una pgina que ha sido trasladado a un disco, y volver a la aplicacin que caus el error de pgina. De esta forma la aplicacin obtiene la pgina de memoria requerida. Este concepto, conocido como swapping, permite desplazar a un disco los datos de la memoria que no se estn usando, y traerlos de vuelta de forma transparente para las aplicaciones, aumentando as la capacidad de memoria.

Llaves de proteccin
El concepto de llave de proteccin, conocido en ingls como protection key, divide la memoria fsica en bloques de un tamao particular (ej. 2KB), de forma que cada uno de ellos tiene asociado un nmero denominado llave de proteccin. Cada proceso est asociado con una llave de proteccin. A la hora de acceder a la memoria el hardware comprueba que la llave de proteccin del proceso actual coincide con el del bloque de memoria al que se accede, en caso contrario se produce una excepcin. Este mecanismo se us en la arquitectura del System/360. Las llaves de proteccin del System/360 se asocian con direcciones fsicas. No ha de confundirse con el concepto usado por procesadores tales como el Intel Itanium y el HP Precision Architecture(el HP/PA es tambin conocido como PA-RISC), que son asociados con direcciones virtuales, y que permiten mltiples 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 ejecucin tiene varios registros de llaves de proteccin: 16 en el caso del Itanium,2 4 en el caso del HP PA.3 Una traduccin seleccionada por la direccin virtual compara su llave con la de los otros registros de llave de proteccin. Si alguno de ellos coincide (adems de superar otros tipos de pruebas), el acceso es permitido. Si ninguno coincide, entonces se genera un error o una excepcin. 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 proteccin dentro del procesador pueden contemplarse como una cach controlada por software de una larga lista de llaves asociadas con un proceso,PA tiene un tamao de llave de entre 15-18 bits; Itanium requiere al menos 18 bits. Las llaves se asocian normalmente con "dominios de proteccin", tales como bibliotecas, mdulos, etc.

Segmentacin simulada
La simulacin es el uso de un programa de vigilancia interpretar las instrucciones de cdigo mquina de una computadora. Un simulador de un conjunto de instrucciones puede proveer proteccin de memoria usando un concepto similar al de segmentacin, y validando la direccin destino y la longitud de cada instruccin en tiempo real antes de ejecutarlas. El simulador debe calcular la direccin destino y la longitud y compararla con una lista de rangos de direcciones vlidas de las que dispone en un entorno de hilos de ejecucin, tales como los bloques de memoria dinmica adquiridos desde la inception del hilo de ejecucin ms huecos de memoria esttica compartida. El significado de "vlido" puede cambiar a lo largo de la vida del thread dependiendo del contexto: en algunas ocasiones puede ser permisible

alterar un bloque esttico de almacenaje, en otras ocasiones no, dependiendo del modo de ejecucin que puede variar segn la llave de almacenaje o el estado de supervisin.Generalmente no se recomienda utilizar este mtodo de proteccin de memoria si se dispone de recursos ajustados en el CPU, dado que la prdida de recursos de la computadora para procesar es considerable. Sin embargo, se usa normalmente para facilitar la bsqueda de errores, y para verificar el software, proveyendo un nivel de granularidad extremadamente fino para combatir la violacin de almacenamiento, y puede indicar con exactitud que instruccin trata de sobrescribir una seccin dada de almacenamiento, que podra 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 aos.

Direccionamiento basado en la capacidad


El direccionamiento basado en la capacidad es un interesante concepto para la proteccin 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 slo pueden ejecutarse por el ncleo (o algn otro proceso con la autoridad para ello). Esto posibilita al ncleo 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 estimacin til sobre el nivel de proteccin de una implementacin en particular es medir en que medida se cie al principio de menor privilegio.

Proteccin de memoria en diferentes sistemas operativos


Son escasos los sistemas operativos que no hacen uso de la proteccin de memoria. La mayora de los sistemas operativos de los PCs de los aos 1970 y 1980, CP/M, y todas las variantes de MS-DOS no disponan de ella dado que fueron diseados para ordenadores que no ofrecan el hardware necesario que la hacan viable. Incluso entonces, versiones de Microsoft Windows, comenzando conWindows 2.1x implementaron proteccin de memoria sobre el DOS en procesadores Intel 80286 o superiores.Algunos de los sistemas operativos que disponen de proteccin de memoria incluyen: La familia Microsoft Windows La mayora de sistemas tipo Unix incluyendo: Solaris Linux

BSD Mac OS X (el anterior Mac OSes tena una proteccin de memoria limitada)

Si se tiene el esquema hardware del registro base, para lograr la proteccin de las zonas de memoria basta con aadir un nuevo registro, denominado registro lmite. Este registro guarda la ltima direccin de la particin, y forma tambin parte del PCB del proceso. El hardware, despus de sumar el registro base a la direccin relativa, comprueba que la direccin obtenida no supere el valor del registro lmite. Si se supera el valor, se est intentando acceder a una zona que no corresponde al proceso; en esta situacin, el hardware genera una interrupcin.

El Sistema Operativo sirve a la interrupcin, lo normal es que mande una seal al proceso por violacin de memoria. Si el proceso no tiene definido atrapar esa seal, lo cual es lo ms probable, se eliminar al proceso. Cuando un proceso quiera ejecutar cdigo del sistema operativo, por ejemplo, para realizar una E/S, no tiene acceso directo a las rutinas que tiene el Sistema Operativo en memoria para implementar dicha funcin, sino que debe realizar una llamada al sistema para no violar la proteccin. Este esquema es necesario, pues los programas de usuario tienen que avisar al sistema operativo de que le solicitan servicios (al hacer una llamada al sistema)

El Sistema Operativo atender las peticiones si son correctas, o si pueden ser factibles en dicho momento (por ejemplo, no se asignar una impresora que est siendo utilizada por otro proceso), realiza una desfragmentacin interna.

Anda mungkin juga menyukai