Académique Documents
Professionnel Documents
Culture Documents
Que el estudiante conozca de forma clara como los procesos se sincronizan y se comunica.
Sistemas Multiprocesador
Son aquellos sistemas que pueden montar en memoria uno o más programas a la vez. Pueden tener dos o más
procesadores o una serie de computadoras. Esto se ve hoy en día en cada dispositivo inteligente (computador,
celular, etc). Pueden trabajar de forma asimétrico o simétrica.
Es decir: permiten que cualquier procesador trabaje en cualquier tarea sin importar su localización en memoria.
Estos sistemas pueden mover fácilmente tareas entre los procesadores para garantizar eficientemente el trabajo.
Multiprocesador asimétrico.
A cada procesador se le asigna una tarea específica; el procesador maestro planifica y asigna el trabajo a los
procesadores esclavos.
Es decir: hay un procesador (maestro) en el cual se ejecuta el sistema operativo y los demás (esclavos) donde
se ejecutan las demás tareas
Antes que nada, es importante definir qué se entiende por proceso a la representación de la ejecución de un
programa, y es en esencia un flujo de ejecución. Según el sistema operativo, puede ser posible determinar el
contexto de un proceso.
El Sistema Operativo tiene, como uno de sus objetivos principales, administrar la compartición de los recursos
del CPU y cómo éstos son asignados a diferentes procesos. Los mecanismos de sincronización dentro del
sistema operativo se vuelven necesarios para el acceso a los recursos compartidos y la comunicación entre
procesos que se encuentren relacionados entre si, por ejemplo, dentro de una misma aplicación. El ciclo
primario de un proceso empieza, cuando el proceso requiere la CPU durante un periodo de tiempo, y pasa por
una serie de estados.
Estados de un proceso:
La comunicación entre procesos es algo puntual, es decir, que los mecanismos de comunicación y
sincronización son dinámicos y cuando uno de estos se necesita, se crea, se usa y luego se destruye.
Los servicios básicos de comunicación son:
1. Comunicación Síncrona: Esta consiste básicamente, en que los dos procesos ejecuten servicios de
forma simultánea. El emisor ejecuta el envío de información y se queda en espera, mientras que el
receptor ejecuta la recepción de la misma.
2. Comunicación Asíncrona: El emisor en este caso envía la información y sigue con su propia
ejecución, mientras tanto, el Sistema Operativo proporciona un lugar de almacenamiento temporal
para la información enviada, hasta que el receptor la solicite.
3. Persistente: El mensaje es almacenado todo el tiempo que sea necesario hasta poder ser entregado.
Ejemplo: e-mail.
5. Simétrica: Es una comunicación bidireccional ya que cualquier proceso puede enviar o recibir
mensajes.
La Comunicación entre procesos o Inter Process Communication (IPC) puede darse entre procesos que se
ejecutan de manera:
Independiente: Este tipo de procesos no son alterados ni pueden alterar a otros procesos que se estén
ejecutando, ya que solamente interactúan consigo mismo, por así decirlo.
Cooperativos: Estos procesos pueden ser afectados y afectar a los demás procesos que estén
ejecutándose, obviamente, si éstos otros, también son cooperativos.
El tipo de proceso responde a una serie de razones que sustentan la utilización de unos u otros. Algunas razones
para proporcionar entornos para la cooperación de procesos son:
Compartir información: Puede suceder un escenario en el cual varios usuarios necesiten la
información de cierto archivo compartido, en tal caso, se debe proveer un entorno que permita el
acceso concurrente a la información requerida.
Acelerar los cálculos: Si se cuenta con un CPU con multiprocesadores o bien múltiples canales de
E/S, se puede dividir una determinada tarea en subtareas que pueden ejecutarse de manera paralela,
para que así la tarea pueda realizarse más rápido.
Modularidad: Si se quiere construir un sistema de forma modular, es necesario dividir la información
del sistema en distintos procesos o hebras.
Conveniencia: Como usuarios, todos nos hemos topado con la necesidad de querer trabajar con
múltiples tareas simultáneamente, por ejemplo, estar navegando por internet, mientras escuchamos
música e imprimiendo un archivo al mismo tiempo.
Los mecanismos más usados para la comunicación y sincronización entre procesos son:
2. Memoria compartida
Permite que sea establecida una zona común de memoria entre dos o más procesos, y por lo tanto que puedan
acceder a todos los datos que en él se encuentren. El acceso a esta memoria debe ser de forma sincronizada
para evitar que existan conflictos entre los diferentes procesos que quieran acceder a la información. La
sincronización se lleva a cabo a través de rutinas de software que están basadas en las instrucciones de
sincronización que proporciona el hardware. El soporte por hardware tiene la ventaja de la velocidad, pero la
realización de software en las rutinas de sincronización, tiene la ventaja de la flexibilidad y la adaptabilidad a
diferentes situaciones.
El Sistema Operativo, a través de su gestor de memoria, es el encargado de hacer la traducción entre las
direcciones físicas y las virtuales. La memoria que está manejando el proceso, al igual que la memoria
compartida, serán virtuales, por lo que su dirección física puede variar al pasar el tiempo y no habrá problema,
ya que los procesos generan direcciones virtuales. Se dispone de 4 llamadas:
shmget(): Permite acceder a una zona de memoria compartida. Los argumentos que utiliza son:
Una Clave
Tamaño del segmento a crear
El flag inicial de operación
Unicamente reserva el espacio necesario para alojar el segmento, el segmento no se crea
hasta que algún proceso se asigne a él. El valor de shmflg se compone con:
IPC_CREAT: Crea un nuevo segmento en caso de no existir, caso contrario, comprueba
permisos del usuario y permite acceder a él con la clave del segmeto.
IPC_EXCL: Se utiliza junto a IPC_CREAT para asegurar el fallo si el segmento existe.
mode_flags: Los 9 bits menos significativos del número están reservados para el
establecimiento de permisos de acceso.
shmctl(): Nos brinda operaciones para el control de la memoria compartida. Algunas
operaciones disponibles son:
IPC_STAT: Lee el estad de la estructura de control de memoria asociada y lo devuelve
IPC_SET: Cambia el valor de los siguientes miembros de la estructura de datos.
IPC_RMID: Marca una región de memoria compartida como destruida, esto se llevará a cabo
cuando el proceso que la adjuntaba deje de hacerlo.
SHM_LOCK: Bloquea la zona de memoria compartida.
SHM_UNLOCK: Desbloquea la zona de memoria compartida.
shmat(): Es la llamada que debe invocar un proceso para adjuntar una zona de memoria
compartida dentro de su espacio de direcciones. Recibe 3 parámetros:
Indentificador del segmento (shmid)
Dirección de memoria (shmaddr)
Banderas
shmdt(): Es la operación que realizará el proceso anterior para desvincularse de una zona de
memoria compartida. Solo cuenta con el parámetro la dirección shmaddr.
3. Semáforos
Esta es una herramienta que sirve exclusivamente para la sincronización de los procesos, y permiten controlar
el acceso de varios procesos a recursos que sean comunes para más de uno. Es un objeto con un valor entero
al que se le puede asignar un valor inicial no negativo y al que solo se puede acceder utilizando dos operaciones:
wait (down):
wait(s){
s=s-1;
if(s<0)
Bloquear al proceso;
}
signal (up):
signal(s){
s=s+1;
if(s<=0)
Desbloquear al proceso;
}
En el estándar POSIX, un semáforo se identifica mediante una variable del tipo sem_t.
Semáforos sin nombre: Permiten sincronizar a los procesos ligeros que son ejecutados en un
mismo proceso o los procesos que lo heredan a través de la llamada fork.
Semáforos con nombre: Lleva asociado un nombre y sirve para sincronizar procesos sin
necesidad de que tengan que heredar el semáforo utilizando la llamada fork.
En cuanto a los recursos, los procesos compiten por el acceso a éstos, o bien, cooperan para comunicarse y
compartir información dentro de una aplicación.
Existen diferentes esquemas de comunicación y uno de los más conocidos es el esquema Cliente-Servidor,
donde los clientes producen peticiones que son consumidas por el servidor de un recurso determinado. Cuando
se utiliza este esquema, los procesos no comparten el espacio de direcciones.
Conclusión:
Estos modelos son bastante comunes, y han de usarse en los distintos sistemas operativos, muchos sistemas
implementan ambos, el paso de mensajes es útil de implementar en el paso de pequeñas cantidades de
información, resulta más fácil de implementar como mecanismo de comunicación entre computadoras.
Bibliografía:
https://monografias.com/trabajos51/sincro-comunicacion/sincro-comunicacion.shtml
https://es.wikipedia.org/wiki/Comunicaci%C3%B3n_entre_procesos
http://wiki.inf.utfsm.cl/index.php?title=Comunicaci%C3%B3n_entre_procesos
https://www.uv.es/varnau/OC_T5_5.pdf
http://www.sc.ehu.es/acwlaroa/SO2/Apuntes/Cap2.pdf
http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8179/1/fserranocaTFC0611.pdf
https://chsos20122910022.wordpress.com/2012/08/29/sistemas-multiprocesador/