valor tipos sistemas quien procesos proceso operativos hilos estados estado encarga ejemplos cuando contexto concepto cambio cambiar bloquea process operating-system system-calls

process - tipos - hilos sistemas operativos



llamada al sistema y cambio de contexto (2)

Debe comprender que el contexto de un subproceso / proceso tiene varias partes, una, asociada directamente con la ejecución y que se encuentra en la CPU y en ciertas tablas del sistema en la memoria que usa la CPU (por ejemplo, tablas de páginas), y la otra, que es necesaria para el sistema operativo, para la contabilidad (piense en las diversas identificaciones, manejadores, permisos especiales específicos del sistema operativo, conexiones de red y demás).

Un cambio de contexto completo implicaría intercambiar ambos, el antiguo hilo / proceso actual desaparece por un tiempo y el nuevo hilo / proceso actual se inicia por un tiempo. Esa es la esencia de la programación de hilos / procesos.

Ahora, las llamadas al sistema son muy diferentes entre sí.

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

Considere ahora una llamada al sistema que involucre 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 núcleo está obligado a guardar el contexto completo de la persona que llama, marcarlo como bloqueado para que el programador no pueda ejecutarlo hasta que llegue el evento o los datos, y cargar el contexto de otro proceso / proceso listo, para que pueda ejecutarse .

Así es como las llamadas al sistema se relacionan con los cambios de contexto.

El kernel que se ejecuta en el contexto de un usuario o un proceso significa que siempre que el kernel funcione en nombre de un determinado proceso o usuario debe tener en cuenta el contexto de ese usuario / proceso, por ejemplo, el proceso actual / hilo / ID de usuario, el actual directorio, configuración regional, 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), debe tener acceso al espacio de direcciones del proceso, IOW, tiene que estar en su contexto (no es así). 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).

¿Eso es útil?

Lamento hacer esta pregunta cuando ya se ha hecho, pero no pude obtener una claridad de ellos. Así que estoy haciendo las siguientes preguntas relacionadas para obtener la diferencia entre la llamada del sistema (cambio de modo) y el cambio de contexto

  • ¿Por qué se dice que la llamada del sistema no requiere un cambio de contexto cuando el contexto del proceso que realiza la llamada se debe guardar y luego volver a cargar? Es solo porque, de acuerdo con la definición de cambio de contexto, un cambio debe realizarse a otro proceso.

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

  • Según el artículo de wikipedia: http://en.wikipedia.org/wiki/Context_switch

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


el cambio de modo se produce cuando un usuario solo quiere acceder a cosas que solo son adecuadas para un modo de núcleo