Pregunta

Así que he estado metiendo un poco de ensamblaje últimamente y estoy un principiante así que me preguntaba si alguien podría aclarar algo. ¿Puedo entender cada proceso tiene su propio conjunto de registros, y cada hilo puede modificar estos registros adecuados ?. Entonces, ¿cómo varios subprocesos utilizan los mismos registros sin causar choques? ¿O es que cada hilo tiene su propio conjunto de registros?

¿Fue útil?

Solución

Un cambio de contexto hilo implica guardar los registros del contexto de ejecución actual, y la carga de los registros con valores guardados de contexto de ejecución comienzan a cambiar a. (entre otras cosas). Por lo que cada hilo tiene efectivamente su propio conjunto de registros. También su propia pila, ya que el ESP es uno de los registros.

Una forma de pensar acerca de esto es que se obtiene por el ahorro de hilos fuera del estado actual registro, y la carga de los registros con un nuevo estado. Si eso no está ocurriendo, entonces no es un interruptor de hilo. Si también está cambiando a un conjunto diferente de las tablas de direcciones virtuales, a continuación, lo que tienes es un interruptor de proceso en lugar de un interruptor de hilo.

que dice:

  

Lo tomo cada proceso tiene su propio conjunto de registros, y cada hilo puede modificar estos registros no?

Sin embargo, esto no es del todo bien. Cada núcleo de la CPU tiene un único conjunto de registros. Estos registros se cambian cada vez que el sistema operativo cambia a un subproceso diferente. Pero sólo hay un hilo que se ejecuta en un núcleo de la CPU en un momento dado. Procesos realmente no tienen sus propios registros, procesos propios hilos (o al menos un hilo), y los hilos tienen registros, o más bien un lugar para guardar los valores de los registros, mientras que el hilo está esperando a un núcleo de la CPU esté disponible para correr.

Otros consejos

En hardware, sólo hay un conjunto de registros para cada núcleo del procesador. Debido a esto, sólo un hilo a la vez puede utilizar los registros. Múltiples hilos se ejecutan al mismo tiempo en un solo núcleo por conmutación rápidamente de un hilo a otro. Programación que se extiende hilo cuando es el trabajo del sistema operativo.

Cuando se cambia de un hilo a otro, los contenidos de los registros se guardan en un área especial de la memoria, y los registros para el próximo hilo se copian de nuevo en el procesador. Esto incluye el puntero de instrucción, por lo que el hilo sabe dónde continuar ejecutando cuando se pone el control de nuevo. Este proceso se denomina cambio de contexto.

Desde el planificador del sistema operativo está en otro hilo, sólo puede programar procesos cuando se está ejecutando. Esto significa que una característica de hardware especial - una interrupción - es necesario para controlar los cambios de contexto. Sólo el sistema operativo puede programar interrupciones cambio de contexto.

El hilo se realiza por un núcleo o un sistema operativo, por lo que el programa no debe preocuparse por ello. Si hay un kernel o sistema operativo está disponible, entonces usted necesita para poner en práctica por sí mismo. para eso se necesita:

  • una función que permitirá ahorrar el Estado de toda registrarse en su CPU (SP: Pila puntero, el valor de registro interno, PC: Contador de programa etc ...) en una otro espacio de memoria para cambiar a un nuevo hilo.
  • una función para cargar un entorno de hilo para el entorno de la CPU, restaurar el valor del registro interno previamente guardado en su registro de la CPU.

Dependiendo del procesador, sólo hay un conjunto de registros. No un conjunto por hilo.

Hay maneras de ahorrar el estado de todos los registros, de manera que un hilo puede continuar donde lo dejó.

Algunos procesadores facilitan esta .

tiene

  • conjunto de procesos es la de su sistema operativo,
  • cada proceso tiene un espacio de memoria que contiene memoria asignada dinámica , datos estáticos y conjunto de código ,
  • cada proceso tiene una lista de hilos
  • cada hilo tiene su propio conjunto de registros , contador de programa y pila

cambio de contexto su planificador intercambia datos de rosca para pasar la ejecución a otro.

lo general, un proceso es más pesado que un hilo existen y diversos enfoques de programación:

  • hacer cambios de contexto solo internamente ( hilos verdes ) para su programa (su sistema operativo se acaba de considerarlo como un proceso único modo: dura varios núcleos)
  • Puede asignar un número de procesos reales de tener un enfoque híbrido que permite un fácil optimización multi-núcleo.

Cada hilo tiene su propia Contexto , que incluye el conjunto de registros, marcas de CPU, pila, etc.

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