Procesos: conceptos básicos
Posted by Adrián Manso | Posted in Procesos | Posted on 8:07
0
Proceso: instancia de un programa en ejecución
El S.O. reparte el tiempo entre los diferentes procesos
- Estados básicos de un proceso

Bloque de Control del Proceso (BCP)
• El S.O. necesita conocer el estado de cada proceso: BCP
• El BCP contiene:
– Identificador del proceso: clave numérica única
– Identificadores adicionales: usuario, grupos...
– Contexto del proceso: registros del procesador (CP, PP...)
– Información para la planificación: prioridad, punteros...
– Información para la comunicación entre procesos: mensajes
pendientes, notificaciones asíncronas...
– Información para la gestión de la memoria: tablas de páginas, de s
egmentos...
– Información sobre ficheros: tabla de ficheros abiertos
– Información de E/S: dispositivos en uso, canales de comunicaciones
abiertos, operaciones en curso...
– Información para el control de acceso (ident., derechos de acceso)
– Estadísticas: uso de procesador, de memoria...
• Ejemplo: struct task_struct en /usr/src/linux/include/linux/sched.h
Creación de procesos
• ¿Por qué se crean procesos?
– ejecución de un nuevo trabajo de un lote
– creado por el S.O. para proporcionar un servicio (ej: conexión interactiva, impresión...)
– solicitud directa de un proceso en ejecución
• ¿En qué consiste?
– creación de un nuevo BCP
– asignación de un identificador al proceso
– asignación inicial de recursos para el proceso (memoria, ficheros,dispositivos de E/S...)
• nuevo: a partir del ejecutable (ej: CreateProcess en Win32)
• copia de otro: a partir del estado del original (ej: fork en POSIX)
– inclusión en las listas de procesos (ej: todos los procesos, preparados...)
Eliminación de procesos
• ¿Por qué se eliminan procesos?
– terminación normal: el proceso lo solicita al S.O.
– acción no permitida: el S.O. detecta que un proceso ha intentado realizar una acción no permitida (ej: intenta modificar el núcleo del S.O.) y lo destruye
– solicitud de otro proceso: un proceso solicita al S.O. que termine la ejecución de otro
• ¿En qué consiste?
– eliminarlo de las listas de procesos
– liberar los recursos que tenga asignados
– liberar el espacio ocupado por el BCP
Cambio de proceso
• Requiere la intervención del S.O.
• Motivos:
– solicitud directa del proceso en ejecución (llamada al sistema)
– excepción del procesador (ej: fallo de página)
– interrupción de un dispositivo físico (ej: temporizador, disco...)
• Cada vez que el S.O. obtiene el control:
– guarda en el BCP el contexto del proceso (registros del procesador)
– ejecuta el código apropiado
– decide si es necesario un cambio de proceso
– si es necesario, decide qué proceso ejecutar a continuación: planificador (scheduler)
– le cede el control al proceso elegido (puede continuar el mismo): despachador (dispatcher)
Procesos con múltiples hilos
El concepto de hilo
• Varios procesos pueden cooperar para resolver una misma tarea: aplicación concurrente. (Productores/Consumidores).
• También es posible diseñar programas con varias actividades concurrentes (definiendo varios puntos de entrada, por ej.)
• Hilo de ejecución (thread):
(o hebra, o proceso ligero, o flujo) una secuencia de instrucciones independiente dentro del programa.

• Proceso:
- Entorno de ejecución para los hilos
- Un proceso puede contener uno o más hilos
• Hilo: unidad de planificación (preparado, bloqueado...)
• Proceso: unidad de asignación de recursos

¿Qué se comparte y qué es privado?
• Todos los hilos comparten el mismo entorno
de ejecución (proceso)
– mismo espacio de direcciones, conjunto de ficheros abiertos...
– por tanto, comparten las variables globales
• Cada hilo tiene:
– su propio juego de registros de la CPU
– su propia pila (y sus propias variables locales)
• No existe protección entre hilos
– pertenecen al mismo proceso (y usuario)
– colaboran entre sí
– así que no debería ser necesaria
– pero: un error en un hilo puede destrozar la pila de otro
Ventajas de utilizar múltiples hilos
Hilos = concurrencia + ejecución secuencial +
llamadas al sistema bloqueantes
• Aumento de prestaciones y mejor tiempo de respuesta
– paralelismo dentro del proceso
(en multiprocesadores, con soporte adecuado del S.O.)
– las llamadas bloqueantes no paralizan al proceso
• Programas mejor estructurados
– múltiples orígenes/destinos de E/S
– tareas asíncronas
(ej: autoguardado, verificación ortrográfica)
• Mayor eficiencia que con múltiples procesos
– creación/eliminación
(no se copia el VAS, la lista de ficheros abiertos...)
– cambio de tarea
(no se cambia de espacio de direcciones)
– sincronización
(si no necesitan invocar al S.O.)
¿Cuándo no usar hilos? ¿Por qué?
• Las aplicaciones multihilo son mas complejas
– sincronización en el acceso a datos compartidos
– no existe protección entre hilos ® depuración compleja
• La aplic. secuencial puede cumplir los requisitos del usuario
• La aplic. puede estructurarse mejor como un cjto. de
procesos si:
– no comparten datos, o trabajan como filtros
– una actividad requiere privilegios especiales
– necesitan más recursos que los disponibles para un proceso
(memoria, ficheros abiertos...)
Interfaces para
el desarrollo de aplicaciones
• Paquete de hilos:
el conjunto de funciones de librería de que dispone un
usuario para trabajar con hilos
• Los primeros paquetes -> funciones diferentes para los
mismos servicios (p.ej., la creación)

