El sistema tiene muchas restricciones que limitan el poder
de cada proceso. Como dijimos antes, los drivers sólo pueden utilizar los
puertos de E/S autorizados, pero el acceso a las llamadas al kernel también
está controlado dependiendo del proceso, al igual que la habilidad de enviar
mensajes a otros procesos. Además, los procesos pueden otorgar un permiso
limitado a otros procesos para hacer que el kernel acceda a sus espacios de
direcciones. Como ejemplo, un sistema de archivos puede otorgar permiso al
dispositivo controlador de disco para dejar que el kernel coloque un bloque de
disco recién leído en una dirección específica dentro del espacio de
direcciones del sistema de archivos. El resultado de todas estas restricciones
es que cada driver y servidor tiene el poder exacto para realizar su trabajo y
no más, con lo cual se limita en forma considerable el daño que puede ocasionar
un componente defectuoso.
Una idea que está en parte relacionada con tener un kernel
mínimo es colocar el mecanismo para hacer algo en el kernel, pero no la
directiva. Para aclarar mejor este punto, considere la planificación de los
proceso. Un algoritmo de planificación relativamente simple sería asignar una
prioridad a cada proceso y después hacer que el kernel ejecute el proceso de
mayor prioridad que sea ejecutable. El mecanismo, en el kernel, es buscar el
proceso de mayor prioridad y ejecutarlo. La directiva, asignar prioridades a
los procesos, puede realizarse mediante los procesos en modo usuario. De esta
forma, la directiva y el mecanismo se pueden desacoplar y el kernel puede
reducir su tamaño.


No hay comentarios:
Publicar un comentario