Está en la página 1de 26

COMUNICACIÓN Y

CONTROL DE PROCESOS
Kevin perez
Dina Meza
Juan Meza
COMUNICACIÓN ENTRE PROCESOS O IPC

La comunicación entre procesos es una función básica de los sistemas operativos que provee un mecanismo
que permite a los procesos comunicarse y sincronizarse entre sí, normalmente a través de un sistema de
bajo nivel de paso de mensajes que ofrece la red subyacente.

Las técnicas de IPC están divididas dentro de métodos para: paso de mensajes, sincronización, memoria
compartida y llamadas de procedimientos remotos (RPC).

La comunicación entre procesos puede estar motivada por la competencia o el uso de recursos compartidos
o porque varios procesos deban ejecutarse sincronizadamente para completar sus tareas.
Para que puedan realizarse ambos tipos de interacciones, es necesario que el sistema
operativo provea de servicios para posibilitar la comunicación entre procesos.
El sistema operativo provee mínimamente dos primitivas, "enviar" y "recibir", normalmente
llamadas send y receive. Asimismo, debe implementarse un enlace de comunicación
entre los procesos de la comunicación (pipe). Este enlace puede ser unidireccional o
multidireccional según permita la comunicación en uno o en varios sentidos.
TIPOS DE COMUNICACIÓN

• - Síncrona: Quien envía permanece bloqueado esperando a que llegue una respuesta del
receptor antes de realizar cualquier otro ejercicio.
•  Asíncrona: Quien envía continúa con su ejecución inmediatamente después de enviar el
mensaje al receptor.
•  Persistente: El receptor no tiene que estar operativo al mismo tiempo que se realiza la
comunicación, el mensaje se almacena tanto tiempo como sea necesario para poder ser
entregado (por ejemplo, un e-mail).
•  Momentánea (transient): El mensaje se descarta si el receptor no está operativo al tiempo
que se realiza la comunicación. Por lo tanto no será entregado.
•  Directa: Las primitivas “enviar” y “recibir” especifican el nombre del proceso con el que se
comunican.
LAS OPERACIONES BÁSICAS SEND Y RECEIVE
• Ejemplo:
• send(P, mensaje); envía un mensaje al proceso P (P es el proceso destino).
receive (Q, mensaje); espera la recepción de un mensaje por parte del proceso Q (Q es el proceso fuente).

• Nota: receive puede esperar de un proceso cualquiera un mensaje, pero el send sí debe


especificar a quién va dirigido y cuál es el mensaje.
•  Indirecta: Es aquella donde la comunicación está basada en una herramienta o instrumento ya que
el emisor y el perceptor están a distancia.
• - 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 sólo reciben. También llamada
unidireccional. Suele usarse para hospedar servidores en Internet.
• - Uso de búfer automático: El transmisor se bloquea hasta que el receptor recibe el mensaje
(capacidad cero).
MECANISMOS DE COMUNICACIÓN

• El portapapeles de Windows, DDE [Dynamic Data Exchange], Sockets, Ficheros mapeados en


memoria, Semáforos( eventos, Mutex etc).
• disponemos de una amplia variedad de mecanismos de comunicación entre procesos. Algunos
de ellos facilitan la división del trabajo entre distintos procesos de una máquina, otros permiten
dividir el trabajo entre procesos que se ejecutan en distintos ordenadores de un sistema
distribuido.
• Usualmente, la aplicaciones que utilizan mecanismos de comunicación entre procesos suelen
clasificarse como clientes o servidores, si bien pueden desempeñar ambos roles en distintos
momentos. El cliente es el que solicita acceder a algún servicio proporcionado por otro proceso.
El servidor es el que atiende las peticiones de los clientes.
CONCEPTO DE PROCESO
• proceso es una instancia de ejecución de un programa, caracterizado por su contador de programa, su
palabra de estado, sus registros del procesador, su segmento de texto, pila y datos, etc.
• Un programa es un concepto estático, mientras que un proceso es un concepto dinámico.
ESTADOS DE LOS PROCESOS

• durante su vida, un proceso puede pasar por una serie de estados discretos, algunos de ellos son:
En ejecución: El proceso ocupa la CPU actualmente, es decir, se está ejecutando.
Listo o preparado: El proceso dispone de todos los recursos para su ejecución, sólo le falta la
CPU.
Bloqueado: Al proceso le falta algún recurso para poder seguir ejecutándose, además de la CPU.
Por recurso se pueden entender un dispositivo, un dato, etc. El proceso necesita que ocurra algún
evento que le permita poder proseguir su ejecución.
TRANSICIONES DE ESTADO

• De ejecución á Bloqueado: al iniciar una operación de E/S, al realizar una operación WAIT sobre un
semáforo a cero

• De ejecución á Listo: por ejemplo, en un sistema de tiempo compartido, cuando el proceso que ocupa la
CPU lleva demasiado tiempo ejecutándose continuamente (agota su cuanto) el sistema operativo decide
que otro proceso ocupe la CPU, pasando el proceso que ocupaba la CPU a estado listo.
• De Listo á en ejecución: cuando lo requiere el planificador de la CPU .
• De Bloqueado á Listo: se dispone del recurso por el que se había bloqueado el proceso. Por ejemplo,
termina la operación de E/S, o se produce una operación SIGNAL sobre el semáforo en que se bloqueó el
proceso, no habiendo otros procesos bloqueados en el semáforo.
DIAGRAMA DE ESTADOS DE UN PROCESO
BLOQUE DE CONTROL DE PROCESOS (PCB)
Es una estructura de dato que contiene información asociada con cada proceso.
• Estado de Proceso
• Contador de Programa
• Registros de CPU
• Información de planificación de CPU
• Información de administración de memoria
• Información contable
• Información de estado E/S
PCB: Process Control Block
OPERACIONES CON PROCESOS

Los sistemas que administran procesos deben ser capaces de realizar ciertas operaciones sobre y con los procesos. Tales operaciones
incluyen:
-crear y destruir un proceso
-suspender y reanudar un proceso
-cambiar la prioridad de un proceso
-bloquear y "desbloquear" un proceso
-Planificar un proceso (asignarle la CPU)
- permitir que un proceso se comunique con otro (a esto se denomina comunicación entre procesos).

Crear un proceso implica muchas operaciones, tales como:


- -buscarle un identificador
- -insertarlo en la tabla de procesos
- -determinar la prioridad inicial del proceso
- -crear el PCB
- -asignar los recursos iniciales al proceso
PLANIFICACIÓN DE PROCESOS
La planificación de la CPU, en el sentido de conmutarla entre los distintos procesos, es una de las funciones del
sistema operativo. Este despacho es llevado a cabo por un pequeño programa llamado planificador a corto plazo o
dispatcher (despachador). La misión del dispatcher consiste en asignar la CPU a uno de los procesos ejecutables del
sistema, para ello sigue un determinado algoritmo. Para que el dispatcher conmute el procesador entre dos procesos
es necesario realizar un cambio de proceso.
Los acontecimientos que pueden provocar la llamada al dispatcher dependen del sistema (son un subconjunto de las
interrupciones), pero son alguno de estos:
• El proceso en ejecución acaba su ejecución o no puede seguir ejecutándose (por una E/S, operación WAIT, etc).
• Un elemento del sistema operativo ordena el bloqueo del proceso en ejecución
• El proceso en ejecución agota su cuantum o cuanto de estancia en la CPU.
• Un proceso pasa a estado listo.
nota: Hay que destacar el hecho de que cuanto menos se llame al dispatcher menos tiempo ocupa la CPU un
programa del sistema operativo, y, por tanto, se dedica más tiempo a los procesos del usuario (un cambio de
proceso lleva bastante tiempo).
• semáforo: Un semáforo es un mecanismo software mediante el cual consigo la sincronización
entre procesos concurrentes. Su implementación estará basada en dos elementos: un entero y un
puntero asociado a una cola (que puede ser nulo). Está controlado mediante una serie de señales
conocidas como WAIT y SIGNAL.
• puntero: tipo de dato formado por una dirección de memoria principal. A través de este tipo de
dato se puede acceder a cualquier bloque de memoria que esté referenciado, es decir que
sepamos su dirección lógica.
• WAIT: operación de espera sobre un semáforo.
• SIGNAL: operación de continuación sobre un semáforo. Los semáforos serán rutinas,
programadas para utilizarlas en programación concurrente.
• Concurrencia: de procesos como la ejecución simultánea de varios procesos
• Cuanto: unidad elemental de tiempo utilizado por el Sistema Operativo para la planificación de
procesos.

EL SCHEDULING

• El scheduling está asociado a las cuestiones de:

• Cuándo introducir un nuevo proceso en el Sistema.


• Determinar el orden de ejecución de los procesos del sistema.
• El scheduling está muy relacionado con la gestión de los recursos. Existen tres niveles de scheduling, como se
ilustra en la figura, estos niveles son:
• Planificador de la CPU o a corto plazo.
• Planificador a medio plazo.
• Planificador a largo plazo.
PLANIFICACIÓN A LARGO PLAZO

• Este planificador está presente en algunos sistemas que admiten además de procesos interactivos
trabajos por lotes. Usualmente , se les asigna una prioridad baja a los trabajos por lotes,
utilizándose estos para mantener ocupados a los recursos del sistema durante períodos de baja
actividad de los procesos interactivos.
• El objetivo primordial del planificador a largo plazo es el de dar al planificador de la CPU una
mezcla equilibrada de trabajos, tales como los limitados por la CPU (utilizan mucho la CPU) o la
E/S. Así, por ejemplo, cuando la utilización de la CPU es baja, el planificador puede admitir más
trabajos para aumentar el número de procesos listos y, con ello, la probabilidad de tener algún
trabajo útil en espera de que se le asigne la CPU.
PLANIFICACIÓN A MEDIO PLAZO

• En los sistemas de multiprogramación y tiempo compartido varios procesos residen en la


memoria principal. El tamaño limitado de ésta hace que el número de procesos que residen en
ella sea finito. Puede ocurrir que todos los procesos en memoria estén bloqueados,
desperdiciándose así la CPU. En algunos sistemas se intercambian procesos enteros (swap
(“espacio de intercambio“.) entre memoria principal y memoria secundaria (normalmente
discos), con esto se aumenta el número de procesos, y, por tanto, la probabilidad de una mayor
utilización de la CPU.
PLANIFICACIÓN A CORTO PLAZO

• El planificador a corto plazo se ejecuta cuando ocurre un suceso que puede conducir a la
interrupción del proceso actual o que ofrece la oportunidad de expulsar de la ejecución al
proceso actual en favor de otro. Como ejemplos de estos sucesos se tienen:

• · Interrupciones del reloj


• · Interrupciones de E/S
• · Llamadas al sistema operativo
• · Señales
CONCURRENCIA

• la concurrencia de procesos como la ejecución simultánea de varios procesos. Si tenemos un


multiprocesador o un sistema distribuido la concurrencia parece clara, en un momento dado cada
procesador ejecuta un proceso.
• Se puede ampliar el concepto de concurrencia si entendemos por procesado concurrente (o
procesado paralelo) la circunstancia en la que de tomar una instantánea del sistema en conjunto,
varios procesos se vean en un estado intermedio entre su estado inicial y final.
COOPERACIÓN ENTRE PROCESOS

• La velocidad de un proceso con respecto a otro es impredecible ya que depende de la frecuencia


de la interrupción asociada a cada uno de ellos y cuán a menudo y de por cuánto tiempo tiene
asignado cada proceso un procesador. Diremos, pues, que un proceso se ejecuta asíncronamente
con respecto a otro, es decir, sus ejecuciones son independientes.
EXCLUSIÓN MUTUA
• Los recursos no compartibles, ya sean periféricos, ficheros, o datos en memoria, pueden protegerse del acceso
simultáneo por parte de varios procesos evitando que éstos ejecuten de forma concurrente sus fragmentos de
código a través de los cuales llevan a cabo este acceso. Estos trozos de código reciben el nombre de secciones o
regiones críticas, pudiéndose asimilar el concepto de exclusión mutua en el uso de estos recursos a la idea de
exclusión mutua en la ejecución de las secciones críticas.
• Idear soluciones que garanticen la exclusión mutua es uno de los problemas fundamentales de la programación
concurrente. Muchas son las alternativas y tipos de mecanismos que se pueden adoptar.
• una solución apropiada debería cumplir las cuatro condiciones siguientes:
• 1. Que no haya en ningún momento dos procesos dentro de sus respectivas secciones críticas.
• 2. Que no hagan suposiciones a priori sobre las velocidades relativas de los procesos o el número de procesadores
disponibles.
• 3. Que ningún proceso que esté fuera de su sección crítica pueda bloquear a otros.
• 4. Que ningún proceso tenga que esperar un intervalo de tiempo arbitrariamente grande para entrar en su sección
crítica.
CASOS DE INTERBLOQUEOS

• El caso más simple de interbloqueo sería el de un sólo proceso que espera la ocurrencia de un evento y, sin
embargo, el sistema no incluye la posibilidad de señalar dicha ocurrencia. Es muy difícil detectar los bloqueos
mutuos de esta naturaleza. La mayor parte de los bloqueos mutuos implican una competencia entre varios
procesos por varios recursos.
• Holt (1972) utilizó grafos dirigidos para representar situaciones de interbloqueo. Estos grafos tienen dos tipos de
nodos : procesos, que se representan con círculos, y recursos, representados por cuadrados. Si in proceso está
utilizando un recurso, previamente solicitado y concedido, se traza un arco desde el nodo del recurso
(cuadrado) hasta el proceso (círculo).
INTERBLOQUEO Y COMO EVITARLO.

• El sistema operativo no está obligado a ejecutar los procesos en ningún orden en particular. En
concreto, si la concesión de un recurso a un proceso determinado puede provocar interbloqueo,
el sistema operativo es muy libre de suspender al proceso y no atender su petición hasta que esté
seguro de que esto no conduce a una situación problemática.
•Gracias

También podría gustarte