Resumen del capitulo 2 Procesos e Hilos

Definiciones previas, abreviaturas

Procesos

Creación de un proceso

Terminación de un proceso

Estados

Implementación de procesos

Modelado de Multiprogramación (cálculo de performance)


Hilos

Modelo

[#Comparación entre procesos e hilos]

Hilos en modo de usuario

La técnica de hilamiento se implementa en una biblioteca del software de terceros

Ventajas

  • Tienen soporte en los SO sin multihilamiento
  • Cada procesos puede tener un algoritmo de planificación personalizado para la multiprogramación de sus hilos
  • Escalan mejor que los hilos de kernel

Desventajas

  • Un hilo que realice una syscall para bloquear el proceso afecta a todos los demás hilos
  • Un hilo puede producir fallos de página
  • Mientras se ejecute un hilo, ningún otro pude correr hasta que este ceda el CPU

Hilos en modo monitor (kernel)

Comunicación entre procesos

Condiciones de carrera

El resultado de que dos o más procesos/hilos lean/escriban datos, dependerá de quién se ejecutó primero

Exclusión mutua (Mutex) con espera ocupada

Métodos para evitar condiciones de carrera

Deshabilitar interrupciones

Variables candado

Mutex SIN espera ocupada

Dormir y despertar

Semáforos

Planificación

Se realiza cuando hay más de un proceso en estado Listo para un CPU.
El planificador es la parte del SO que realiza la decision con un algoritmo de planificación.

Algoritmos de planificación

Para sistemas de procesamiento por lotes

Para sistemas interactivos

Para sistemas en tiempo real

Política contra mecanismo

Planificación de hilos

(Explicación alternativa)


Anexos

Notas relacionadas

Interrupciones
Interbloqueos

Definiciones previas, abreviaturas

Proceso batch

En los mainframes, se usa un sistema de procesamiento por lotes en el que los usuarios envían trabajos de procesamiento (en remoto), y cuando el SO decide que tiene los recursos para ejecutar un trabajo, crea un proceso y ejecuta el siguiente en la cola.

Creación de un subproceso y jerarquía

En UNIX

Un proceso llama la función fork, que crea un clon exacto en memoria. Luego, el hijo llama a execve para cargar un programa del disco y cargarlo en su espacio de memoria. Este proceso en 2 pasos permite que los procesos se compartan los flujos estándar (stdin, stdout, stderr).

En el arranque

El programa init se encarga de crear subprocesos para cada terminal (y de ahí, cada usuario creará sus subprocesos).

En Windows

No se admiten procesos hijos. Un proceso puede llamar a CreateProcess con varios parámetros, y devuelve un handler para que el padre pueda controlar al hijo, pero en definitiva todos los procesos tienen el mismo nivel.

Funcionamiento de un servidor web

Modelo sin hilos

Es posible un modelo de servidor web sin hilos, si se tiene acceso a instrucciones de disco sin bloqueo.
Este diseño se conoce como máquina de estados finitos

Comparación entre procesos e hilos

Estructuras en memoria

Pasted image 20231107160916.png