Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

183
Vistas
Uso de mutexes/semáforos con procesos

Casi todo el código y los tutoriales que he leído en línea hasta ahora implican el uso de mutexes y semáforos para la sincronización entre subprocesos. ¿Se pueden usar para sincronizar entre procesos?

Me gustaría escribir un código que se vea así:

 void compute_and_print() { // acquire mutex // critical section // release mutex } void main() { int pid = fork(); if ( pid == 0 ) { // do something compute_and_print(); } else { // do something compute_and_print(); } }
  • ¿Podría alguien indicarme un código similar que haga esto?
  • Entiendo que diferentes procesos tienen diferentes espacios de direcciones, pero me pregunto si los anteriores serían diferentes espacios de direcciones, sin embargo, ¿el mutex no se referiría al mismo objeto del kernel?
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Sí, es posible. Hay muchas formas de sincronizar diferentes procesos. Quizás las soluciones más populares para la exclusión mutua en este campo son los semáforos System V IPC y las operaciones atómicas en la memoria compartida . Le recomiendo que lea el capítulo 5 del libro de David A Ruslin llamado Mecanismos de comunicación entre procesos, o mejor aún, el libro completo.

En cuanto a su segunda pregunta, la mayoría de los sistemas operativos modernos en hardware básico colocarían procesos en diferentes espacios de direcciones, aunque también es posible que los procesos compartan el mismo espacio de direcciones (consulte Memoria virtual , Protección de memoria). De cualquier manera, si el núcleo maneja el mecanismo IPC, entonces dos procesos se referirían al mismo "objeto del núcleo", como dijiste. En los casos en que la exclusión mutua se implementa (casi) sin el núcleo (como bloqueos giratorios de algún tipo que usan "memoria compartida"), ambos procesos se referirían a la misma memoria física aunque sus direcciones virtuales para esa memoria puedan ser diferentes.

Espero eso ayude. ¡Buena suerte!

over 4 years ago · Santiago Trujillo Denunciar

0

Para que quede claro, POSIX (y Linux) admiten dos familias separadas de semáforos que tienen dos interfaces y métodos de uso diferentes.

Están los semáforos SysV más antiguos que consisten en semget , semop , semctl y (algo opcionalmente) ftok .

Los semáforos "posix" más modernos consisten en sem_open/sem_init , sem_wait , sem_post , sem_close y sem_unlink .

Los regímenes de configuración/uso y las capacidades son lo suficientemente diferentes como para que valga la pena familiarizarse con ambos para ver qué es mejor para su caso de uso.

También puede usar procesos mutex compartidos del paquete pthreads.

over 4 years ago · Santiago Trujillo Denunciar

0

Parece que está buscando System V IPC Probablemente usaría un semáforo para sincronizar entre procesos.

Aquí hay una buena introducción a Sys V IPC en Linux

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda