Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Re:Multithreading.

    (Puntos:0)
    por pobrecito hablador el Domingo, 17 Octubre de 2004, 17:45h (#371472)
    Supongamos dos hilos en ejecución. No tienen porqué ejecutar las mismas instrucciones, por lo que usarán distintas zonas de la memoria. Así que supongo que en cada conmutación se cambiarán las entradas de la TLB.
    [ Padre ]
  • Re:Multithreading.

    (Puntos:3, Informativo)
    por Draco (3721) el Domingo, 17 Octubre de 2004, 20:23h (#371530)
    ( Última bitácora: Lunes, 22 Febrero de 2016, 07:16h )

    Yo diría que no, y explico por qué. La característica de los hilos de un proceso es que comparten un mismo espacio de direccionamiento, por lo tanto tendrán los mismos mapas de traducción de memoria virtual a memoria física. De hecho en un cambio entre diferentes instancias de un mismo programa (o que compartan librerías compartidas mmapeadas), los mapas de aquellas páginas que compartan sobre las que no sea haya desencadenado un copy-on-write, tampoco tendrían por qué ser invalidados.

    No digo que todos los sistemas lo hagan, sino que no sería necesario hacerlo.

    A ver, después de buscar un rato encuentro ésto [barrapunto.com], dónde dice:

    The above check is in the core of the Linux kernel context switch. It simply checks that the page-directory address of the current process and the one of the to-be-scheduled process are the same. If they are, then they share the same address space (i.e., they are two threads), and nothing will be written to the %%cr3 register, which would cause the user-space page tables to be invalidated. That is, putting any value into the %%cr3 register automatically invalidates the TLB; in fact, this is actually how you force a TLB flush. Since two tasks in the same address space never switch the address space, the TLB will never be invalidated.

    Sobre los otros dos casos que he comentado, la verdad es que tengo mis dudas, pero parece claro que un cambio entre dos hilos no necesita un vaciado de la TLB

    --

    Programs should be written for people to read, and only incidentally for machines to execute

    [ Padre ]