-->

Gestión de Prioridades de Procesos (NICE/RENICE) y Monitorización con TOP

Objetivo:

Comprender el sistema de prioridades de procesos en Linux (escala de -20 a 19), aprender a consultar y modificar el valor NI (Nice) mediante ps -efl, ps -o y el comando renice, analizar las restricciones de seguridad para usuarios no privilegiados, y dominar el monitoreo e interacción en tiempo real mediante el comando top (ordenación, filtrado de usuarios, vista en árbol, vistas gráficas y persistencia de configuración).

Escenario:

  • Herramientas: Terminal de Linux en entorno gráfico o servidor.
  • Conceptos clave: Tiempo compartido (time-sharing), valor Nice (NI), prioridades de procesos (alta: -20, baja: 19, estándar: 0), reprogramación de prioridad con renice, comandos de simulación como sleep, y monitorización interactiva avanzada con top.

Instrucciones:

Fase 1: Inspección del valor Nice (NI) de los procesos del sistema

  • Abre la terminal de Linux.
  • Ejecuta el listado detallado con formato largo para inspeccionar la columna de prioridad NI en todos los procesos:
  • ps -efl | less
  • Observa la columna marcada como NI. Identifica que los procesos del kernel/sistema suelen tener valores de prioridad alta (ej. -20) y que la mayoría de los procesos de usuario tienen prioridad estándar (0). Pulsa q para salir.

Fase 2: Creación de un proceso en segundo plano y filtrado personalizado con ps -o

  • Abre una segunda pestaña o ventana de terminal.
  • Lanza un proceso que se detenga durante 1000 segundos para poder examinarlo con tranquilidad:
  • sleep 1000
  • Vuelve a la primera pestaña de la terminal.
  • Consulta la presencia del comando sleep y verifica su prioridad estándar actual mediante ps -efl:
  • ps -efl | grep sleep
  • Anota el PID asignado al proceso sleep (por ejemplo, 6437).
  • Utiliza la opción de formato personalizado de ps (-o) para extraer únicamente el PID, el valor Nice (ni) y el comando ejecutado (comm):
  • ps -o pid,ni,comm | grep sleep
  • Comprueba que el valor asignado en la columna NI es 0.

Fase 3: Modificación de prioridad con renice y restricciones de usuario

  • Incrementa el valor Nice del proceso a 10 (reduciendo su prioridad dentro del procesador):
  • renice +10 -p [TU_PID_SLEEP]
  • Verifica que la consola confirma el cambio de la prioridad anterior (0) a la nueva (10).
  • Comprueba el nuevo valor Nice volviendo a ejecutar la consulta personalizada de ps:
  • ps -o pid,ni,comm | grep sleep
  • Intenta ahora aumentar la prioridad del proceso asignándole un valor negativo (ej. -5):
  • renice -5 -p [TU_PID_SLEEP]
  • Observa el mensaje de error de la consola (Permission denied) y comprueba que un usuario sin privilegios de root no puede asignar prioridades negativas ni elevar la prioridad de un proceso (disminuir su valor Nice).

Fase 4: Monitorización e interacción en tiempo real con el comando top

  • Ejecuta el comando top para abrir la consola interactiva:
  • top
  • Examina el área de cabecera: resumen de uptime, tareas (running, sleeping, stopped, zombie), porcentaje de uso de CPU, estado de la memoria RAM y estado del área de intercambio (swap).
  • Prueba las siguientes opciones de ordenación mediante combinaciones de teclado en directo:
    • Pulsa Shift + P para ordenar la lista por uso de CPU.
    • Pulsa Shift + M para ordenar la lista por uso de memoria RAM.
    • Pulsa Shift + T para ordenar por tiempo total de CPU acumulado.
    • Pulsa c para alternar entre mostrar la orden simple o la línea de comandos completa del proceso.
  • Filtra los procesos para visualizar únicamente los correspondientes a tu usuario pulsando la tecla u, escribiendo tu nombre de usuario y presionando Enter.
  • Alterna el formato de visualización a árbol jerárquico pulsando Shift + V.
  • Personaliza los gráficos de la cabecera:
    • Pulsa l para ocultar/mostrar la línea de uptime y carga media.
    • Pulsa t varias veces para alternar los modos de representación gráfica de la CPU (valores, barras, etc.).
    • Pulsa m varias veces para cambiar el diseño visual de la memoria RAM y SWAP.
  • Guarda la configuración personalizada de top pulsando Shift + W.
  • Sal de top pulsando la tecla q.
  • Ejecuta nuevamente top y comprueba que la interfaz se inicia con el estilo personalizado que guardaste. Sal con q.

Preguntas de reflexión:

  1. ¿En qué rango numérico se definen las prioridades de procesos (valores Nice) en Linux y qué extremo representa la mayor prioridad?
  2. ¿Cuál es el valor Nice por defecto que asigna el sistema a los nuevos procesos lanzados por los usuarios?
  3. ¿Qué diferencia conceptual existe entre la columna de prioridad de sistema (PR/PRI) y el valor Nice (NI)?
  4. ¿Para qué se utiliza el comando sleep en pruebas de laboratorio o en scripts de Bash?
  5. ¿Cómo nos permite el comando ps -o seleccionar columnas específicas para la visualización de datos de procesos?
  6. ¿Qué ocurre cuando un usuario estándar intenta asignar un valor Nice negativo con el comando renice?
  7. ¿Por qué el sistema operativo limita a los usuarios ordinarios la capacidad de asignar prioridades altas (valores Nice negativos)?
  8. En el monitor interactivo top, ¿qué teclas se utilizan para ordenar la lista de procesos por CPU y por Memoria respectivamente?
  9. ¿Qué función cumple la tecla u dentro de la interfaz interactiva de top?
  10. ¿Cómo se logra que las modificaciones visuales aplicadas en top (gráficos de CPU/memoria, modo árbol, etc.) se conserven para futuras sesiones?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿En qué rango numérico se definen las prioridades de procesos (valores Nice) en Linux y qué extremo representa la mayor prioridad?

El rango de valores Nice se extiende desde -20 hasta 19. El valor -20 representa la mayor prioridad posible (el proceso recibe la máxima cuota de tiempo de CPU), mientras que 19 representa la menor prioridad.


2. ¿Cuál es el valor Nice por defecto que asigna el sistema a los nuevos procesos lanzados por los usuarios?

El valor por defecto es 0, lo que equivale a una prioridad estándar o de nivel medio.


3. ¿Qué diferencia conceptual existe entre la columna de prioridad de sistema (PR/PRI) y el valor Nice (NI)?

La columna PR refleja la prioridad real con la que el planificador (scheduler) del kernel asigna tiempos de procesador. El valor NI (Nice) es el parámetro ajustable por los usuarios o administradores para influir de forma amigable sobre dicha prioridad interna del kernel.


4. ¿Para qué se utiliza el comando sleep en pruebas de laboratorio o en scripts de Bash?

sleep detiene la ejecución del proceso o de la terminal durante un tiempo determinado (en segundos). Es muy útil en scripts para crear pausas o esperas programadas, y en laboratorios para mantener un proceso activo en segundo plano mientras se analiza su comportamiento con ps o top.


5. ¿Cómo nos permite el comando ps -o seleccionar columnas específicas para la visualización de datos de procesos?

La opción -o (user-defined format) permite indicar mediante una lista separada por comas exactamente qué atributos del proceso deseamos imprimir en pantalla (por ejemplo, ps -o pid,ni,comm muestra solo el PID, el valor Nice y el comando).


6. ¿Qué ocurre cuando un usuario estándar intenta asignar un valor Nice negativo con el comando renice?

El sistema deniega la operación devolviendo el mensaje Permission denied, ya que solo el usuario administrador (root o mediante sudo) tiene privilegios para asignar prioridades superiores (valores Nice negativos) a los procesos.


7. ¿Por qué el sistema operativo limita a los usuarios ordinarios la capacidad de asignar prioridades altas (valores Nice negativos)?

Para evitar que un usuario sin privilegios pueda monopolizar los recursos del procesador en un sistema multitarea/multiusuario, lo que podría provocar la ralentización severa o inestabilidad del resto de aplicaciones y del propio sistema.


8. En el monitor interactivo top, ¿qué teclas se utilizan para ordenar la lista de procesos por CPU y por Memoria respectivamente?

Para ordenar por uso de CPU se presiona Shift + P (P mayúscula), y para ordenar por consumo de memoria RAM se utiliza Shift + M (M mayúscula).


9. ¿Qué función cumple la tecla u dentro de la interfaz interactiva de top?

Permite filtrar los procesos mostrados en pantalla para consultar únicamente aquellos que pertenecen a un usuario específico, escribiendo su nombre cuando se solicita.


10. ¿Cómo se logra que las modificaciones visuales aplicadas en top (gráficos de CPU/memoria, modo árbol, etc.) se conserven para futuras sesiones?

Pulsando la combinación de teclas Shift + W (W mayúscula). Esto guarda la configuración actual en el archivo oculto ~/.toprc en el directorio personal del usuario.


Ficha de Laboratorio: Gestión de Prioridades de Procesos (NICE/RENICE) y Monitorización con TOP

Instrucciones de entrega:

  1. Rellena los campos y responde en este formulario desde tu navegador.
  2. Pulsa el botón de imprimir al final de la página.
  3. Selecciona "Guardar como PDF" en el diálogo de impresión.
  4. Entrega el archivo PDF en el aula virtual.

Alumno/a:      Fecha:      

Grupo:


Completa la ficha realizando las siguientes actividades:

  1. Identificación de prioridades y campo NI con ps.
    Lanza un comando sleep 1000 y escribe la orden usada para consultar únicamente su PID, valor Nice y comando:

    Copia la salida devuelta por la terminal:

    Explica qué indica un valor Nice igual a 0:
  2. Modificación de prioridad con renice a valores positivos.
    Escribe el comando ejecutado para cambiar el valor Nice de tu proceso a +10:

    Copia la respuesta o confirmación del comando renice:

    Explica la consecuencia de incrementar el valor Nice de un proceso:
  3. Comprobación de restricciones de seguridad al asignar prioridades negativas.
    Escribe la orden intentada para asignar un valor Nice negativo (-5) sin privilegios de root:

    Copia el mensaje devuelto por el sistema:

    Explica la razón por la que Linux restringe esta acción a los usuarios comunes:
  4. Filtrado y ordenación interactiva en el monitor top.
    Indica las teclas de acceso rápido utilizadas en top para filtrar por usuario y ordenar por uso de memoria RAM:

    Describe brevemente los datos que muestra la sección superior (cabecera) de top:

    Explica la diferencia entre presionar Shift + P y Shift + M dentro de top:
  5. Personalización y guardado de vistas en top.
    Escribe la combinación de teclas necesaria para guardar los cambios visuales en top:

    Indica en qué archivo del sistema se almacena esta configuración guardada:

    Explica la utilidad del modo árbol (Shift + V) dentro de top: