jueves, 23 de mayo de 2013

UNIDAD 2. PROCESOS

Contenidos

Concepto de proceso
Estructuras de datos: BCP y colas de
procesos
Niveles de planificación
Creación y finalización de procesos
Hilos


Concepto de proceso

 Un proceso es un programa en ejecución
Un proceso necesita recursos para poder
ejecutarse: memoria, dispositivos de E/S, la
CPU, etc.
 Áreas típicas de la memoria:
código
datos (variables globales, memoria dinámica)
pila (parámetros y variables locales de subrutinas)

Estados de un proceso

A medida que un proceso se ejecuta, cambia
de estado:
nuevo: recién creado por el S.O.
en ejecución: está en la CPU ejecutando instrucciones
bloqueado: esperando a que ocurra algún evento (ej.
una operación de E/S)
preparado: esperando a que le asignen un procesador
terminado: no ejecutará más instrucciones y el S.O. le
retirará los recursos que consume


Estados de un proceso





Bloque de control de proceso

(BCP)

Para cada proceso, el S.O. debe guardar su
estado y cualquier otra información que debe
mantenerse mientras no está en ejecución.
 Bloque de control de proceso:
estado actual (preparado, en espera...)
registros de la CPU (contador de programa, otros registros)
información del planificador (id, prioridad, etc.)
apuntadores a las zonas de memoria del proceso
info. de contabilidad (tiempo consumido, etc.)
info. de E/S (dispositivos por los que espera, lista de archivos
abiertos, etc.)
 etc.


Planificación de procesos


Objetivo de la multiprogramación:
Maximizar el aprovechamiento de la CPU
Objetivo del tiempo compartido
Conmutar la CPU entre procesos con tal frecuencia
que los usuarios puedan interactuar con cada
programa durante su ejecución
Sistemas con un solo procesador
Los procesos esperan por CPU y por dispositivos de
E/S

Niveles de planificación

Creación de procesos

Un proceso se crea mediante una llamada al
sistema.
El proceso creador se denomina padre, y el
creado, hijo.
Variantes en las relaciones padre/hijo:
compartición de recursos: ¿todos, algunos, ninguno?
espacio de memoria
sincronización del padre: ¿espera a que el hijo termine?
terminación

Ejemplos de llamadas al

sistema

Windows:

CreateProcess: se indica el fichero ejecutable donde
está el código del hijo

UNIX:

fork: crea un proceso hijo que es un duplicado del
padre
exec: sustituye el código por un nuevo fichero
ejecutable (no crea un nuevo proceso)

Terminación de procesos

Un proceso termina cuando invoca a una
llamada al sistema específica (ej. exit)
También si se genera una excepción y el S.O.
decide abortarlo
En UNIX, cuando un proceso termina, con él
muere su descendencia (genocidio)
Podría existir una llamada al sistema para
abortar otro proceso

Relaciones de comunicación entre

procesos

Los procesos pueden tener distintas relaciones
de comunicación entre sí:
independientes/competidores
cooperantes
Los procesos independientes compiten por el
uso de recursos escasos (ej. CPU, E/S)
Los procesos cooperantes colaboran entre sí
para llevar a cabo un objetivo común


Hilos (threads)

Un hilo o proceso ligero es una unidad básica de
ejecución, con su propio:
contador de programa
registros de CPU
pila (stack)
Los hilos dentro de una misma aplicación
comparten:
código y datos
recursos del S.O. (ficheros, E/S, etc.)
NOTA: thread se pronuncia “zred”, NO “zrid”

Procesos pesados e hilos

Dos niveles de procesos:
procesos pesados
procesos ligeros o hilos
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

Procesos pesados e hilos



No hay comentarios:

Publicar un comentario