¿Cómo distribuye un sistema operativo como Windows u OS X la potencia de memoria / procesamiento para ejecutar simultáneamente todas las aplicaciones?

Estoy seguro de que otros proporcionarán respuestas súper profundas, pero aquí hay una breve …

-Las computadoras con un núcleo / procesador en realidad no pueden hacer dos cosas a la vez (físicamente imposible). Lo que sucede es que los programas crean ‘hilos’, y el sistema operativo permite que cada hilo tenga un tiempo de CPU en el núcleo único (simplificado).

-En la última década, las computadoras han tenido la capacidad de ejecutar tareas simultáneamente. Cuando los programas crean ‘subprocesos’ en una máquina de doble núcleo (o algo aún más potente como el procesador i7 de hoy en día con múltiples núcleos / CPU), estos subprocesos se pueden distribuir en un núcleo separado. Aquí, pueden ejecutarse hasta que los maten (por sus respectivos programas o por el sistema operativo). Por supuesto, si hay más hilos que núcleos disponibles, entonces tiene el mismo problema que vimos en la viñeta uno, donde se necesita compartir un núcleo.

* EDITAR: Debo agregar que los subprocesos también se pueden suspender, que es el momento en que otros subprocesos tienen la oportunidad de ejecutarse … o si el subproceso actual es interrumpido por el sistema operativo, porque se necesita un subproceso o actividad más importante lugar (como entrada de teclado, etc.).

Dejando múltiples núcleos por simplicidad: es una ilusión. Por analogía, si observa una luz fluorescente, parece brillar de manera constante, pero en realidad parpadea 50 o 60 veces por segundo. De manera similar, en un sistema operativo de computadora, solo se ejecuta una aplicación a la vez, pero el sistema operativo cambia entre ellas de tal manera que crea la ilusión de que todas están funcionando de manera constante y al mismo tiempo.

  • El “núcleo” del sistema operativo determina qué aplicación ejecutar en un momento dado, cambiando esto muchas veces por segundo.
  • Los eventos del mundo real llamados “interrupciones” ocurren a un ritmo de tiempo constante (por ejemplo, 60 veces por segundo, 1000 veces por segundo), y también en respuesta a la entrada del usuario, como el movimiento del mouse o la presión de una tecla o el tráfico de la red; no importa qué aplicación se esté ejecutando, la computadora interrumpe lo que está haciendo para guardar información y examinarla; Esto podría llevar a que el “núcleo” decida cambiar a una aplicación diferente.
  • Incluso dentro de una aplicación, puede haber múltiples “hilos” entre los que el “núcleo” cambia para crear la ilusión de que la aplicación está haciendo varias cosas a la vez.

Hay mucho más que esto, pero esos son los conceptos básicos. Cuando agrega múltiples núcleos, es posible que la computadora literalmente haga dos o más cosas a la vez, pero con algunas restricciones relacionadas con la sincronización y el acceso a los datos.

Para obtener más información sobre esto, considere los cursos y el estudio independiente en materias tales como Organización de computadoras y Fundamentos del sistema operativo.

Hace mucho tiempo, el tiempo humano era barato, y el tiempo de computadora era caro.

Entonces, se diseñó un sistema para compartir computadoras entre los usuarios. El método es básicamente dividir el tiempo. En cualquier momento, se ejecutarían varias tareas individuales. Y el sistema operativo ejecutaría las instrucciones primero de una, luego la siguiente y así. Además, cada vez que un subproceso tenía que pausarse, cargar algo o esperar una entrada, se suspendería y la CPU saltaría al siguiente trabajo.

Cada hilo tiene su propio grupo de memoria. Y se establecerían varios sistemas para evitar que una tarea interfiera con otra.

Esta llamada multitarea preventiva se inventó en la década de 1960 y las computadoras modernas (e incluso los teléfonos) usan las mismas soluciones para asegurarse de que varios subprocesos funcionen sin problemas.

El sistema que asigna memoria y tiempo de procesador lo hace de acuerdo con algunas reglas simples. Por lo general, la memoria se entrega cada vez que una tarea lo solicita. La pena por ser codicioso es un rendimiento lento. O estrellarse.

El tiempo se asigna con cierta prioridad. Hoy en día, el tiempo de la computadora es barato y el tiempo del usuario es costoso. Por lo tanto, tiene sentido dar mayor prioridad a las tareas que el usuario necesita.