La protección que se ofrece en los sistemas de computación
existentes casi siempre se ha logrado con la ayuda del núcleo de un sistema
operativo, que actúa como agente de seguridad que inspecciona y valida cada
intento por acceder a un recurso protegido. Puesto que la validación de todos
los accesos puede dar pie a un gasto extra considerable, debemos apoyarla con
hardware para reducir el costo de cada validación o bien debemos aceptar que el
diseñador del sistema podría inclinarse por sacrificar los objetivos de la
protección. Es difícil satisfacer todos estos objetivos si los mecanismos de
soporte con que se cuenta restringen la flexibilidad para implementar diversas
políticas de protección.
A medida que ha aumentado la complejidad de los sistemas
operativos, sobre todo al trata de ofrecer interfaces de más alto nivel con el
usuario, lo objetivos de la protección se han vuelto mucho más refinados. En
esta refinación observamos que los diseñadores de los diseñadores de los
sistemas de protección se han apoyado mucho en ideas que se originaron en los
lenguajes de programación y especialmente en los conceptos de tipos de datos
abstractos y objetos. Los sistemas de protección ahora se ocupan no sólo de la
identidad de un recurso al cual se intenta acceder, sino también de la
naturaleza funcional de ese acceso. En los sistemas de protección más nuevos,
el interés en la función que se invocará se extiende más allá de un conjunto de
funciones definidas por el sistema, como los métodos de acceso a archivos
estándar, para incluir funciones que también podrían ser definidas por el
usuario.
SILBERSCHATZ, Abraham; GALVIN, Peter, “Sistemas Operativos”
(1999). Comentan que las políticas para el uso de recursos también podrían
variar, dependiendo de la aplicación, y podrían cambiar con el tiempo. Por
estas razones, la protección ya no puede considerarse como un asunto que sólo concierne
al diseñador de un sistema operativo; también debe estar disponible como
herramienta que el diseñador de aplicaciones pueda usar para proteger los
recursos de un subsistema de aplicación contra intervenciones o errores.
Aquí es donde los lenguajes de programación entran en
escena. Especificar el control de acceso deseado a un recurso compartido en un
sistema es hacer una declaración acerca del recurso. Este tipo de declaración
se puede integrar en un lenguaje mediante una extensión de su mecanismo de
tipificación. Si se declara la protección junto con la tipificación de los
datos, el diseñado de cada subsistema puede especificar sus necesidades de
protección así debería darse directamente durante la redacción del programa, y
en el lenguaje en el que el programa mismo se expresa. Este enfoque tiene
varias ventajas importantes:
1. 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.
2. Las necesidades de protección pueden expresarse
independientemente de los recursos que ofrezca un sistema operativo en
particular.
3. El diseñador de un
subsistema no tiene que proporcionar los mecanismos para hacer cumplir la
protección.
4. 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.
No hay comentarios:
Publicar un comentario