stringtranslate.com

Prelación (informática)

En informática , la preferencia es el acto de interrumpir temporalmente una tarea en ejecución , con la intención de reanudarla en un momento posterior. Esta interrupción la realiza un programador externo sin asistencia ni cooperación de la tarea. [1] : 153  Este programador preventivo generalmente se ejecuta en el anillo de protección más privilegiado , lo que significa que la interrupción y luego la reanudación se consideran acciones altamente seguras. Estos cambios en la tarea que se está ejecutando actualmente en un procesador se conocen como cambio de contexto .

Modo usuario y modo kernel

En cualquier diseño de sistema determinado, algunas operaciones realizadas por el sistema pueden no ser reemplazables. Esto generalmente se aplica a las funciones del kernel y a las interrupciones del servicio que, si no se les permite ejecutarse hasta su finalización , tenderían a producir condiciones de carrera que resultarían en un punto muerto . Prohibir que el programador se adelante a las tareas mientras procesa funciones del núcleo simplifica el diseño del núcleo a expensas de la capacidad de respuesta del sistema . La distinción entre modo de usuario y modo kernel , que determina el nivel de privilegio dentro del sistema, también se puede utilizar para distinguir si una tarea es actualmente interrumpible.

La mayoría de los sistemas operativos modernos tienen kernels preventivos , que están diseñados para permitir que las tareas sean adelantadas incluso cuando se está en modo kernel. Ejemplos de tales sistemas operativos son Solaris 2.0/SunOS 5.0, [2] Windows NT , kernel de Linux (2.5.4 y posteriores), [3] AIX y algunos sistemas BSD ( NetBSD , desde la versión 5).

Multi tareas preventivo

El término multitarea preventiva se utiliza para distinguir un sistema operativo multitarea , que permite la preferencia de tareas, de un sistema multitarea cooperativo en el que los procesos o tareas deben programarse explícitamente para que rindan cuando no necesitan recursos del sistema.

En términos simples: la multitarea preventiva implica el uso de un mecanismo de interrupción que suspende el proceso que se está ejecutando actualmente e invoca un programador para determinar qué proceso debe ejecutarse a continuación. Por lo tanto, todos los procesos obtendrán cierta cantidad de tiempo de CPU en un momento dado.

En la multitarea preventiva, el núcleo del sistema operativo también puede iniciar un cambio de contexto para satisfacer la restricción de prioridad de la política de programación , adelantando así la tarea activa. En general, la preferencia significa "incautación previa de". Cuando la tarea de alta prioridad en esa instancia toma la tarea que se está ejecutando actualmente, se conoce como programación preventiva.

El término "multitarea preventiva" a veces se utiliza erróneamente cuando el significado deseado es más específico, refiriéndose en cambio a la clase de políticas de programación conocida como programación de tiempo compartido o tiempo compartido .

La multitarea preventiva permite que el sistema informático garantice de manera más confiable a cada proceso una "porción" regular de tiempo de funcionamiento. También permite que el sistema maneje rápidamente eventos externos importantes, como datos entrantes, que podrían requerir la atención inmediata de uno u otro proceso.

En cualquier momento específico, los procesos se pueden agrupar en dos categorías: aquellos que están esperando entrada o salida (llamados " limitados a E/S ") y aquellos que están utilizando completamente la CPU (" limitados a CPU "). En los primeros sistemas, los procesos a menudo " sondeaban " o " esperaban ocupados " mientras esperaban la entrada solicitada (como disco, teclado o entrada de red). Durante este tiempo, el proceso no realizó un trabajo útil, pero aún mantuvo el control total de la CPU. Con la llegada de las interrupciones y la multitarea preventiva, estos procesos vinculados a E/S podrían "bloquearse" o ponerse en espera, en espera de la llegada de los datos necesarios, permitiendo que otros procesos utilicen la CPU. Como la llegada de los datos solicitados generaría una interrupción, se podría garantizar que los procesos bloqueados vuelvan a ejecutarse oportunamente.

Aunque las técnicas multitarea se desarrollaron originalmente para permitir que varios usuarios compartieran una sola máquina, se hizo evidente que la multitarea era útil independientemente del número de usuarios. Muchos sistemas operativos, desde mainframes hasta computadoras personales de un solo usuario y sistemas de control sin usuario (como los de las naves espaciales robóticas ), han reconocido la utilidad del soporte multitarea por diversas razones. La multitarea hace posible que un solo usuario ejecute múltiples aplicaciones al mismo tiempo o ejecute procesos "en segundo plano" mientras conserva el control de la computadora.

Porción de tiempo

El período de tiempo durante el cual se permite ejecutar un proceso en un sistema multitarea preventivo generalmente se denomina intervalo de tiempo o cuanto . [1] : 158  El programador se ejecuta una vez en cada intervalo de tiempo para elegir el siguiente proceso a ejecutar. La duración de cada intervalo de tiempo puede ser fundamental para equilibrar el rendimiento del sistema y la capacidad de respuesta del proceso: si el intervalo de tiempo es demasiado corto, el programador consumirá demasiado tiempo de procesamiento, pero si el intervalo de tiempo es demasiado largo, los procesos tardarán más en responder. aporte.

Se programa una interrupción para permitir que el núcleo del sistema operativo cambie entre procesos cuando sus intervalos de tiempo expiren, permitiendo efectivamente que el tiempo del procesador se comparta entre una serie de tareas, dando la ilusión de que está tratando con estas tareas en paralelo (simultáneamente). El sistema operativo que controla dicho diseño se denomina sistema multitarea.

Soporte del sistema

Hoy en día, casi todos los sistemas operativos admiten la multitarea preventiva, incluidas las versiones actuales de Windows , macOS , Linux (incluido Android ), iOS y iPadOS .

Algunos de los primeros sistemas operativos disponibles para usuarios domésticos que presentaban multitarea preventiva fueron Sinclair QDOS [ cita necesaria ] (1984 [4] ) y AmigaOS (1985). Ambos se ejecutaron en microprocesadores de la familia Motorola 68000 sin administración de memoria. Amiga OS utilizó la carga dinámica de bloques de código reubicables (" trozos " en la jerga de Amiga) para realizar múltiples tareas de forma preventiva en todos los procesos en el mismo espacio de direcciones plano.

Los primeros sistemas operativos de PC , como MS-DOS y PC DOS , no admitían la multitarea en absoluto; sin embargo, sistemas operativos alternativos como MP/M-86 (1981) y Concurrent CP/M-86 sí admitían la multitarea preventiva. Otros sistemas similares a Unix, incluidos MINIX y Coherent, proporcionaban multitarea preventiva en las computadoras personales de la década de 1980.

Las versiones posteriores de DOS que admiten de forma nativa multitarea/multiproceso preventivo incluyen DOS concurrente , DOS multiusuario , Novell DOS (más tarde llamado Caldera OpenDOS y DR-DOS 7.02 y superiores). Desde Concurrent DOS 386 , también podían ejecutar múltiples programas de DOS simultáneamente en máquinas virtuales de DOS .

La primera versión de Windows que admitía una forma limitada de multitarea preventiva fue Windows/386 2.0 , que utilizaba el modo Virtual 8086 del Intel 80386 para ejecutar aplicaciones DOS en máquinas virtuales 8086 , comúnmente conocidas como "cajas DOS", que podían ser reemplazadas. . En Windows 95, 98 y Me , las aplicaciones de 32 bits se hicieron preventivas al ejecutar cada una en un espacio de direcciones separado, pero las aplicaciones de 16 bits siguieron siendo cooperativas para lograr compatibilidad con versiones anteriores. [5] En Windows 3.1x (modo protegido), el kernel y los controladores de dispositivos virtuales se ejecutaban de forma preventiva, pero todas las aplicaciones de 16 bits no eran preventivas y compartían el mismo espacio de direcciones.

La multitarea preventiva siempre ha sido compatible con Windows NT (todas las versiones), OS/2 (aplicaciones nativas), Unix y sistemas similares (como Linux , BSD y macOS ), VMS , OS/360 y muchos otros sistemas operativos diseñados para su uso en los mercados académico y de medianas y grandes empresas.

Aunque había planes para actualizar la multitarea cooperativa que se encuentra en el Mac OS clásico a un modelo preventivo (y existía una API preventiva en Mac OS 9 , aunque en un sentido limitado [6] ), estos se abandonaron en favor de Mac OS X. (ahora llamado macOS) que, como híbrido del antiguo estilo Mac System y NeXTSTEP , es un sistema operativo basado en el kernel Mach y derivado en parte de BSD , que siempre había proporcionado multitarea preventiva tipo Unix.

Ver también

Referencias

  1. ^ a b Tanenbaum, Andrew (2015). Sistemas operativos modernos . Boston: Pearson. ISBN 978-0-13-359162-0. OCLC  870646449.
  2. ^ Khanna, S.; Sebree, M.; Zolnovsky, J. "Programación en tiempo real en SunOS 5.0". Actas de la Conferencia de Invierno de USENIX, 1992 : 375–390.
  3. ^ "Notas de la versión v2.5.4". Los archivos del kernel de Linux . Organización del kernel de Linux, Inc. Consultado el 3 de julio de 2021 .
  4. ^ "Preguntas frecuentes sobre el historial de QL: firmware".
  5. ^ "Cómo los programas de 16 y 32 bits realizan múltiples tareas en Windows 95 (Q117567)". Archivado desde el original el 17 de enero de 2008 . Consultado el 17 de enero de 2008 .
  6. ^ "Re: pregunta de novato: ¿Qué es una tarea azul?". Archivado desde el original el 13 de octubre de 2007 . Consultado el 29 de marzo de 2007 .