2009-04-12 22 views
11

Cuando el gestor de arranque carga el sistema operativo, presumiblemente solo hay UN flujo de programa activo, ¿no? Esto significa que un procesador tiene el puntero de instrucción y ejecuta los comandos que encuentra en la posición a la que apunta el registro EIP. ¿En qué punto y cómo el sistema comienza a explotar más procesos y/o subprocesos (sin hilos de usuario, pero hilos de CPU)?programación de bajo nivel: ¿cómo comienza el SO un nuevo proceso/subproceso?

Respuesta

5

El sistema operativo se iniciará (después de que el BIOS y el gestor de arranque hayan finalizado) con un rol especial, ya que el primer programa que ejecutará tendrá direct acceso a todos los comandos de la CPU.

Por lo tanto, configurará varias partes del sistema, como configurar Interrupt Handlers (o Rutinas de servicio de interrupción). Una vez hecho esto, tiene la capacidad de crear un "planificador".

El actual proceso de "proceso/hilo" se realizará mediante este planificador. Decide qué hilos se ejecutarán. También administra todos los hilos activos. La CPU no tiene conocimiento de todas estas cosas.

Una vez que el ejecutivo principal del planificador decide ejecutar el subproceso (o "proceso") A, copie los datos de proceso en los registros (y almacena los registros en el InfoBlock del subproceso que se ejecuta recientemente). Le indicará a la CPU/un temporizador que cause una interrupción en n microsegundos (u otra unidad de tiempo). Luego le indicará a la CPU que ejecute el "programa" (lo único que sabe la CPU) en el modo no OS (para que no modifique los datos críticos ni registre los propios manejadores de interrupciones sin permiso).

Mientras el hilo A se está ejecutando ahora, se ejecutará el temporizador de hardware. Una vez que alcanza el offset de tiempo deseado, provocará una Interrupción. El hardware detendrá la ejecución del programa actual e invocará el Interrupt Handler registrado que en su lugar. Este controlador será un método del programador (el principal ejecutivo nuevamente, para ser precisos).

Este método volverá a evaluar qué subproceso se debe programar y la programación continúa.

+0

Gracias por su explicación. ¿Puede decirme cómo cambia esta imagen cuando están involucrados varios procesadores/núcleos independientes? – prinzdezibel

+0

La mayoría de las multinúcleas tienen al menos algún procesador "maestro" (ver otras respuestas) - Las memorias caché L1 + no funcionarían sin una cierta administración central. El planificador solo tendrá que dirigirse al procesador deseado para cada operación de registro. Todo lo demás se mantiene igual (temporizadores de intervalo fijo). –

+0

@prinzdezible: el programador de sistema operativo generalmente se ejecuta en cada núcleo de CPU cuando el hilo actual se detiene mediante interrupción o al hacer una llamada al sistema. Para poder escalar a muchos núcleos, no verá todos los hilos, sino solo los hilos asignados a esa CPU. Si está demasiado ocupado, enviará hilos a otras CPU. Si no está ocupado, extraerá hilos de otras CPU. De vez en cuando, por tiempo o por algún contador, el planificador cargará tareas de equilibrio en todas las CPU (esto es lento, por lo que no es frecuente) –

3

Una de las primeras cosas que debe iniciar un sistema operativo (multiproceso) es el planificador que se encarga de gestionar múltiples procesos (y por lo tanto también gestiona múltiples subprocesos de CPU, por ejemplo, en máquinas multinúcleo).

El primer proceso iniciado por este programador suele ser algún tipo de proceso "init" que a su vez es responsable de cargar los otros programas/procesos posteriormente.

4

Correcto, durante el proceso de arranque solo hay un hilo de ejecución. Por lo general, este es el caso hasta que el sistema operativo se haya inicializado hasta el punto en que la gestión de memoria de bajo nivel, el programador, etc. sean funcionales.

Este es incluso el caso en sistemas con varias CPU: un núcleo es el "procesador maestro" que maneja el inicio temprano hasta que la infraestructura está allí para reiniciar los otros núcleos.

Al final es altamente específico para el sistema operativo; el Intel Architecture Software Developer's Manuals tiene los detalles de las especificaciones de hardware. (Suponiendo que está hablando de la arquitectura Intel, otras arquitecturas pueden diferir salvajemente)

Cuestiones relacionadas