Subprocesos múltiples

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 16 de marzo de 2016; las comprobaciones requieren 43 ediciones .

Multithreading  ( eng.  Multithreading ) es una propiedad de una plataforma (por ejemplo, un sistema operativo , una máquina virtual , etc.) o una aplicación , que consiste en que un proceso generado en el sistema operativo puede consistir en varios hilos en ejecución " en paralelo ", luego comer sin un orden prescrito en el tiempo . Para algunas tareas, esta separación puede lograr un uso más eficiente de los recursos informáticos .

Estos subprocesos también se denominan subprocesos de ejecución (del inglés  subproceso de ejecución ); a veces llamados "hilos" (traducción literal del inglés  hilo ) o informalmente "hilos".

Descripción

La esencia de los subprocesos múltiples es cuasi multitarea a nivel de un proceso ejecutable, es decir, todos los subprocesos se ejecutan en el espacio de direcciones del proceso. Además, todos los subprocesos de un proceso comparten no solo un espacio de direcciones común, sino también descriptores de archivo comunes . Un proceso en ejecución tiene al menos un subproceso (maestro).

Multithreading (como doctrina de programación ) no debe confundirse con multitarea o multiprocesamiento , aunque los sistemas operativos que implementan multitarea tienden a implementar multithreading también.

Las ventajas de una implementación multiproceso de un sistema en particular sobre uno multitarea incluyen lo siguiente:

Las ventajas de una implementación de subprocesos múltiples de un sistema en particular sobre uno de un solo subproceso incluyen lo siguiente:

En el caso de que los subprocesos de ejecución requieran una interacción relativamente compleja entre sí, pueden ocurrir problemas de multitarea, como interbloqueos.

Implementación de hardware

En un procesador convencional, la gestión de subprocesos está a cargo del sistema operativo. El subproceso se ejecuta hasta que se produce una interrupción de hardware, se produce una llamada al sistema o hasta que expira el tiempo asignado por el sistema operativo. Después de eso, el procesador cambia al código del sistema operativo, que guarda el estado del hilo (su contexto) o cambia al estado de otro hilo, al que también se le asigna tiempo para la ejecución. Con tales subprocesos múltiples, se gasta una cantidad suficientemente grande de ciclos de procesador en el código del sistema operativo que cambia de contexto. Si el soporte de subprocesos se implementa en el hardware, entonces el propio procesador podrá cambiar entre subprocesos y, en el caso ideal, ejecutar varios subprocesos simultáneamente para cada ciclo de reloj. Para el sistema operativo y el usuario, uno de esos procesadores físicos será visto como múltiples procesadores lógicos.

Hay dos formas de subprocesos múltiples que se pueden implementar en procesadores en hardware:

Tipos de implementación de subprocesos

  1. Sin interrupción de temporizador dentro del mismo proceso
  2. Cuando utiliza una solicitud del sistema de bloqueo en un proceso, todos sus subprocesos se bloquean.
  3. Complejidad de implementación

Interacción de subprocesos

En un entorno de subprocesos múltiples, a menudo hay tareas que requieren la suspensión y reanudación de algunos subprocesos en función del trabajo de otros. En particular, se trata de tareas relacionadas con la prevención de conflictos de acceso al utilizar los mismos datos o dispositivos de hilos ejecutables paralelos. Para resolver tales problemas, se utilizan objetos especiales para la interacción de hilos, como exclusiones mutuas (mutexes), semáforos, secciones críticas, eventos, etc. Muchos de estos objetos son objetos del kernel y se pueden usar no solo entre subprocesos del mismo proceso, sino también para la interacción entre subprocesos de diferentes procesos.

Críticas a la terminología

La traducción del término inglés thread como “thread” en un contexto relacionado con la programación contradice su traducción “thread” en un contexto de lenguaje general, y también crea colisiones con el término Data stream .

Sin embargo, el término "stream" está asociado a las traducciones de literatura técnica extranjera realizadas en la década de 1970 por la editorial Mir. Actualmente, en los "círculos académicos" (es decir, en libros de texto, medios de enseñanza, cursos universitarios, disertaciones, etc.), se considera un referente. Los términos "hilo", "hilo", etc. se consideran jerga técnica .

Véase también

Literatura

Notas

  1. Jeffrey Richter . "Jeffrey Richter. Windows para profesionales. Creación de aplicaciones WIN32 eficientes adaptadas a las especificaciones de Windows de 64 bits. 2001
  2. MSDN http://msdn.microsoft.com/en-us/library/ms682530%28VS.85%29.aspx Archivado el 23 de diciembre de 2011 en Wayback Machine .

Enlaces