220 likes | 449 Views
Procesos. M.C. Juan Carlos Olivares Rojas. Agenda. Modelo e Implantación de Procesos Comunicación entre Procesos Ejemplos de Comunicación entre Procesos Planificación de un Proceso. Agenda. Procesos Cooperativos Implementación de Procesos Threads. Modelo e Implantación de Procesos.
E N D
Procesos M.C. Juan Carlos Olivares Rojas
Agenda • Modelo e Implantación de Procesos • Comunicación entre Procesos • Ejemplos de Comunicación entre Procesos • Planificación de un Proceso
Agenda • Procesos Cooperativos • Implementación de Procesos • Threads
Modelo e Implantación de Procesos • Un proceso es un programa en ejecución. • Todos los procesos tienen asociados un espacio de direcciones en memoria, registros y el contador de programas. • De acuerdo a la arquitectura de Von Neuman un programa para poderse ejecutar necesita estar en memoria.
Modelo e Implantación de Procesos • El espacio de direcciones se compone además de direcciones para almacenar datos, código, la pila y el heap (montículo). • Toda la información de los procesos en los SOs se guardan el PCB (Process Control Block) que es un arreglo o lista ligada que indica la descripción de cada uno de los procesos.
Modelo e Implantación de Procesos • Los procesos tienen asignados un identificador de procesos (PID), el cual es la forma en que el SO trabaja con los procesos. • Los procesos se ejecutan de manera secuencial pero pueden realizar bifurcaciones, motivo por el cual se necesita el contador de programa. • Los programas pueden tener asignado distintas prioridades para darle más jerarquías.
Modelo e Implantación de Procesos • La finalidad del administrador de procesos es realizar una buena administración (planificación) del tiempo de CPU de la computadora a fin de ejecutar más programas de manera más eficiente. • Otra de las características básicas que presenta un proceso es el estado en el cual se encuentra. Existen tres estados básicos en proceso: Ejecución, Listo y Bloqueado.
Modelo e Implantación de Procesos • Un proceso está en ejecución cuando tiene acceso real al tiempo de CPU. • Un proceso está listo cuando se puede ejecutar, es decir, por algún motivo se suspendió para dejar ejecutar otro proceso • Un proceso está bloqueado cuando está en espera de algún recurso (E/S) o de que ocurra un evento.
Modelo e Implantación de Procesos • Otros modelos de estados de procesos incluyen otros estados como el de nacimiento, inactivo y diferencia entre bloqueado y en espera. • Dentro de un CPU un y sólo un proceso puede estar ejecutándose al mismo tiempo. • Los procesos se pueden dormir, despertar y ser asesinados antes de tiempo.
Comunicación entre Procesos • Los procesos en algunos SOs pueden crear otros procesos llamados subprocesos, teniendo una jerarquía de procesos padre e hijos. • Estos procesos pueden trabajar de manera cooperativa para la resolución de un problema muy particular. Para ello necesitan comunicarse entre sí y a lo que a nivel de SO se llama IPC (Inter Process Communication).
IPC • La parte más importante de la comunicación entre procesos es sin duda la transferencia de mensajes entre los diversos procesos. • La transferencia de mensajes puede llevarse acabo en base a dos primitivas, enviar y recibir, que se pueden aplicar a casi cualquier recurso como a los archivos (leer y escribir).
IPC • La comunicación entre procesos IPC se debe dar a través del kernel del Sistema Operativo. • Tanto Windows como Linux y otros Sistemas Operativos implementan IPC pero lo hacen de manera particular. • Los IPC de sistemas *X son los más comunes y estandarizados. A continuación se describirá algo de IPC en Linux.
IPC *X #include <sys/types.h> pid_t pid; hijo = getpid(); Padre = getppid(); Grupo = getpgrp(); Un subprocesos se crea con la instrucción fork()
IPC *X • Existen otros tipos de usuarios y grupos los cuales son extendidos, es decir, no actúan como los usuarios reales. uid_t getuid(); /*usuario real*/ uid_t geteuid(); /*usuario extendido*/ gid_t getgid(); gid_t getegid(); • Los subprocesos tienen una jerarquía muy marcada.
IPC *X //Validación de subprocesos if (pid == -1) perror(“Error al crear proceso”); else { if (pid == 0) /*Proceso hijo*/ else /*Proceso padre*/ }
Ejemplos de Comunicación entre Procesos • La principal problemática que se presenta consiste en las condiciones de competencia de los procesos. Por ejemplo, compartir una impresora. Si varios procesos pudieran acceder a la impresora se tendrían problemas de inconsistencias al momento de imprimir. • A continuación se describirán algunos problemas de IPC para dar solución en la próxima unidad.
Ejemplos de IPC • El problema del productor-consumidor: dos procesos comparte un mismo recurso compartido. El problema se presenta cuando el proceso productor produce más de lo que el buffer compartido puede soportar y cuando el proceso consumidor quiere consumir un valor del buffer cuando esta vació. • Este tipo de problemas se puede presentar en casos similares como el de la impresora.
Threads • Los hilos son procesos ligeros a diferencia de los procesos hijos, los hilos sólo replican el segmento de código, por lo que comparten datos entre otros hilos haciendo mejor uso de la memoria. • La problemática con los hilos es que cada sistema operativo implementa sus hilos de manera distinta. Por ejemplo existen los hilos POSIX, los hilos C de Mach, los hilos en Windows, etc.