Pregunta

tarea terminada para un curso de postgrado en sistemas operativos. Tengo una gran puntuación y sólo perdí un diminuto punto de una pregunta. Se preguntó que eran instrucciones privilegiadas y cuáles no. Respondí todos los datos correctamente, excepto uno: Adición de un valor de registro a otro

Me respondió que era privilegiada, pero al parecer no lo es! ¿Cómo puede ser esto?

Me imaginaba el usuario interactúa con registros / memoria mediante el uso de las llamadas sistemas, que en un cambio de sentido de las llamadas al sistema en modo de usuario al kernel rutinas de modo. Por tanto, la adición de un valor de registro a otro podría ser llamado por un usuario no privilegiado, pero al final el núcleo está haciendo el trabajo y está en núcleo, de modo privilegiado. Por lo tanto es privilegiada? Un usuario no puede hacerlo por sí mismos. ¿Me equivoco? ¡¿Por qué?!

  • Gracias!
¿Fue útil?

Solución

No estoy seguro de por qué se podría pensar que el cambio de un registro requeriría la intervención del kernel. Algunos registros especiales pueden contener información privilegiada (los que controlan cosas como tablas de descriptores o niveles de protección, con el que código en modo usuario podría protecciones del sistema en modo de derivación), pero registros de propósito general puede cambiarse libremente sin un núcleo involucrarse.

Cuando el código se ejecuta, el vasta mayoría de las instrucciones sería cosas como:

inc  %eax
movl $7,%ebx
addl %eax,%ebx

Como acotación al margen, sólo estoy imaginando cómo frenar mi código se ejecutaría si se requiere una llamada al sistema al kernel cada vez que incrementa un contador o llama a una función: -)

Lo único que se me ocurre sería si usted pensó que su hilo de ejecución no se permitió a los registros de cambio de forma arbitraria ya que puede afectar a los registros de otros hilos. Pero el núcleo se encargaría de que al cambiar las discusiones -. Todos sus registros serían embalados en algún sitio para más adelante y los de la siguiente hilo se cargarían en


Sobre la base de sus comentarios, usted parece pensar que el tiempo de adición es cuando el mecanismo de protección de la CPU debe intervenir. De hecho, no puede en ese momento, ya que no tiene idea de lo que vas a utilizar el registrarse para. Es posible que sólo lo utilizará como un contador.

Sin embargo, si no utilizarlo como una dirección de memoria de acceso, y que la memoria no es válida alguna manera (fuera de su espacio de direcciones, o intercambiado en el disco), el kernel intervenir en ese punto para rectificar la situación (tirar su aplicación a cabo en su oído, o traer a la memoria intercambiada en salir).

Sin embargo, incluso que no es una instrucción privilegiada, es sólo el manejo de fallos de página de la CPU.

Una instrucción privilegiada es algo que no está permitido hacer en absoluto, como cambiar la tabla de descriptor de registros de posición de interrupción o interrupciones en Desactivar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top