2012-02-11 11 views
27

Lamento hacer esta pregunta cuando ya se ha pedido, pero no pude obtener una aclaración de ellos. Por lo que estoy haciendo las siguientes preguntas relacionadas para obtener la diferencia entre la llamada al sistema (modo de interruptor) y cambio de contextoLlamada al sistema e interruptor de contexto

  • Por qué se dice que la llamada al sistema no requiere cambio de contexto cuando el contexto de la proceso que hace que la llamada tenga que ser guardada y luego recargada. ¿Es solo porque de acuerdo con la definición de cambio de contexto se debe hacer un cambio a otro proceso?

  • ¿Qué significa que cuando se realiza una llamada al sistema, el kernel se ejecuta en "contexto del usuario".

  • De acuerdo con el artículo de Wikipedia: http://en.wikipedia.org/wiki/Context_switch

cambio de contexto no es necesario para la llamada al sistema, sino que depende del sistema operativo y un cambio de contexto podría ocurrir durante una llamada al sistema. Me pregunto qué pasaría en el caso cuando el cambio de contexto tenga lugar en el momento de la llamada al sistema. ¿Algún ejemplo?

Respuesta

51

Debe entender que un contexto de subproceso/proceso tiene varias partes, una, directamente asociada con la ejecución y guardada en la CPU y ciertas tablas del sistema en memoria que utiliza la CPU (p. Ej. Tablas de página) y la otra que es necesario para el sistema operativo, para la contabilidad (piense en los diversos identificadores, identificadores, permisos especiales específicos del sistema operativo, conexiones de red, etc.).

Un cambio de contexto completo implicaría el intercambio de ambos, el hilo/proceso actual desaparecerá por un tiempo y el hilo/proceso actual entrará en acción por un tiempo. Esa es la esencia de la programación de subprocesos/procesos.

Ahora, las llamadas al sistema son muy diferentes w.r.t. El uno al otro.

Considere algo simple, por ejemplo, la llamada al sistema para solicitar la fecha y hora actuales. La CPU cambia del usuario al modo kernel, conserva los valores de registro en modo usuario, ejecuta algunos códigos de kernel para obtener los datos necesarios, los almacena en la memoria o los registra a los que puede acceder la persona que llama, restaura los valores de registro en modo usuario y devoluciones. No hay mucho cambio de contexto aquí, solo lo que se necesita para la transición entre los modos, usuario y kernel.

Considere ahora una llamada al sistema que implique el bloqueo de la persona que llama hasta algún evento o disponibilidad de datos. La manipulación de mutexes y la lectura de archivos serían ejemplos de tales llamadas al sistema. En este caso, el kernel se ve obligado a guardar el contexto completo de la persona que llama, marcarlo como bloqueado para que el planificador no pueda ejecutarlo hasta que llegue ese evento o datos, y cargar el contexto de otro proceso/subproceso listo, para que pueda ejecutarse .

Así es como las llamadas al sistema están relacionadas con los cambios de contexto.

Kernel ejecutándose en el contexto de un usuario o un proceso significa que siempre que el kernel trabaje en nombre de un determinado proceso o usuario, debe tener en cuenta el contexto de ese usuario/proceso, p. el proceso actual/subproceso/ID de usuario, el directorio actual, la configuración regional, los permisos de acceso para varios recursos (por ejemplo, archivos), todo eso, que puede ser diferente entre diferentes procesos/subprocesos/usuarios.

Si los procesos tienen espacios de direcciones individuales, los espacios de direcciones también forman parte del contexto del proceso.Entonces, cuando el kernel necesita acceder a la memoria de un proceso (para leer/escribir datos de archivos o paquetes de red), tiene que tener acceso al espacio de direcciones del proceso, IOW, tiene que estar en su contexto (no significa, sin embargo, que el kernel tiene que cargar el contexto completo solo para acceder a la memoria en un espacio de direcciones específico).

¿Le fue útil?

+1

Awesome explanation! ¡¡Gracias!! Definitivamente útil :) – vjain27

+0

Gracias por la claridad. Todavía tengo una cosa en mente. Si las próximas páginas de proceso se han intercambiado, también habrá un costo por cambiarlas (páginas) en la memoria, ¿verdad? – zgulser

+0

@zgulser Naturalmente. –

-1

interruptor de modo se produce cuando un usuario solo desea acceder a cosas que solo son adecuadas para un modo kernel

+0

Esto parece un comentario mediocre, pero no como una respuesta. Pasó un tiempo "serio" al dar las respuestas, en lugar de tirar una frase que no tiene signos de puntuación y lee muy bien, un pensamiento abandonado sin ningún intento de ayudar a sus lectores. – GhostCat

Cuestiones relacionadas