Capítulo 3: Concepto de Proceso

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

¿Cuál de las siguientes secciones de memoria contiene datos globales en un proceso?

  • Sección de datos (correct)
  • Montón (Heap)
  • Pila (Stack)
  • Sección de texto

¿Cuál de los siguientes NO es un estado de proceso?

  • Listo
  • Nuevo
  • En espera
  • Bloqueado (correct)

¿Cuál de los siguientes componentes del bloque de control de proceso (PCB) es esencial para guardar y restaurar el estado de la CPU durante un cambio de contexto?

  • Contador de programa (correct)
  • Información de gestión de memoria
  • Lista de archivos abiertos
  • Información de contabilidad

En el contexto de la gestión de procesos, ¿qué describe mejor un cambio de contexto (context switch)?

<p>El proceso de guardar el estado de un proceso y restaurar el estado de otro. (B)</p>
Signup and view all the answers

¿Cuál de los siguientes describe mejor la función del planificador de procesos (process scheduler)?

<p>Seleccionar el siguiente proceso a ejecutar en la CPU. (A)</p>
Signup and view all the answers

¿Qué ocurre generalmente con los recursos asignados a un proceso cuando este se termina?

<p>Se liberan y se ponen a disposición del sistema. (C)</p>
Signup and view all the answers

¿Cuál de las siguientes opciones describe mejor el propósito del identificador de proceso (PID)?

<p>Identificar de forma única cada proceso en el sistema. (A)</p>
Signup and view all the answers

En sistemas operativos, ¿cuál es la implicación principal de que un proceso se convierta en un 'proceso zombi'?

<p>El proceso ha terminado pero su entrada en la tabla de procesos aún existe. (A)</p>
Signup and view all the answers

Considerando la comunicación entre procesos (IPC), ¿cuál es la principal diferencia entre memoria compartida y paso de mensajes?

<p>La memoria compartida requiere sincronización explícita, mientras que el paso de mensajes proporciona sincronización implícita. (A)</p>
Signup and view all the answers

¿Cuál de las siguientes NO es una razón para la cooperación entre procesos?

<p>Aislamiento de fallos (C)</p>
Signup and view all the answers

En el contexto del problema productor-consumidor, ¿cuál es la principal diferencia entre un búfer acotado (bounded buffer) y un búfer no acotado (unbounded buffer)?

<p>El búfer acotado tiene un tamaño fijo, mientras que el no acotado puede crecer dinámicamente. (C)</p>
Signup and view all the answers

¿Qué condición se produce cuando múltiples procesos acceden y manipulan datos compartidos simultáneamente, y el resultado de la ejecución depende del orden particular en que ocurre el acceso?

<p>Condición de carrera (A)</p>
Signup and view all the answers

¿Qué método de comunicación entre procesos (IPC) es más adecuado cuando se necesita transmitir una gran cantidad de datos a alta velocidad entre procesos en la misma máquina?

<p>Memoria compartida (A)</p>
Signup and view all the answers

¿Cuál de las siguientes describe el propósito principal de las llamadas a procedimientos remotos (RPC)?

<p>Permitir la comunicación entre procesos en diferentes sistemas a través de una red. (B)</p>
Signup and view all the answers

¿Qué tipo de tubería (pipe) puede ser utilizada por procesos que no comparten una relación padre-hijo?

<p>Tuberías con nombre (B)</p>
Signup and view all the answers

¿Qué significa que una llamada de envío (send) en el paso de mensajes sea 'bloqueante' (blocking)?

<p>El emisor se bloquea hasta que el mensaje ha sido enviado y recibido. (A)</p>
Signup and view all the answers

¿Cuál es el propósito del método ftruncate en el contexto de memoria compartida POSIX?

<p>Establecer el tamaño del objeto de memoria compartida. (B)</p>
Signup and view all the answers

En el modelo de comunicación indirecta, ¿qué entidad actúa como intermediario para el envío y recepción de mensajes?

<p>Un buzón (mailbox) (A)</p>
Signup and view all the answers

Al utilizar sockets, ¿qué representa la concatenación de una dirección IP y un número de puerto?

<p>Un punto final de la comunicación (endpoint). (A)</p>
Signup and view all the answers

En términos de colas de planificación, ¿qué tipo de procesos se encuentran típicamente en las colas de espera (wait queues)?

<p>Procesos que están esperando a que ocurra algún evento. (B)</p>
Signup and view all the answers

¿Cuál de los siguientes describe mejor una tubería con nombre (named pipe)?

<p>Un método de comunicación bidireccional entre procesos no relacionados. (A)</p>
Signup and view all the answers

En el contexto de la creación de procesos en sistemas UNIX, ¿cuál es la función principal de la llamada al sistema fork()?

<p>Crear un nuevo proceso duplicado del proceso que realiza la llamada. (C)</p>
Signup and view all the answers

¿Cuál es el propósito de la llamada al sistema exec() después de una llamada a fork() en sistemas UNIX?

<p>Reemplazar el espacio de memoria del proceso hijo con un nuevo programa. (D)</p>
Signup and view all the answers

¿Cuál de las siguientes opciones describe mejor el concepto de 'terminación en cascada (cascading termination)' de procesos?

<p>Cuando un proceso padre termina, todos sus procesos hijos también terminan. (A)</p>
Signup and view all the answers

¿Qué representan los hilos (threads) en un proceso?

<p>Múltiples contadores de programa, permitiendo la ejecución concurrente dentro del proceso. (C)</p>
Signup and view all the answers

¿Cuál de los siguientes describe mejor el concepto de 'proceso huérfano (orphan process)' en sistemas operativos?

<p>Un proceso que continúa ejecutándose después de que su proceso padre ha terminado. (D)</p>
Signup and view all the answers

¿Cuál de los siguientes es un método para implementar la comunicación entre procesos?

<p>Llamada a procedimiento remoto (C)</p>
Signup and view all the answers

¿Cuál de las siguientes describe sockets?

<p>Un extremo para la comunicación entre procesos a través de una red. (B)</p>
Signup and view all the answers

¿Qué es un stub en el contexto de las llamadas de procedimiento remoto (RPC)?

<p>Un proxy del lado del cliente para el procedimiento real en el servidor. (D)</p>
Signup and view all the answers

Entre los estados de proceso, ¿cuál describe a un proceso que se ha detenido temporalmente, generalmente porque está esperando que se complete una operación de entrada/salida?

<p>En espera (C)</p>
Signup and view all the answers

¿Cuál de las siguientes opciones describe correctamente la política de uso con respecto a las tuberías con nombre?

<p>Pueden usarse entre procesos relacionados y no relacionados. (A)</p>
Signup and view all the answers

¿Cuál de los siguientes está contenido en un bloque de control de proceso?

<p>El estado del proceso (C)</p>
Signup and view all the answers

¿Cuál es el modelo más común cuando los procesos cooperativos necesitan interprocesos comunicación?

<p>Memoria compartida (B)</p>
Signup and view all the answers

¿Cuál técnica de comunicación entre procesos involucra llamadas a funciones remotas?

<p>Llamada a procedimiento remoto (D)</p>
Signup and view all the answers

¿Cuál de las siguientes describe el comportamiento sincrónico en el paso de mensajes?

<p>Siempre hay bloqueo (A)</p>
Signup and view all the answers

Cuál de las siguientes operaciones no está incluida en el IPC (Comunicación Inter-Proceso)?

<p>Mover un buzón (B)</p>
Signup and view all the answers

¿Cuál de la opciones describe la organización de cola en la administración de memoria?

<p>Es un tipo de línea de espera o buffer y por lo tanto puede soportar algoritmos FIFO. (D)</p>
Signup and view all the answers

Flashcards

¿Qué es un proceso?

Un programa en ejecución; debe progresar de forma secuencial, sin ejecución paralela de instrucciones.

¿Qué es la sección de texto?

Sección del código del programa.

¿Qué incluye la actividad actual de un proceso?

Información incluyendo contador de programa y registros del procesador.

¿Qué contiene la pila (stack)?

Contiene datos temporales como parámetros de función, direcciones de retorno y variables locales.

Signup and view all the flashcards

¿Qué contiene la sección de datos?

Contiene variables globales.

Signup and view all the flashcards

¿Qué contiene el montón (heap)?

Contiene memoria asignada dinámicamente durante el tiempo de ejecución.

Signup and view all the flashcards

¿Qué es un archivo ejecutable?

Entidad pasiva almacenada en el disco.

Signup and view all the flashcards

¿Cuáles son los estados de un proceso?

Nuevo, ejecución, espera, listo, terminado.

Signup and view all the flashcards

¿Qué es el PCB?

Bloque de control de procesos, contiene información asociada a cada proceso.

Signup and view all the flashcards

¿Qué campos contiene el PCB?

Estado del proceso, contador de programa, registros de CPU, etc.

Signup and view all the flashcards

¿Qué hace el planificador de procesos?

Selecciona procesos disponibles para la siguiente ejecución en el núcleo de la CPU.

Signup and view all the flashcards

¿Cuál es el objetivo del planificador de procesos?

Maximizar el uso de la CPU.

Signup and view all the flashcards

¿Qué es la cola de listos?

Conjunto de procesos residentes en la memoria principal, listos y esperando ejecutar.

Signup and view all the flashcards

¿Qué son las colas de espera?

Conjunto de procesos esperando un evento.

Signup and view all the flashcards

¿Qué es un cambio de contexto?

Ocurre cuando la CPU cambia de un proceso a otro.

Signup and view all the flashcards

¿Qué implica un cambio de contexto?

Guardar el estado del proceso antiguo y cargar el estado guardado para el nuevo proceso.

Signup and view all the flashcards

¿Por qué el cambio de contexto es costoso?

El tiempo de cambio de contexto es sobrecarga pura sin trabajo útil.

Signup and view all the flashcards

¿Qué operaciones se pueden realizar sobre un proceso?

Creación y terminación de procesos.

Signup and view all the flashcards

¿Qué hace el proceso padre?

Crea procesos hijo, formando un árbol de procesos.

Signup and view all the flashcards

¿Qué es el PID?

Identifica y gestiona procesos.

Signup and view all the flashcards

¿Cuáles son las opciones para compartir recursos?

Compartir todos, compartir un subconjunto o no compartir recursos.

Signup and view all the flashcards

¿Cuáles son las opciones de ejecución?

Ejecutar concurrentemente o esperar hasta que los hijos terminen.

Signup and view all the flashcards

¿Qué le ocurre al espacio de direcciones del hijo?

Duplicado o cargado con un programa.

Signup and view all the flashcards

¿Qué hace la llamada al sistema fork()?

Crea un nuevo proceso.

Signup and view all the flashcards

¿Qué hace la llamada al sistema exec()?

Reemplaza el espacio de memoria del proceso.

Signup and view all the flashcards

¿Qué hace la llamada al sistema wait()?

Espera a que el hijo termine.

Signup and view all the flashcards

¿Cómo termina un proceso?

Ejecuta la última instrucción y solicita al sistema operativo que lo elimine.

Signup and view all the flashcards

¿Qué ocurre tras la llamada exit()?

Los recursos del proceso son desasignados por el sistema operativo.

Signup and view all the flashcards

¿Qué hace la llamada al sistema abort()?

El padre puede terminar la ejecución de procesos hijo.

Signup and view all the flashcards

¿Qué es la IPC?

Comunicación entre procesos.

Signup and view all the flashcards

¿Qué es la memoria compartida?

Cuando los procesos comparten datos.

Signup and view all the flashcards

¿Qué es el problema productor-consumidor?

Un proceso produce información, otro la consume.

Signup and view all the flashcards

¿Qué es un proceso productor?

El proceso productor crea información que es usada por el proceso consumidor.

Signup and view all the flashcards

¿Qué es un proceso consumidor?

El proceso consumidor toma información del proceso productor.

Signup and view all the flashcards

¿Qué es un buffer no limitado?

No impone un límite practico sobre el tamaño del buffer.

Signup and view all the flashcards

¿Qué es un buffer limitado?

Asume que tiene un tamaño fijo.

Signup and view all the flashcards

¿Qué es el paso de mensajes?

Procesos se comunican sin recurrir a variables compartidas.

Signup and view all the flashcards

¿Qué operaciones proporciona la instalación IPC?

Enviar(mensaje), recibir(mensaje).

Signup and view all the flashcards

¿Cuáles son los métodos implementados en un buffering?

Con capacidad cero, capacidad limitada, o capacidad ilimitada.

Signup and view all the flashcards

¿Qué hace una capacidad cero?

No encola mensajes en el enlace.

Signup and view all the flashcards

Study Notes

Capítulo 3: Procesos

  • Un sistema operativo ejecuta varios programas que se ejecutan como un proceso.
  • Un proceso es un programa en ejecución y debe progresar de forma secuencial.
  • No hay ejecución paralela de instrucciones de un único proceso.

Concepto de Proceso

  • Múltiples partes componen un proceso.
  • El código de programa también se llama sección de texto.
  • Contador de programa y registros de procesador son parte de la actividad actual.
  • Stack que contiene datos temporales como parámetros de función, direcciones de retorno y variables locales.
  • La sección de datos contiene variables globales.
  • Heap contiene memoria asignada dinámicamente durante el tiempo de ejecución.
  • Un programa es una entidad pasiva almacenada en el disco (archivo ejecutable), el proceso está activo.
  • Un programa se convierte en proceso cuando se carga un archivo ejecutable en la memoria.
  • La ejecución del programa se inicia haciendo clic con el ratón en la GUI, introduciendo su nombre en la línea de comandos, etc.
  • Un programa puede ser varios procesos considerando múltiples usuarios que ejecutan el mismo programa.

Estado del Proceso

  • A medida que un proceso se ejecuta, cambia de estado:
  • Nuevo: Se está creando el proceso.
  • Ejecutando: Se están ejecutando las instrucciones.
  • Esperando: El proceso está esperando que ocurra algún evento.
  • Listo: El proceso está esperando a que se le asigne un procesador.
  • Terminado: El proceso ha finalizado su ejecución.

Bloque de Control de Proceso (PCB)

  • La información asociada a cada proceso, también llamada bloque de control de tarea.
  • Estado del proceso: en ejecución, en espera, etc.
  • Contador de programa: ubicación de la instrucción a ejecutar a continuación.
  • Registros de la CPU: contenidos de todos los registros centrados en el proceso.
  • Información de planificación de la CPU: prioridades, punteros de la cola de planificación.
  • Información de gestión de la memoria: memoria asignada al proceso.
  • Información de contabilidad: CPU utilizada, tiempo de reloj transcurrido desde el inicio, límites de tiempo.
  • Información de estado de E/S: dispositivos de E/S asignados al proceso, lista de archivos abiertos.

Hilos

  • Hasta ahora, el proceso tiene un solo hilo de ejecución.
  • Se considera tener múltiples contadores de programa por proceso donde múltiples ubicaciones se ejecutan a la vez.
  • Múltiples hilos de control forman hilos.
  • Debe entonces tener almacenamiento para los detalles del hilo, múltiples contadores de programa en PCB.

Representación de Proceso en Linux

  • Representado por la estructura C task_struct:
  • pid t_pid /* identificador del proceso */
  • long state /* estado del proceso */
  • unsigned int time_slice /* información de planificación */
  • struct task_struct parent / padre de este proceso */
  • struct list_head children /* hijos de este proceso */
  • struct files_struct files / lista de archivos abiertos */
  • struct mm_struct mm / espacio de direcciones de este proceso */

Planificación de Procesos

  • El planificador de procesos selecciona entre los procesos disponibles para la siguiente ejecución en el núcleo de la CPU.
  • El objetivo es maximizar el uso de la CPU, cambiar rápidamente los procesos al núcleo de la CPU.
  • Se mantienen colas de planificación de procesos.
  • La cola de preparados es un conjunto de todos los procesos que residen en la memoria principal, listos y esperando para ejecutarse.
  • Las colas de espera es un conjunto de procesos que esperan un evento (es decir, E/S).
  • Los procesos migran entre las distintas colas.

Cambio de Contexto

  • Se produce un cambio de contexto cuando la CPU cambia de un proceso a otro.
  • Cuando la CPU cambia a otro proceso, el sistema debe guardar el estado del antiguo proceso y cargar el estado guardado para el nuevo proceso a través de un cambio de contexto.
  • El contexto de un proceso está representado en el PCB.
  • El tiempo de cambio de contexto es una sobrecarga pura; el sistema no realiza ningún trabajo útil mientras conmuta.
  • Cuanto más complejo sea el SO y el PCB, más largo será el cambio de contexto.
  • El tiempo depende del soporte del hardware.
  • Algunos hardware proporcionan múltiples conjuntos de registros por CPU, múltiples contextos cargados a la vez.

Multitarea en Sistemas Móviles

  • Algunos sistemas móviles (por ejemplo, la versión temprana de iOS) permiten que sólo se ejecute un proceso y que otros se suspendan.
  • Debido al espacio real de la pantalla, la interfaz de usuario limita el iOS proporciona para un único proceso en primer plano controlado a través de la interfaz de usuario.
  • Múltiples procesos en segundo plano: en la memoria, en ejecución, pero no en la pantalla, y con límites.
  • Los límites incluyen una sola tarea corta, la recepción de la notificación de eventos, tareas específicas de larga duración como la reproducción de audio.
  • Android ejecuta el primer plano y el segundo plano, con menos límites.
  • El proceso en segundo plano utiliza un servicio para realizar tareas.
  • El servicio puede seguir ejecutándose incluso si el proceso en segundo plano está suspendido.
  • El servicio no tiene interfaz de usuario, utiliza poca memoria.

Operaciones en los Procesos

  • El sistema debe proporcionar mecanismos para:
  • Creación de procesos
  • Terminación de procesos

Creación de Procesos

  • El proceso padre crea procesos hijos, que a su vez crean otros procesos, formando un árbol de procesos.
  • Generalmente, el proceso se identifica y se gestiona a través de un identificador de proceso (pid).
  • Opciones para compartir recursos:
    • El padre y los hijos comparten todos los recursos.
    • Los hijos comparten un subconjunto de recursos del padre.
    • El padre y el hijo no comparten recursos.
  • Opciones de ejecución:
    • El padre y los hijos se ejecutan concurrentemente.
    • El padre espera hasta que los hijos terminen.

Creación de Procesos (Cont.)

  • Espacio de direcciones:
    • Hijo duplicado del padre
    • El hijo tiene un programa cargado en él
  • Ejemplos de UNIX:
    • la llamada al sistema fork() crea un nuevo proceso
    • la llamada al sistema exec() se utiliza después de una fork() para reemplazar el espacio de memoria del proceso con un nuevo programa
    • El proceso padre llama a wait() esperando a que el hijo finalice

Terminación de Procesos

  • El proceso ejecuta la última sentencia y luego solicita al sistema operativo que lo elimine usando la llamada al sistema exit().
    • Devuelve los datos de estado del hijo al padre (vía wait()).
    • Los recursos del proceso son desasignados por el sistema operativo.
  • El padre puede terminar la ejecución de los procesos hijos usando la llamada al sistema abort(). Algunas razones para hacerlo:
    • El hijo ha excedido los recursos asignados.
    • La tarea asignada al hijo ya no es necesaria.
    • El padre está saliendo, y el sistema operativo no permite que un hijo continúe si su padre termina.
  • Algunos sistemas operativos no permiten que el hijo exista si su padre ha terminado. Si un proceso termina, entonces todos sus hijos también deben ser terminados por terminación en cascada.
  • La terminación es iniciada por el sistema operativo.
  • El proceso padre puede esperar a la terminación de un proceso hijo utilizando la llamada al sistema wait(). La llamada devuelve la información de estado y el pid del proceso terminado.
  • Si ningún padre está esperando (no invirtió wait()), el proceso es un zombie.
  • Si el padre terminó sin invocar wait(), el proceso es un huérfano.

Jerarquía de Importancia del Proceso Android

  • Los sistemas operativos móviles a menudo tienen que terminar los procesos para reclamar los recursos del sistema como la memoria. Desde el más importante hasta el menos importante:
    • Proceso en primer plano
    • Proceso visible
    • Proceso de servicio
    • Proceso en segundo plano
    • Proceso vacío
  • Android comenzará a terminar los procesos que son menos importantes.

Arquitectura Multiproceso – Navegador Chrome

  • Muchos navegadores web se ejecutan como un solo proceso (algunos todavía lo hacen).
  • Si un sitio web causa problemas, todo el navegador puede colgarse o fallar.
  • Google Chrome Browser es multiproceso con 3 tipos diferentes de procesos:
    • El proceso del navegador gestiona la interfaz de usuario, el disco y la E/S de la red.
    • El proceso de renderizado renderiza las páginas web, se ocupa de HTML, Javascript. Se crea un nuevo renderizador para cada sitio web abierto.
      • Se ejecuta en el sandbox restringiendo el disco y la E/S de la red, minimizando el efecto de los exploits de seguridad.
    • Proceso de plug-in para cada tipo de plug-in.

Comunicación entre procesos

  • Los procesos dentro de un sistema pueden ser independientes o cooperantes.
  • El proceso cooperativo puede afectar o ser afectado por otros procesos, incluyendo el intercambio de datos.
  • Razones para los procesos de cooperación:
    • Compartir información
    • Aceleración de la computación
    • Modularidad
    • Conveniencia
  • Los procesos cooperantes necesitan comunicación entre procesos (IPC).
  • Dos modelos de IPC:
    • Memoria compartida
    • Paso de mensajes

Problema del Productor-Consumidor

  • Paradigma para los procesos cooperativos:
    • El proceso de producción produce información que es consumida por un proceso de consumo
  • Dos variaciones:
    • El unbounded-buffer no pone ningún límite práctico al tamaño del buffer:
      • El productor nunca espera.
      • El consumidor espera si no hay buffer para consumir.
    • bounded-buffer asume que hay un tamaño de buffer fijo:
      • El productor debe esperar si todos los buffers están llenos.
      • El consumidor espera si no hay buffer para consumir.

IPC – Memoria Compartida

  • Una zona de memoria compartida entre los procesos que desean comunicarse.
  • La comunicación está bajo el control de los procesos de los usuarios, no del sistema operativo.
  • Los principales problemas son proporcionar un mecanismo que permita a los procesos de los usuarios sincronizar sus acciones cuando acceden a la memoria compartida.
  • La sincronización se discute con gran detalle en los capítulos 6 y 7.

IPC – Paso de Mensajes

  • Los procesos se comunican entre sí sin recurrir a variables compartidas.
  • El la facilidad IPC proporciona dos operaciones:
    • send(message)
    • receive(message)
  • El tamaño del mensaje es fijo o variable.
  • Si los procesos P y Q desean comunicarse, necesitan:
    • Establecer un enlace de comunicación entre ellos.
    • Intercambiar mensajes a través de send/receive.
  • Problemas de implementación:
    • ¿Cómo se establecen los enlaces?
    • ¿Puede un enlace ser asociado con más de dos procesos?
    • ¿Cuántos enlaces puede haber entre cada par de procesos de comunicación?
    • ¿Cuál es la capacidad de un enlace?
    • ¿Es el tamaño de un mensaje que el enlace puede acomodar fijo o variable?
    • ¿Es un enlace unidireccional o bidireccional?

Implementación del Enlace de Comunicación

  • Físico:
    • Memoria compartida
    • Bus de hardware
    • Red
  • Lógico:
    • Directo o indirecto
    • Síncrono o asíncrono
    • Buffer automático o explícito

Comunicación Directa

  • Los procesos deben nombrarse explícitamente: send(P, mensaje) – envía un mensaje al proceso P receive(Q, mensaje) – recibe un mensaje del proceso Q
  • Propiedades del enlace de comunicación
    • Los enlaces se establecen automáticamente.
    • Un enlace se asocia con exactamente un par de procesos de comunicación.
    • Entre cada par existe exactamente un enlace.
    • El enlace puede ser unidireccional, pero normalmente es bidireccional.

Comunicación Indirecta

  • Los mensajes se dirigen y se reciben desde buzones (también conocidos como puertos).
    • Cada buzón tiene un ID único
    • Los procesos pueden comunicarse sólo si comparten un buzón
  • Propiedades del enlace de comunicación
    • El enlace se establece sólo si los procesos comparten un buzón común.
    • Un enlace puede estar asociado a muchos procesos.
    • Cada par de procesos puede compartir varios enlaces de comunicación.
    • El enlace puede ser unidireccional o bidireccional.
  • Operaciones:
    • Crear un nuevo buzón (puerto)
    • Enviar y recibir mensajes a través del buzón
    • Borrar un buzón
  • Las primitivas se definen como:
    • send(A, mensaje) – envía un mensaje al buzón A
    • receive(A, mensaje) – recibe un mensaje del buzón A.

Comunicación Indirecta (Cont.)

  • Compartir buzones
    • P1, P2 y P3 comparten el buzón A
    • P₁, envía; P2 y P3 reciben
    • ¿Quién recibe el mensaje?
  • Soluciones
    • Permitir que un enlace se asocie con como máximo dos procesos
    • Permitir que sólo un proceso a la vez ejecute una operación de recepción
    • Permitir que el sistema seleccione arbitrariamente el receptor. El remitente es notificado de quién era el receptor.

Sincronización

  • El paso de mensajes puede ser bloqueante o no bloqueante
  • El bloqueo se considera síncrono.
    • Envío bloqueante: el remitente se bloquea hasta que se recibe el mensaje.
    • Recepción bloqueante: el receptor se bloquea hasta que haya un mensaje disponible.
  • El desbloqueo se considera asíncrono.
    • Envío no bloqueante: el remitente envía el mensaje y continúa.
    • Recepción no bloqueante: el receptor recibe:
      • Un mensaje válido, o
      • Mensaje nulo
  • Diferentes combinaciones posibles:
    • Si tanto el envío como la recepción son de bloqueo, tenemos un punto de encuentro.

Almacenamiento en búfer

  • Cola de mensajes adjunta al enlace.
  • Implementado de una de tres maneras:
  • Capacidad cero - no hay mensajes en cola en un enlace.
    • El remitente debe esperar al receptor (cita).
  • Capacidad limitada: longitud finita de n mensajes.
    • El remitente debe esperar si el enlace está lleno.
  • Capacidad ilimitada - longitud infinita.
    • El remitente nunca espera

Ejemplos de Sistemas IPC - POSIX

  • Memoria compartida POSIX:
    • El proceso primero crea un segmento de memoria compartida: shm_fd = shm_open(name, O CREAT | O RDWR, 0666);
    • También se utiliza para abrir un segmento existente.
    • Establecer el tamaño del objeto: ftruncate(shm_fd, 4096);
    • Usar mmap() para mapear la memoria de un puntero de archivo al objeto de memoria compartida.
    • La lectura y escritura de la memoria compartida se realiza utilizando el puntero devuelto por mmap().

Sistemas IPC - Mach

  • La comunicación Mach se basa en mensajes:
    • Incluso las llamadas al sistema son mensajes.
    • Cada tarea obtiene dos puertos en la creación: Kernel y Notify.
    • Los mensajes son enviados y recibidos usando la función mach_msg().
    • Puertos necesarios para la comunicación, creados vía mach_port_allocate()
    • El envío y la recepción son flexibles; por ejemplo, cuatro opciones si el buzón está lleno:
      • Esperar indefinidamente
      • Esperar como máximo n milisegundos
      • Devolver inmediatamente
      • Almacenar en caché temporalmente un mensaje

Sistemas IPC - Windows

  • Mensajes centrados a través de facilidades de llamadas a procedimientos locales avanzadas (LPC):
    • Sólo funciona entre procesos en el mismo sistema
    • Utiliza puertos (como buzones) para establecer y mantener los canales de comunicación
    • La comunicación funciona de la siguiente manera:
      • El cliente abre un identificador para el objeto de puerto de conexión del subsistema.
      • El cliente envía una solicitud de conexión.
      • El servidor crea dos puertos comunicación privados y devuelve el identificador a uno de ellos al cliente.
      • El cliente y el servidor utilizan el identificador de puerto correspondiente para enviar mensajes o devoluciones de llamada y para escuchar las respuestas.

Sockets

  • Un socket se define como un punto final para la comunicación.
  • La concatenación de la dirección IP y el puerto, es un número incluido al inicio del paquete de mensajes, se diferencia los servicios de red en un host.
  • El socket 161.25.19.8:1625 se refiere al puerto 1625 en el host 161.25.19.8.
  • La comunicación consiste entre un par de sockets.
  • Todos los puertos por debajo de 1024 son bien conocidos, utilizados para los servicios estándar.
  • La dirección IP especial 127.0.0.1 (loopback) se refiere al sistema en el que se está ejecutando el proceso.

Sockets en Java

  • Tres tipos de sockets:
    • Orientado a la conexión (TCP)
    • Sin conexión (UDP)
    • La clase MulticastSocket: los datos pueden ser enviados a múltiples destinatarios

Llamadas a Procedimientos Remotos

  • La llamada a procedimiento remoto (RPC) abstrae las llamadas a procedimiento entre procesos en sistemas en red.
    • Utiliza de nuevo los puertos para la diferenciación de servicios.
    • Stubs - proxy del lado del cliente para el procedimiento real en el servidor.
    • El stub del lado del cliente localiza el servidor y marshals los parámetros.
    • El stub del lado del servidor recibe este mensaje, desempaqueta los parámetros emparejados y realiza el procedimiento en el servidor.
    • En Windows, el código del stub se compila a partir de la especificación escrita en el Lenguaje de Definición de la Interfaz de Microsoft (MIDL).
    • La representación de datos se maneja a través del formato de Representación Externa de Datos (XDL) para tener en cuenta las diferentes arquitecturas.
      • Big-endian y little-endian.
    • La comunicación remota tiene más escenarios de fallo que la local : Los mensajes pueden ser entregados exactamente una vez en lugar de como máximo una vez.
    • OS típicamente proporciona un servicio de rendezvous (o matchmaker) para conectar el cliente y el servidor.

Tuberías

  • Actúa como un conducto que permite que dos procesos se comuniquen
  • Cuestiones:
    • ¿Es la comunicación unidireccional o bidireccional?
    • En el caso de la comunicación bidireccional, ¿es semi o full-duplex?
    • ¿Debe existir una relación (es decir, padre-hijo) entre los procesos de comunicación?
    • ¿Se pueden utilizar las tuberías a través de una red?
    • Las tuberías ordinarias: no se puede acceder desde fuera del proceso que lo creó. Típicamente, un proceso padre crea una tubería y la usa para comunicarse con un proceso hijo que creó.
    • Tuberías nombradas: se puede acceder sin una relación padre-hijo.

Tuberías Ordinarias

  • Las tuberías ordinarias permiten la comunicación al estilo estándar productor-consumidor.
    • El productor escribe en un extremo (el write-end de la tubería)
    • El consumidor lee desde el otro extremo (el read-end de la tubería)
    • Por lo tanto, las tuberías ordinarias son unidireccionales Proceso padre debe ser requerido para la comunicación.
  • Windows llama a estas tuberías anónimas.

Tuberías Nombradas

  • Las tuberías nombradas son más poderosas que las tuberías ordinarias
  • La comunicación es bidireccional
  • No es necesaria ninguna relación paterno-filial entre los procesos de comunicación
  • Varios procesos pueden utilizar la tubería nombrada para la comunicación
  • Se proporciona tanto en los sistemas UNIX como en los de Windows.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Operating System Processes Quiz
5 questions
Computer Science: Programs and Processes
10 questions
Use Quizgecko on...
Browser
Browser