Sistema operativo





Sistema operativo

Procesos

1-¿qué es proceso? Es un programa en ejecución.

2- ¿qué son procesos cooperantes y procesos independientes? Un proceso es cooperante cuando los procesos interactúan entre si y pertenecen a una misma aplicación. Los independientes no interactúan y no requieren información de otros.

3- ¿cuáles son los estados de un proceso?

  • Nuevo: cuan el proceso se está creando.
  • En ejecución: cuando están ejecutando instrucciones en el procesador en un momento dado.
  • En espera: cuando están esperando respuesta de algún otro proceso para poder continuar su ejecución.
  • Listo: son los que pueden pasar a estado de ejecución si el planificador los selecciona.

4-¿Qué es la planificación de procesos? Es el proceso mediante el cual el sistema operativo selecciona que proceso ejecutar.




Tipos de planificación:

  • Round robin: cada proceso tiene un quantum de tiempo asignado para ejecutarse y en el caso de que no pueda terminar la ejecución en ese quantum el proceso pasa a la cola de procesos para ser ejecutado por otro quantum.
  • Por prioridad: los procesos se ejecutan de acuerdo a su prioridad.
  • Por orden de llegada: el proceso primero en llegar es el primeo en salir.
  • Primero el trabajo más corto: el proceso de menor tiempo es el primero en ejecutarse y así sucesivamente.

5- comunicación entre procesos

La comunicación entre procesos, en inglés IPC (interprocess communication) es una función básica de los sistemas operativos. Los procesos pueden comunicarse entre sí a través de compartir espacios de memoria, ya sean variables compartidas o buffers, y/o a través de las herramientas provistas por las rutinas de IPC. Los tipos son: Directa, indirecta , simétrica, asimétrica.

Directa: las primitivas enviar y recibir explicitan el nombre del proceso con el que se comunican. Ej. Enviar (mensaje, a) envía un mensaje al proceso a

Indirecta: la comunicación indirecta se implementa mediante puertos. Para poder comunicarse los procesos deben compartir el puerto. Ej: enviar (mensaje, p) envía un mensaje al puerto p.

Simétrica: todos los procesos pueden enviar o recibir. También llamada bidireccional para el caso de dos procesos.

Asimétrica: un proceso puede enviar, los demás procesos solo reciben. También llamada unidireccional.

Los procesos en UNIX no comparten memoria, ni siquiera los padres con sus hijos. Por tanto, hay que establecer algún mecanismo en caso de que se quiera comunicar información entre procesos concurrentes. El sistema operativo UNIX define tres clases de herramientas de comunicación entre procesos (IPC): los semáforos, la memoria compartida y los mensajes.




El tipo de llamadas al sistema para estos IPCs es análogo al de los semáforos: existen sendas funciones shmget y msgget para crear o enlazarse a un segmento de memoria compartida o a una cola de mensajes, respectivamente. Para alterar propiedades de estos IPCs, incluyendo su borrado, están las funciones shmctl y msgctl.

Para enviar o recibir mensajes, se utilizan las funciones msgsnd y msgrcv.

En este apartado se describirán brevemente algunas llamadas al sistema disponibles para el uso de las IPCs dentro de la programación en C.

Comunicación entre procesos (IPC)

Los procesos en UNIX no comparten memoria, ni siquiera los padres con sus hijos. Por tanto, hay que establecer algún mecanismo en caso de que se quiera comunicar información entre procesos concurrentes. El sistema operativo UNIX define tres clases de herramientas de comunicación entre procesos (IPC): los semáforos, la memoria compartida y los mensajes.

El tipo de llamadas al sistema para estos IPCs es análogo al de los semáforos: existen sendas funciones shmget y msgget para crear o enlazarse a un segmento de memoria compartida o a una cola de mensajes, respectivamente. Para alterar propiedades de estos IPCs, incluyendo su borrado, están las funciones shmctl y msgctl.

Para enviar o recibir mensajes, se utilizan las funciones msgsnd y msgrcv.

En este apartado se describirán brevemente algunas llamadas al sistema disponibles para el uso de las IPCs dentro de la programación en C.