La especificación de protección en un
lenguaje de programación permite la descripción de alto nivel de políticas para
la asignación y uso de recursos.
La implementación del lenguaje puede
proveer software para hacer cumplir la protección cuando no se pueda validar si
el hardware está soportado.
Interpretar las especificaciones de
protección para generar llamadas en cualquier sistema de protección provisto
por el hardware y el SO.
Protección en java 2
-La protección la maneja la máquina
virtual (JVM)
La JVM asigna un dominio de protección a
una clase cuando la carga.
El dominio de protección indica qué
operaciones puede (y no puede) realizar la clase.
Si se invoca un método de biblioteca y
éste realiza una operación privilegiada, se examina el stack para
asegurar que la biblioteca pueda realizar la operación
Este enfoque tiene varias ventajas
importantes:
*Las necesidades de protección se
declaran de forma sencilla en vez de programarse como una secuencia de llamadas
a procedimientos de un sistema operativo.
*Las necesidades de protección
pueden expresarse independientemente de los recursos que ofrezca un sistema
operativo en particular.
*El diseñador de un subsistema no
tiene que proporcionar los mecanismos para hacer cumplir la protección.
*Una notación declarativa es
natural porque los privilegios de acceso están íntimamente relacionados con el
concepto lingüístico de tipo de datos.
*Hay diversas técnicas que una
implementación de lenguaje de programación puede utilizar para hacer cumplir la
protección, pero cualquiera de ellas deberá depender hasta cierto punto del
grado de soporte de una máquina subyacente y su sistema operativo.
Seguridad: La
obligación del cumplimiento por un núcleo ofrece un mayor grado de seguridad
del sistema de protección mismo, que el que ofrece la generación de código de
verificación de protección por un compilador. En un esquema apoyado por
compilador, la seguridad depende de lo correcto que sea el traductor, de algún
mecanismo subyacente de gestión de almacenamiento que proteja los segmentos
desde los cuales se ejecuta el código compilador y, en última instancia, de la
seguridad de los archivos desde los que se carga el programa.
Flexibilidad: Hay
límites a la flexibilidad de un núcleo de protección para implementar una
política definida por el usuario, aunque podría proporcionar recursos
suficientes para que el sistema haga cumplir sus propias políticas. Con un
lenguaje de programación, se puede declarar la política de protección y hacerse
cumplir según sea necesario en una implementación.
Eficiencia: Se
logra la eficiencia máxima cuando hardware apoya directamente el cumplimiento
de la protección. En la medida en que se requiera soporte de software, el
cumplimiento basado en el lenguaje tiene la ventaja de que es posible verificar
el cumplimiento del acceso estático fuera de línea en el momento de la
compilación.
En síntesis, la
especificación de la protección en un lenguaje de programación permite
describir un alto nivel de políticas de asignación y uso de recursos.
No hay comentarios:
Publicar un comentario