En informática , el direccionamiento basado en capacidades es un esquema utilizado por algunas computadoras para controlar el acceso a la memoria como una implementación eficiente de la seguridad basada en capacidades . Bajo un esquema de direccionamiento basado en capacidades, los punteros se reemplazan por objetos protegidos (llamados capacidades ) que especifican tanto una ubicación en la memoria como derechos de acceso que definen el conjunto de operaciones que se pueden llevar a cabo en la ubicación de la memoria. [1] Las capacidades solo se pueden crear o modificar mediante el uso de instrucciones privilegiadas que pueden ser ejecutadas únicamente por el núcleo o algún otro proceso privilegiado autorizado para hacerlo. Por lo tanto, un kernel puede limitar el acceso al código de la aplicación y a otros subsistemas a las porciones mínimas necesarias de memoria (y deshabilitar el acceso de escritura cuando corresponda), sin la necesidad de utilizar espacios de direcciones separados y, por lo tanto, requerir un cambio de contexto cuando se produce un acceso.
Implementaciones prácticas
Hay dos técnicas disponibles para su implementación:
- Requieren que las capacidades se almacenen en un área particular de la memoria en la que el proceso que las utilizará no puede escribir. Por ejemplo, el Plessey System 250 requería que todas las capacidades se almacenaran en segmentos de lista de capacidades.
- Amplíe la memoria con un bit adicional, grabable sólo en modo supervisor, que indica que una ubicación particular es una capacidad. Esta es una generalización del uso de bits de etiquetas para proteger descriptores de segmentos en los grandes sistemas de Burroughs , y se utilizó para proteger capacidades en IBM System/38 .
Direccionamiento de capacidades en IBM System/38 y AS/400
El sistema operativo System/38 CPF admitía dos tipos de punteros de objetos: punteros autorizados y punteros no autorizados ; el primero era la implementación de la plataforma de direccionamiento basado en capacidades. [2] Ambos tipos de puntero sólo podían manipularse mediante instrucciones privilegiadas y se diferenciaban únicamente en si las autorizaciones de objetos (es decir, derechos de acceso) estaban codificadas o no en el contenido del puntero. Los punteros no autorizados no codificaban las autorizaciones de objetos y requerían que el sistema operativo verificara la autorización del objeto por separado para determinar si se permitía el acceso al objeto. Los punteros autorizados codificaban autorizaciones de objetos, lo que significa que la posesión del puntero implicaba acceso y no era necesario que el sistema operativo verificara la autorización por separado. Los punteros autorizados eran irrevocables por diseño: si se modificaban las autorizaciones del objeto, no se alterarían las autorizaciones codificadas en ningún puntero autorizado que ya existiera.
Las primeras versiones del sistema operativo OS/400 para AS/400 también soportaban punteros autorizados y, por extensión, direccionamiento basado en capacidades. Sin embargo, los punteros autorizados se eliminaron en la versión V1R3 de OS/400 ya que su naturaleza irrevocable pasó a ser vista como un problema de seguridad. [3] Desde entonces, todas las versiones de OS/400 (más tarde IBM i) se basan únicamente en punteros no autorizados que no admiten el direccionamiento basado en capacidades.
Cronología de sistemas que adoptan direccionamiento basado en capacidades
Referencias
- ^ Levy, Henry M. (16 de mayo de 2014). "Conceptos de capacidad y sistemas basados en objetos" (PDF) . Sistemas informáticos basados en capacidades . Prensa digital. pag. 3-4. ISBN 978-1-4831-0106-4.
- ^ Levy, Henry M. (16 de mayo de 2014). "El sistema IBM/38" (PDF) . Sistemas informáticos basados en capacidades . Prensa digital. ISBN 978-1-4831-0106-4.
- ^ Soltis, Frank (1997). Dentro del AS/400: presenta la serie AS400e (2ª ed.). Prensa de Duque. ISBN 978-1-882419-66-1.
Otras lecturas
- Fabry, RS (1974). "Direccionamiento basado en capacidades". Comunicaciones de la ACM . 17 (7): 403–412. doi : 10.1145/361011.361070 . S2CID 5702682.
- Wulf, W .; Cohen, E.; Corwin, W.; Jones, A.; Levin, R.; Pierson, C.; Pollack, F. (junio de 1974). "HYDRA: el núcleo de un sistema operativo multiprocesador". Comunicaciones de la ACM . 17 (6): 337–345. doi : 10.1145/355616.364017 . ISSN 0001-0782. S2CID 8011765.
- Denning, PJ (diciembre de 1976). "Sistemas operativos tolerantes a fallos". Encuestas de Computación ACM . 8 (4): 359–389. doi :10.1145/356678.356680. ISSN 0360-0300. S2CID 207736773.
- Levy, Henry M. (1984). Sistemas informáticos basados en capacidades. Maynard, Misa: Prensa digital. ISBN 978-0-932376-22-0.
- Linden, Theodore A. (diciembre de 1976). "Estructuras del sistema operativo para respaldar la seguridad y el software confiable". Encuestas de Computación ACM . 8 (4): 409–445. doi :10.1145/356678.356682. hdl : 2027/mdp.39015086560037 . ISSN 0360-0300. S2CID 16720589.Mismo documento que el informe para el NIST de EE. UU.
- Berstis, Viktors (6 al 8 de mayo de 1980). "Seguridad y protección de datos en el IBM System/38". Actas del séptimo simposio anual sobre arquitectura informática . La Baule, Estados Unidos. págs. 245-252. doi : 10.1145/800053.801932 .
- Sincoskie, W. David ; Farber, David J. (julio de 1980). "SODS/OS: sistema operativo distribuido para IBM Series/1". Revisión de los sistemas operativos ACM SIGOPS . 14 (3): 46–54. doi :10.1145/850697.850704. S2CID 14245116.
- Myers, GJ ; Buckingham, BRS (octubre de 1980). "Una implementación de hardware de direccionamiento basado en capacidades". Revisión de los sistemas operativos ACM SIGOPS . 14 (4): 13–25. doi :10.1145/641914.641916. S2CID 17390439.
- Houdek, YO; Soltis, FG ; Hoffman, RL (mayo de 1981). "Soporte de IBM System/38 para direccionamiento basado en capacidades". Actas del 8º Simposio Internacional ACM sobre Arquitectura de Computadores . ACM/IEEE. págs. 341–348.
- Ratonero, GD; Mudge, TN (agosto de 1983). Sistemas informáticos basados en objetos y el lenguaje de programación Ada (Reporte). Universidad de Michigan - Laboratorio de Investigación en Computación y Laboratorio de Investigación en Robótica Departamento de Ingeniería Eléctrica e Informática. hdl :2027.42/3992.
enlaces externos
- "Sobre la difusión del enfoque de capacidades". cap-talk (lista de correo). Archivado desde el original el 14 de abril de 2013 . Consultado el 16 de julio de 2007 .