¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Procesos y planificación de la CPU

Después de esta lección: Puedo explicar cómo el sistema operativo reparte el procesador entre varios procesos.

Lección de 50 min2 comandosLaboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

Cómo reparte el sistema operativo el procesador

Un sistema operativo reparte el procesador entre muchos programas. Lo hace tan deprisa que parece que todos funcionan a la vez.

Entender ese reparto te permite explicar por qué un equipo se pone lento cuando abres demasiadas cosas.

Tu portátil tiene unos pocos núcleos y puede tener cientos de procesos abiertos: el navegador, la música, el correo, las actualizaciones.

Al final de esta lección

Nota

Puedo explicar cómo el sistema operativo reparte el procesador entre varios procesos.

Palabras clave

PalabraQué significaEjemplo
Procesoun programa que se está ejecutando
Estadolo que hace un proceso en este momentolisto
Planificadorla parte del sistema que elige qué proceso usa el procesador
Cola de listosla fila de procesos que esperan su turno
Cambio de contextoguardar un proceso y poner otro en marcha
Quantumel tiempo máximo de un turno2 ms

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un proceso cambia de estado mientras vive

Un programa guardado en el disco es solo un archivo. Cuando el sistema lo pone en marcha, nace un proceso.

Un proceso está siempre en un estado. Está listo si puede trabajar y espera su turno. Está en ejecución si tiene el procesador ahora. Está bloqueado si espera algo lento, como una lectura del disco. Y acaba terminado.

El estado de un proceso real

Comando
grep -E '^(Name|State)' /proc/self/status

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un proceso que se mira a sí mismo

El archivo /proc/self/status lo escribe el sistema, y cada proceso lee en él sus propios datos. Aquí lo lee grep.

La orden imprime dos líneas. La primera dice Name: grep. La segunda dice State: R (running): en ese instante grep tenía el procesador, así que estaba en ejecución.

El cambio de contexto guarda y carga

Con un solo núcleo, dos procesos no pueden trabajar a la vez. El sistema los alterna.

Para quitarle el procesador a uno, el sistema guarda su contexto: la instrucción por la que iba y el contenido de los registros. Después carga el contexto del siguiente. Ese trabajo es el cambio de contexto.

No es gratis: mientras el sistema guarda y carga, ningún programa avanza.

Qué se guarda en un cambio de contexto

DatoPara qué se guarda
Contador de programaSaber por qué instrucción seguir
RegistrosRecuperar los valores a medias
Estado del procesoAnotar si pasa a listo o a bloqueado
Tabla de memoriaQue el siguiente proceso vea solo su memoria

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Los contadores de cambios de contexto

Comando
grep ctxt_switches /proc/self/status | cut -d: -f1

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Dos clases de cambio de contexto

La orden imprime dos nombres: voluntary_ctxt_switches y nonvoluntary_ctxt_switches. Cada nombre lleva en el archivo un número que crece con el tiempo y cambia en cada máquina.

Un cambio es voluntario cuando el proceso suelta el procesador porque espera algo. Es involuntario cuando se le acaba el turno y el sistema se lo quita.

Round robin da turnos iguales

Un planificador decide qué proceso de la cola de listos usa el procesador. El método más sencillo es el round robin, "por turnos".

Cada proceso trabaja como mucho un quantum. Si no termina, vuelve al final de la cola. Después le toca al siguiente.

Ejemplo: tres procesos con quantum 2

TurnoProcesoLe quedabaLe queda despuésCola después
1A53B, C, A
2B31C, A, B
3C10, terminaA, B
4A31B, A
5B10, terminaA
6A10, terminavacía

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que un proceso abierto está funcionando. Casi todos están listos o bloqueados. Con un núcleo solo uno tiene el procesador en cada instante. Los demás esperan, y por eso el reparto es tan importante.

Sobre este laboratorio y su código: Laboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.