Soluciones a Problemas de Concurrencia, Hilos, Memoria Virtual y Sockets en Sistemas Operativos

Clasificado en Informática

Escrito el en español con un tamaño de 4 KB

Problemas de Concurrencia en la Ejecución de Procesos

Exclusión Mutua

La exclusión mutua ocurre cuando un proceso entra en su sección crítica, debe terminar de ejecutar el código correspondiente al recurso compartido y recién otro proceso podrá usar ese recurso compartido.

Interbloqueo

El interbloqueo se da cuando dos procesos se están ejecutando y requieren intercambiar recursos entre sí para continuar. Ambos esperarán por la liberación del recurso compartido, lo que nunca se realizará.

Inanición

La inanición sucede cuando tres procesos necesitan acceder a un recurso compartido. Primero, el proceso P1 accede al recurso, luego el siguiente, P2, accede a este, pero P1 lo necesita de nuevo, y luego P2 y así sucesivamente. Entonces, se puede negar el acceso a este recurso a P3.

Hilos en Sistemas Operativos

Ejemplo de uso de hilos en C con la biblioteca pthread:

  • pthread_t hilo;: Identifica un hilo.
  • pthread_create(&hilo, NULL, funcion, NULL);: Crea un hilo.
  • pthread_join(hilo, NULL);: Espera hasta que el hilo termine.
  • pthread_exit(NULL);: Finaliza el hilo.

Memoria Virtual y su Aplicación en la Gestión de Memoria

La memoria virtual es una funcionalidad del sistema operativo cuya principal tarea es la de traer a la RAM programas desde el disco y entregar a la CPU las referencias válidas de direcciones de memoria.

Esquemas de Gestión de Memoria

  • Partición Fija: Las particiones son del mismo tamaño. El número de procesos está limitado por el número de particiones.
  • Partición Dinámica: Asigna el proceso a un espacio de memoria.

Fragmentación Interna y su Solución

La fragmentación interna ocurre en la partición fija, cuando quedan espacios de memoria que no son utilizados porque el tamaño de un proceso es menor que el de la partición, o es mayor y se tiene que utilizar parte de otra partición. Este problema se soluciona con la paginación, donde todas las páginas son del mismo tamaño y no hay marcos desperdiciados.

Fragmentación Externa y su Solución

La fragmentación externa ocurre en la partición dinámica. Al asignarse espacio de memoria que los procesos requieren, conforme pasa el tiempo la memoria se va fragmentando, dejando porciones de espacio libre que no pueden ser utilizadas por ningún proceso. La solución está en la segmentación, en la cual los procesos se dividen en un conjunto de segmentos, los cuales no es necesario que tengan la misma longitud.

Sockets y Comunicación entre Procesos

Un socket es un punto final para la comunicación entre procesos. Los sockets son creados por el servidor y por los programas de aplicaciones cuando necesitan comunicarse con otros procesos. Se utilizan para constituir un canal de comunicación para que los procesos, que pueden no estar relacionados, puedan intercambiar datos.

Estructuras Básicas para la Comunicación Cliente-Servidor mediante Sockets

Cliente

  1. socket: Crea un socket.
  2. connect: Abre la conexión (paso 4 en el servidor).
  3. write: Envía la petición (paso 5 en el servidor).
  4. read: Recibe la respuesta (paso 6 en el servidor).
  5. close: Cierra la conexión.

Servidor

  1. socket: Crea un socket.
  2. bind: Asocia el socket a una dirección.
  3. listen: Escucha por conexiones entrantes.
  4. accept: Acepta una conexión entrante.
  5. read: Recibe la petición del cliente.
  6. write: Envía la respuesta al cliente.
  7. close: Cierra la conexión.

Entradas relacionadas: