2010-03-09 21 views
7

Así que he estado un poco en asamblea últimamente y soy un principiante, así que me preguntaba si alguien podría aclarar algo. Supongo que cada proceso tiene su propio conjunto de registros, y cada hilo puede modificar estos registros ¿verdad ?. ¿Cómo pueden los hilos múltiples usar los mismos registros sin causar choques? ¿O cada hilo tiene su propio conjunto de registros?registros de ensamblaje principiante

Respuesta

11

Un cambio de contexto de hilo implica guardar los registros del contexto de ejecución actual, y al cargar los registros con valores guardados desde el contexto de ejecución, comenzará el cambio a. (entre otras cosas). Entonces, cada subproceso tiene efectivamente su propio conjunto de registros. También su propia pila, ya que ESP es uno de los registros.

Una forma de pensar sobre esto es que obtiene hilos guardando el estado de registro actual y cargando los registros con un nuevo estado. Si eso no está sucediendo, entonces no es un cambio de hilo. Si también está cambiando a un conjunto diferente de tablas de direcciones virtuales, entonces lo que tiene es un cambio de proceso en lugar de un cambio de hilo.

que dicen:

que tomarla cada proceso tiene su propio conjunto de registros, y cada hilo puede modificar estos registros adecuados?

Pero esto no está del todo bien. Cada núcleo de CPU tiene un solo conjunto de registros. Estos registros se cambian cada vez que el sistema operativo cambia a un hilo diferente. Pero solo hay un hilo ejecutándose en un núcleo de CPU en cualquier momento. Los procesos realmente no tienen sus propios registros, procesos propios (o al menos un hilo), y los hilos tienen registros, o más bien un lugar para guardar los valores de los registros mientras el hilo está esperando que un núcleo de CPU esté disponible para ejecutarse en.

+0

buena información gracias! entonces, ¿bastante antes de un cambio de contexto el hilo actual sería pushfd y pushad? Luego, después de devolverlo, ¿se va? – Dnaiel

+0

@Dnaiel: No sé si realmente usan esas instrucciones, pero esa es la idea básica, sí. –

0

Cada hilo tiene su propio contexto, que incluye el conjunto de registros, banderas de CPU, pila, etc.

1

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

Existen formas de guardar el estado de todos los registros, de modo que un subproceso puede continuar donde lo dejó.

Some processors facilitate this.

2

El hilo está hecho por un kernel o un sistema operativo, por lo que el programa no debería preocuparse. Si no hay kernel o sistema operativo disponible, entonces necesita implementarlo usted mismo. para eso se necesita:

  • una función que permitirá ahorrar el saciar de todo registro de la CPU (SP: Pila puntero, el valor de registro interno, PC: Programa de contador, etc ...) en un otro espacio de memoria para cambiar a un nuevo hilo .
  • una función para cargar un entorno de subprocesos en su entorno de CPU, restaurar el valor de registro interno previamente guardado a su registro de CPU.
4

En el hardware, solo hay un conjunto de registros para cada núcleo del procesador. Debido a esto, solo un hilo a la vez puede usar los registros. Múltiples hilos se ejecutan al mismo tiempo en un solo núcleo cambiando rápidamente de un hilo a otro. Programación de qué subproceso se ejecuta cuando es el trabajo del sistema operativo.

Al cambiar de un hilo a otro, los contenidos de los registros se guardan en un área especial de la memoria, y los registros del siguiente hilo se vuelven a copiar en el procesador. Esto incluye el puntero de instrucción, por lo que el hilo sabe dónde continuar la ejecución cuando recupera el control. Este proceso se llama cambio de contexto.

Como el programador del sistema operativo está en otra secuencia, solo puede programar procesos cuando se está ejecutando. Esto significa que una función de hardware especial, una interrupción, es necesaria para controlar los interruptores de contexto. Solo el sistema operativo puede programar interrupciones de cambio de contexto.

1

tiene

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

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

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

  • haciendo cambios de contexto sólo internamente (hilos verdes) a su programa (su sistema operativo se acaba de considerar un proceso único, por lo que: núcleo duro múltiple)
  • puede asignar una cantidad de procesos reales para tener un enfoque híbrido que permita la optimización de múltiples núcleos.