0% encontró este documento útil (0 votos)
10 vistas3 páginas

Procesos Ligeros y Estados en Sistemas

Un proceso es un programa en ejecución que se ejecuta secuencialmente. Existen dos tipos de procesos: procesos pesados que contienen hilos compartiendo memoria y recursos, y procesos ligeros o hilos que comparten código y datos pero tienen su propia pila y contador de programa. La llamada fork() crea un proceso hijo que hereda del padre su estado y recursos, mientras que los hilos dentro de un proceso comparten recursos y memoria pero tienen su propia planificación. Los hilos permiten mejor explotación del paralelismo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas3 páginas

Procesos Ligeros y Estados en Sistemas

Un proceso es un programa en ejecución que se ejecuta secuencialmente. Existen dos tipos de procesos: procesos pesados que contienen hilos compartiendo memoria y recursos, y procesos ligeros o hilos que comparten código y datos pero tienen su propia pila y contador de programa. La llamada fork() crea un proceso hijo que hereda del padre su estado y recursos, mientras que los hilos dentro de un proceso comparten recursos y memoria pero tienen su propia planificación. Los hilos permiten mejor explotación del paralelismo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

PROCESOS

Un proceso es un programa en ejecución, que se ejecuta secuencialmente (no más de una


instrucción a la vez).

El proceso es una abstracción creada por el SO, que se compone de:

 Identificación del proceso.


 Identificación del proceso padre.
 Información sobre el usuario y grupo.
 Estado del procesador.
 Información de control de proceso.
 Información del planificador.
 Segmentos de memoria asignados.
 Recursos asignados

Dos niveles de procesos:

 procesos pesados
 procesos ligeros o hilos

PROCESO PESADO FORK()


Un proceso pesado contiene uno o varios hilos que comparten la misma memoria y recursos.
¿Quién implementa los hilos?

 el sistema operativo
 el programa de usuario

La llamada fork() crea una copia (hijo) del proceso que la invoca

El hijo hereda del padre:

 Estado
 Semáforos
 Objetos de memoria
 Política de planificación, etc.

El hijo no hereda:

 El PID
 Alarmas y temporizadores
 Operaciones de E/S asíncronas

Problemas:

 Copia de todos los recursos del proceso.


 Coste de comunicaciones entre procesos
PROCESO LIGERO THREAD
Un hilo o proceso ligero es una unidad básica de ejecución, con su propio:

 contador de programa
 registros de CPU n pila (stack)

Los hilos dentro de una misma aplicación comparten:

 código y datos
 recursos del S.O. (ficheros, E/S, etc.)

Un thread es un flujo de control perteneciente a un proceso (a veces se habla de tareas con


threads)

 Se les suele denominar también procesos ligeros, hebras, hilos, etc.


 La sobrecarga debida a su creación y comunicación es menor que en los procesos pesados
 Cada hilo pertenece a un proceso pesado
 Todos los hilos comparten su espacio de direccionamiento
 Cada hilo dispone de su propia política de planificación, pila y contador de programa

Soluciona:

 Solo hay una copia de las variables compartidas.


 Sin coste de comunicaciones entre procesos.

Beneficios:

 Explotación del paralelismo


 Explotación de concurrencia (I/O)
 Estilo de programación

Inconvenientes:

 Overhead por creación de threads


 Sincronización: más bloqueos al haber más threads
 Colisiones en el acceso a memoria
 Más difícil la depuración: debuggers, trazadores, puntos de ruptura, repreducción de la
ejecución,

Uso de programación con threads:

 Computación intensiva
 Varios procesadores
 Solapamiento computación y I/O
 Aplicaciones servidor distribuidas

Operaciones con procesos ligeros

 Creación y destrucción
 Sincronización
 Gestión de prioridades
 Gestión de señales
 Gestión de memoria
 Se pueden utilizar todas las funciones incluidas en POSIX.1 y POSIX.1b
 La interfaz de hilos POSIX es pthreads, aunque existen otras bibliotecas de hilos

Crear un nuevo hilo:

int pthread_create (pthread_t *thread,

pthread_attr_t *attr,

void *(*start)(void *),

void *arg);

 En thread devuelve el identificador de hilo


 attr es un puntero a los atributos de la tarea
 El tercer argumento en un puntero a la función que ejecutará el hilo
 arg es un puntero a los argumentos del hilo

También podría gustarte