fbpx
Wikipedia

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.

Métodos

Segmentación

La segmentación, en inglés, segmentation, 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 procesadores x86 también pueden almacenarse en los registros de segmentos del procesador. 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 a una 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 por qué 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 y variable (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 solo 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:

Véase también

Referencias

  1. Intel (2008-07). Intel 64 and IA-32 Architectures Software Developer's Manuals: Volume 3A: System Programming Guide, Part 1 (PDF). Intel. Consultado el 21 de agosto de 2008. 
  2. Keys in Itanium el 28 de noviembre de 2007 en Wayback Machine.
  3. . Archivado desde el original el 7 de junio de 2011. Consultado el 17 de marzo de 2009. 
  4. Cook, D.J. Measuring memory protection, accepted for 3rd International Conference on Software Engineering, Atlanta, Georgia, mayo 1978.

Enlaces externos

  •   Datos: Q163585

protección, memoria, protección, memoria, inglés, memory, protection, método, para, controlar, memoria, computadora, parte, esencial, prácticamente, todos, sistemas, operativos, modernos, principal, propósito, protección, memoria, evitar, proceso, sistema, ope. La proteccion de memoria del ingles memory protection es un metodo para controlar el uso de memoria en una computadora y es parte esencial de practicamente todos los sistemas operativos modernos El principal proposito de la proteccion de memoria es evitar que un proceso en un sistema operativo acceda a la memoria que no le ha sido asignada Asi pueden evitarse problemas durante la ejecucion del software y tambien se evita que software maligno acceda a los recursos del sistema Indice 1 Metodos 1 1 Segmentacion 1 2 Paginas 1 3 Llaves de proteccion 1 4 Segmentacion simulada 1 5 Direccionamiento basado en la capacidad 2 Mediciones 3 Proteccion de memoria en diferentes sistemas operativos 4 Vease tambien 5 Referencias 6 Enlaces externosMetodos EditarSegmentacion Editar La segmentacion en ingles segmentation hace referencia a la division de la memoria de una computadora en segmentos La arquitectura del x86 cuenta con diferentes opciones para la segmentacion para quien desee proteccion 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 procesadores x86 tambien pueden almacenarse en los registros de segmentos del procesador Inicialmente el x86 tenia 4 registros de segmentos CS code segment SS stack segment DS data segment y ES extra segment para anadirse posteriormente dos registros mas FS and GS 1 Paginas Editar Este concepto conocido en ingles como Paging se basa en dividir el espacio de direcciones de memoria en pequenas piezas identicas llamadas paginas Usando un mecanismo de memoria virtual se consigue que cada pagina resida en cualquier ubicacion dentro de la memoria fisica 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 fisica La mayoria de las arquitecturas de las computadoras basados en paginas entre ellos la arquitectura del x86 hacen uso de la proteccion de memoria Se usa una tabla de paginas para asociar la memoria virtual con la memoria fisica La tabla de paginas resulta transparente durante el proceso Las tablas de memoria facilitan la asignacion de memoria nueva dado que cada pagina puede ser asignada desde cualquier memoria fisica Esta solucion impide que una aplicacion acceda a una pagina que no le ha sido explicitamente asignada pues todas las direcciones de memoria incluso las aleatorias que son usadas por una aplicacion apuntan a una pagina asignada o generan un page fault PF error de pagina Las paginas que no han sido asignadas no tienen una direccion desde el punto de vista de la aplicacion y por ello no son visibles Un error de pagina no tiene por que ser un error fatal del sistema Este tipo de errores no solo se utilizan para proteccion de memoria sino tambien de otra forma interesante el sistema operativo puede interceptar el error de pagina y puede cargar una pagina que ha sido trasladado a un disco y volver a la aplicacion que causo el error de pagina De esta forma la aplicacion obtiene la pagina de memoria requerida Este concepto conocido como swapping permite desplazar a un disco los datos de la memoria que no se estan usando y traerlos de vuelta de forma transparente para las aplicaciones aumentando asi la capacidad de memoria Llaves de proteccion Editar El concepto de llave de proteccion conocido en ingles como protection key divide la memoria fisica en bloques de un tamano particular y variable ej 2KB de forma que cada uno de ellos tiene asociado un numero denominado llave de proteccion Cada proceso esta asociado con una llave de proteccion A la hora de acceder a la memoria el hardware comprueba que la llave de proteccion del proceso actual coincide con el del bloque de memoria al que se accede en caso contrario se produce una excepcion Este mecanismo se uso en la arquitectura del System 360 Las llaves de proteccion del System 360 se asocian con direcciones fisicas No ha de confundirse con el concepto usado por procesadores tales como el Intel Itanium y el HP Precision Architecture el HP PA es tambien conocido como PA RISC que son asociados con direcciones virtuales y que permiten multiples 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 ejecucion tiene varios registros de llaves de proteccion 16 en el caso del Itanium 2 4 en el caso del HP PA 3 Una traduccion seleccionada por la direccion virtual compara su llave con la de los otros registros de llave de proteccion Si alguno de ellos coincide ademas de superar otros tipos de pruebas el acceso es permitido Si ninguno coincide entonces se genera un error o una excepcion 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 proteccion dentro del procesador pueden contemplarse como una cache controlada por software de una larga lista de llaves asociadas con un proceso PA tiene un tamano de llave de entre 15 18 bits Itanium requiere al menos 18 bits Las llaves se asocian normalmente con dominios de proteccion tales como bibliotecas modulos etc Segmentacion simulada Editar La simulacion es el uso de un programa de vigilancia interpretar las instrucciones de codigo maquina de una computadora Un simulador de un conjunto de instrucciones puede proveer proteccion de memoria usando un concepto similar al de segmentacion y validando la direccion destino y la longitud de cada instruccion en tiempo real antes de ejecutarlas El simulador debe calcular la direccion destino y la longitud y compararla con una lista de rangos de direcciones validas de las que dispone en un entorno de hilos de ejecucion tales como los bloques de memoria dinamica adquiridos desde la inception del hilo de ejecucion mas huecos de memoria estatica compartida El significado de valido puede cambiar a lo largo de la vida del thread dependiendo del contexto en algunas ocasiones puede ser permisible alterar un bloque estatico de almacenaje en otras ocasiones no dependiendo del modo de ejecucion que puede variar segun la llave de almacenaje o el estado de supervision Generalmente no se recomienda utilizar este metodo de proteccion de memoria si se dispone de recursos ajustados en el CPU dado que la perdida de recursos de la computadora para procesar es considerable Sin embargo se usa normalmente para facilitar la busqueda de errores y para verificar el software proveyendo un nivel de granularidad extremadamente fino para combatir la violacion de almacenamiento y puede indicar con exactitud que instruccion trata de sobrescribir una seccion dada de almacenamiento que podria 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 anos Direccionamiento basado en la capacidad Editar El direccionamiento basado en la capacidad es un interesante concepto para la proteccion 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 solo pueden ejecutarse por el nucleo o algun otro proceso con la autoridad para ello Esto posibilita al nucleo controlar que procesos pueden acceder que objetos en la memoria sin tener que usar espacios de direcciones separados y sin la necesidad de cambios de contexto Mediciones EditarUna estimacion util sobre el nivel de proteccion de una implementacion en particular es medir en que medida se cine al principio de menor privilegio 4 Proteccion de memoria en diferentes sistemas operativos EditarSon escasos los sistemas operativos que no hacen uso de la proteccion de memoria La mayoria de los sistemas operativos de los PCs de los anos 1970 y 1980 CP M y todas las variantes de MS DOS no disponian de ella dado que fueron disenados para ordenadores que no ofrecian el hardware necesario que la hacian viable Incluso entonces versiones de Microsoft Windows comenzando con Windows 2 1x implementaron proteccion de memoria sobre el DOS en procesadores Intel 80286 o superiores Algunos de los sistemas operativos que disponen de proteccion de memoria incluyen La familia Microsoft Windows La mayoria de sistemas tipo Unix incluyendo Solaris Linux BSD Mac OS X el anterior Mac OSes tenia una proteccion de memoria limitada Vease tambien EditarSpectre vulnerabilidad Meltdown vulnerabilidad Referencias Editar a b Intel 2008 07 Intel 64 and IA 32 Architectures Software Developer s Manuals Volume 3A System Programming Guide Part 1 PDF Intel Consultado el 21 de agosto de 2008 Keys in Itanium Archivado el 28 de noviembre de 2007 en Wayback Machine Memory protection in HP PA RISC Archivado desde el original el 7 de junio de 2011 Consultado el 17 de marzo de 2009 Cook D J Measuring memory protection accepted for 3rd International Conference on Software Engineering Atlanta Georgia mayo 1978 Enlaces externos EditarEsta obra contiene una traduccion derivada de memory protection de Wikipedia en ingles publicada por sus editores bajo la Licencia de documentacion libre de GNU y la Licencia Creative Commons Atribucion CompartirIgual 3 0 Unported Intel Developer Manuals in depth information on memory protection for Intel based architectures Datos Q163585 Obtenido de https es wikipedia org w index php title Proteccion de memoria amp oldid 147355733, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos