Inicio / Wikis / Tutoriales / Dentro del núcleo Linux 2.4 - Arranque SMP en x86

Dentro del núcleo Linux 2.4 - Arranque SMP en x86

(4 opiniones)
14 de Febrero de 2006
Linux

6 - Arranque SMP en x86

En SMP, el BP (Procesador de arranque) va a través de la secuencia normal del sector de arranque, configuración, etc... hasta que llega a start_kernel(), y entonces sobre smp_init() y especialmente src/i386/kernel/smpboot.c:smp_boot_cpus(). La función smp_boot_cpus() entra en un buche para cada apicid (identificador de cada APIC), hasta NR_CPUS, y llama a do_boot_cpu() en él. Lo que hace do_boot_cpu() es crear (esto es: fork_by_hand) una tarea vacía para la cpu de destino y escribe en localizaciones bien conocidas definidas por la especificación Intel MP (0x467/0x469) el EIP del código del trampolín encontrado en trampoline.S. Entonces genera STARTUP IPI a la cpu de destino la cual hace que este AP (Procesador de Aplicación) ejecute el código en trampoline.S.

La CPU de arranque crea una copia del código trampolín para cada CPU en la memoria baja. El código del AP escribe un número mágico en su propio código, el cual es verificado por el BP para asegurarse que el AP está ejecutando el código trampolín. El requerimiento de que el código trampolín tenga que estar en la memoria baja es forzado por la especificación Intel MP.

El código trampolín simplemente establece el registro %bx a uno, entra en modo protegido y salta a startup_32, que es la entrada principal a arch/i386/kernel/head.S.

Ahora, el AP empieza ejecutando head.S y descubriendo que no es un BP, se salta el código que limpia BSS y entonces entra en initialize_secondary(), el cual justamente entra en la tarea vacía para esta CPU - recalcar que init_tasks[cpu] ya había sido inicializada por el BP ejecutando do_boot_cpu(cpu).

Destacar que init_task puede ser compartido, pero cada hilo vacío debe de tener su propio TSS. Este es el motivo por el que init_tss[NR_CPUS] es una array.
Valora este capítulo: (4 opiniones)
Autor y licencia de 'Dentro del núcleo Linux 2.4 - Arranque SMP en x86'
Tigran Aivazian Extraído de: http://es.tldp.org/Manuales-LuCAS/DENTRO-NUCLEO-LINUX/dentro-nucleo-linux-html/ GNU Free Documentation License
Licencia GNU Free Documentation License: http://www.es.gnu.org/licencias/fdles.html
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'Dentro del núcleo Linux 2.4 - Arranque SMP en x86' (4)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Dentro del núcleo Linux 2.4 - Arranque SMP en x86'

Este documento describe cómo hacer el enmascarado (masqueradinq), proxy transparente, reenvío de puertos (port forwarding),... Más »
Aprenderás a acelerar el arranque de tu ordenador y a eliminar algunos virus que se... Más »
Truco para conseguir crear una imagen de arranque en Linux utilizando Frame Buffer.
La fijación de precios está convirtiéndose en un modo de vida para muchos minoristas y... Más »
Los discos de arranque de Linux, aparte de poder ser usados en el proceso de... Más »
¿Estás seguro de que deseas eliminar este capítulo?