Gestión y Sincronización de Procesos en Sistemas Operativos

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 6,35 KB

Sincronización de Procesos

Cuando se ejecutan varios procesos a la vez, comparten recursos del sistema como memoria, monitor, etc. El Sistema Operativo (S.O.) permite que compartan recursos sin que haya problemas.

Tipos de Procesos

  • Independientes: No necesitan nada de otro proceso.
  • Cooperantes: Comparten estado y colaboran entre ellos.

Conceptos Clave en Sincronización

  • Exclusión mutua: Solo un proceso hace algo en un instante; el resto están excluidos.
  • Sección Crítica: Parte del código de un programa que es ejecutado en exclusión mutua.

Bloqueos (Deadlocks)

La mayoría de los recursos solo pueden usarse por un proceso a la vez. La apropiación de un dispositivo de E/S para uso exclusivo puede provocar problemas. El bloqueo de un conjunto de procesos se produce cuando un proceso espera un evento que solo puede ser provocado por otro proceso del conjunto. Permanecerán esperando y ninguno de ellos realizará ninguna acción hasta que otro libere algún recurso, por lo que entra en un bucle de espera infinito.

Técnicas para Manejar Bloqueos

  • Algoritmo de la Avestruz: Ignorar el problema, apoyado en su baja probabilidad.
  • Evitarlos: Se puede estudiar cómo evitarlos para que nunca se produzcan.
  • Detección y recuperación: Los bloqueos se producen, pero el S.O. se encarga de detectarlo y recuperarse.

Gestión de Procesos en Sistemas Operativos

Gestión de Procesos en Windows

La información sobre los procesos es limitada. Herramientas como Process Hacker o System Explorer Portable proporcionan gran cantidad de información acerca de cada programa o servicio en ejecución.

System Explorer Portable

Ofrece:

  • Información detallada sobre tareas, procesos, módulos.
  • Verificación sencilla de archivos.
  • Fácil seguimiento de las actividades de procesos y cambios del sistema.
  • Gráficos de uso de recursos importantes del sistema.
  • Sugerencia de bandeja con el estado detallado del sistema y la batería.

Gestión de Procesos en Linux

Para crear un proceso nuevo, el sistema lleva a cabo tareas de gestión interna: asocia al proceso un identificador (PID), construye y asigna tablas necesarias para su gestión. Cada vez que se crea un proceso, se le asigna un nuevo PID.

Proceso Init

El primer proceso de un sistema Linux es el INIT, cuyo PID es el 1. El resto de los procesos son sus parientes. Este proceso lee un archivo que dice cuántos terminales hay y crea un proceso login para cada terminal, que se encarga de solicitar nombre y password. La ejecución de los procesos se gestiona en función de los niveles de ejecución (runlevels). El procedimiento de arranque es gestionado por el proceso upstart (o sistemas más modernos como systemd).

Ciclo de Vida del Proceso

Un proceso se destruye cuando hace una llamada al sistema pidiéndole que lo elimine, o también con Control + C.

Cuando el ordenador se ralentiza, el sistema pasa un recolector de procesos. Se adoptan todos los procesos Zombies, haciéndolos hijos del INIT, de manera que ya pueden morir en paz.

Comandos de Gestión de Procesos en Linux

Comando ps

Muestra información sobre los procesos en ejecución.

  • ps -lx: Muestra información detallada.

Campos comunes en la salida de ps:

  • Uid: Identificador de usuario.
  • Pid: Identificador de proceso.
  • ppid: Identificador de proceso padre.
  • Pry y ni: Prioridad para el usuario y para el sistema (nice value).
  • Stat: Estado del proceso.
  • Tty: Consola asociada.
  • Time: Tiempo que lleva ejecutándose.
  • Command: Comando que inició el proceso.

Ejemplos de uso de ps

  • Información del demonio upstart: ps -aux | grep upstart
  • Información del demonio de apache: ps -aux | grep apache
  • ps -aux: Información adicional sobre el uso de memoria y CPU.

Otros Comandos

  • pstree: Muestra el árbol de procesos en ejecución.
  • top: Muestra procesos en tiempo real, uso de recursos, etc.

Señales

Permiten interactuar con los procesos.

  • kill -9 [número de proceso]: Mata un proceso obligándolo a no obviar la señal (SIGKILL).
  • kill -2 [pid]: Envía la señal de interrupción (SIGINT), que algunos procesos pueden obviar.

Planos de Ejecución (Foreground/Background)

  • Primer plano (Foreground): Tiene asociada la entrada estándar y es con el que el usuario se puede comunicar.
  • Segundo plano (Background / Job): No posee el teclado y, por tanto, no podemos comunicarnos directamente con él.

Comandos para Planos de Ejecución

  • Para ver la lista de procesos en segundo plano: jobs
  • Para finalizar un proceso en segundo plano: kill -9 %numerotrabajo
  • Para lanzar un proceso desde el inicio en segundo plano: Añadir & después del nombre del proceso (ej: comando &).
  • Para traer un proceso de segundo plano parado a primer plano activo: fg %numerotrabajo
  • Para mover un proceso del primer plano al segundo: bg numero

Cambiar Prioridad de un Proceso

  • nice: Permite iniciar un proceso con la prioridad modificada (más alta o más baja).
  • nice (sin argumentos): Devuelve la prioridad por defecto.
  • nice -n valor comando: Inicia un proceso con la prioridad especificada en valor.
  • renice: Permite alterar la prioridad de un proceso en tiempo real.

Entradas relacionadas: