Sistemas operativos modernos

quitectura etiquetada: un diseño de hardware en el que cada palabra de memoria tiene un bit adicional (etiqueta) que indica si la palabra contiene una capacidad o no. El bit de etiqueta no se usa en las instrucciones aritméticas, de comparación ni en las demás instrucciones ordina­ rias, y sólo puede ser modificado por programas que se ejecutan en modo de kemel (es decir, el sistema operativo). Se han construido máquinas con arquitectura etiquetada y se ha logrado que funcionen bien (Feustal, 1972). La IBM AS/400 es un buen ejemplo. El segundo método consiste en mantener la lista C dentro del sistema operativo. Entonces se hará referencia a las capacidades por su posición en la lista de capacidades. Un proceso po­ dría decir: “Leer 1 KB del archivo al que apunta la capacidad 2”. Esta forma de direcciona­ miento es similar al uso de descriptores de archivo en UNIX. Hydra (Wulf et al., 1974) funcionaba así. La tercera posibilidad es mantener la lista C en espacio de usuario, pero manejar las capa­ cidades en forma criptográfica para que los usuarios no puedan alterarlas. Este método es muy apropiado para los sistemas distribuidos y funciona como sigue: cuando un proceso cliente envía un mensaje a un servidor remoto, por ejemplo, un servidor de archivos, para crear un objeto pa­ ra él, el servidor crea el objeto y genera un número aleatorio grande, el campo de verificación, que lo acompaña. Se reserva una ranura para el objeto en la tabla de archivos del servidor, y el campo de verificación se guarda ahí junto con las direcciones de los bloques de disco, etc. En términos de UNIX, el campo de verificación se guarda en el servidor en el nodo-i; no se de­ vuelve al usuario y nunca se transmite por la red. Luego, el servidor genera y devuelve al usua­ rio una capacidad con el formato que se muestra en la figura 9-28. Servidor Objetos Derechos f(Obje{os, Derechos, Verificación) Figura 9-28. Capacidad protegida en forma criptográfica. La capacidad devuelta al usuario contiene el identificador del servidor, el número de obje­ to (su índice en las tablas del servidor, que en esencia es el número de nodo-i) y los derechos en forma de mapa de bits. En el caso de un objeto recién creado, todos los bits de derechos es­ tán encendidos. Ei último campo contiene el resultado de la concatenación del objeto, los de­ rechos y el campo de verificación, ejecutados mediante una función unidireccional segura desde el punto de vista criptográfico,/, del tipo que ya vimos. Cuando el usuario desea tener acceso al objeto, envía la capacidad al servidor como parte de la solicitud. El servidor extrae entonces el número de objeto y lo usa como índice para consultar sus tablas y encontrar el objeto. Luego calculafiObjeto, Derechos, Verificación) tomando los dos primeros parámetros de la capacidad y el tercero de sus propias tablas. Si el resultado coincide con el cuarto campo de la capacidad, se atiende la solicitud; de lo contrario, se rechaza. Si un usuario trata de tener acceso a un objeto de otro usuario, no podrá generar el cuarto campo en for­ ma correcta porque no conoce el campo de verificación, y la solicitud será rechazada. Un usuario puede pedir al servidor que genere una capacidad más débil, por ejemplo, pa­ ra acceso de sólo lectura. Primero el servidor verifica que la capacidad sea válida. Si lo es, el

RkJQdWJsaXNoZXIy MjI4NDcx