You are on page 1of 22

Sistemas Operativos Tema 4.

Procesos

1998-2008 Jos Miguel Santos Alexis Quesada Francisco Santana


1

Contenidos
Concepto de proceso Estructuras de datos: BCP y colas de procesos Niveles de planificacin Creacin y finalizacin de procesos Hilos

Concepto de proceso
Un proceso es un programa en ejecucin Un proceso necesita recursos para poder ejecutarse: memoria, dispositivos de E/S, la CPU, etc. reas tpicas de la memoria:
cdigo datos (variables globales, memoria dinmica) pila (parmetros y variables locales de subrutinas)

Estados de un proceso
A medida que un proceso se ejecuta, cambia de estado:
nuevo: recin creado por el S.O. en ejecucin: est en la CPU ejecutando instrucciones bloqueado: esperando a que ocurra algn evento (ej. una operacin de E/S) preparado: esperando a que le asignen un procesador terminado: no ejecutar ms instrucciones y el S.O. le retirar los recursos que consume

Estados de un proceso
admitido planificador llamada al sist. o excepcin

nuevo

terminado

preparado
interrupcin

ejecucin

finaliza la operacin u ocurre el evento

llamada al sist. de E/S o espera por un evento

bloqueado

Bloque de control de proceso (BCP)


Para cada proceso, el S.O. debe guardar su estado y cualquier otra informacin que debe mantenerse mientras no est en ejecucin. Bloque de control de proceso:
estado actual (preparado, en espera...) registros de la CPU (contador de programa, otros registros) informacin 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.

Planificacin de procesos
Objetivo de la multiprogramacin:
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 ejecucin

Sistemas con un solo procesador


Los procesos esperan por CPU y por dispositivos de E/S

Cola de planificacin
Conjunto de procesos esperando por la utilizacin de un determinado recurso Generalmente se implementa mediante una lista encadenada, donde cada elemento es una estructura de control que representa la peticin a servir Su administracin se lleva a cabo de acuerdo con la poltica de planificacin ejecutada por el planificador del recurso
PLANIFICADOR (poltica de planificacin) cola de planificacin

recurso
estructura de control (peticin)

Colas de procesos
El S.O. organiza los BCP en colas de espera por el procesador o por los dispositivos de E/S. (colas de planificacin: cola de procesos, colas de dispositivos)
cola de preparados

CPU

E/S

cola de espera por E/S

E/S

cola de espera por E/S

Procesos: ubicacin en memoria


SO
BCPPA BCPPB BCPPN

Espacio del ncleo

. . . BCPPA cdigo datos Espacio de usuario pila . . . BCPPB cdigo datos pila . . . Proceso de usuario A

Proceso de usuario B

10

Niveles de planificacin
En los sistemas por lotes, existe un planificador de largo plazo (PLP) o de alto nivel, que suministra procesos a la cola de preparados. El planificador de corto plazo o de bajo nivel es el que asigna y desasigna la CPU. El PLP trata de conseguir una mezcla adecuada de trabajos intensivos en CPU y en E/S. Se ejecuta con poca frecuencia. Planificador de medio plazo. Enva al disco procesos bloqueados, para liberar memoria principal a los otros procesos => Intercambio (swapping).

11

Niveles de planificacin
cola de trabajos

PLP
cola de preparados

PCP
CPU

E/S

cola de espera por E/S

PMP
memoria secundaria

12

Cambio de contexto

(context switch)

Es la operacin que consiste en desalojar a un proceso de la CPU y reanudar otro. Hay que guardar el estado del proceso que sale en su BCP, y recuperar los registros del proceso que entra. Cada contexto se encuentra en cada BCP. El cambio de contexto es tiempo perdido, as que debe ser lo ms rpido posible. Para minimizar ese tiempo perdido:
El hardware a veces tiene instrucciones para facilitar el cambio de contexto (ej. PUSHA = guardar todos los registros) Hilos (threads)

13

Cambio de contexto
proceso P0 sistema operativo interrupcin o llamada al sistema guardar estado en BCP0 en ejecucin ocioso proceso P1

. . .

ocioso

recuperar estado en BCP1 interrupcin o llamada al sistema guardar estado en BCP1 en ejecucin

. . .

ocioso

recuperar estado en BCP0 en ejecucin

14

Creacin 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:
comparticin de recursos: todos, algunos, ninguno? espacio de memoria sincronizacin del padre: espera a que el hijo termine? terminacin

15

Ejemplos de llamadas al sistema


Windows:
CreateProcess: se indica el fichero ejecutable donde est el cdigo del hijo

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

16

Terminacin de procesos
Un proceso termina cuando invoca a una llamada al sistema especfica (ej. exit) Tambin si se genera una excepcin y el S.O. decide abortarlo En UNIX, cuando un proceso termina, con l muere su descendencia (genocidio) Podra existir una llamada al sistema para abortar otro proceso

17

Relaciones de comunicacin entre procesos


Los procesos pueden tener distintas relaciones de comunicacin 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 comn

18

Hilos (threads)
Un hilo o proceso ligero es una unidad bsica de ejecucin, con su propio:
contador de programa registros de CPU pila (stack)

Los hilos dentro de una misma aplicacin comparten:


cdigo y datos recursos del S.O. (ficheros, E/S, etc.)

NOTA: thread se pronuncia zred, NO zrid

19

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. Quin implementa los hilos?
el sistema operativo el programa de usuario

20

Procesos pesados e hilos


cdigo datos

hilo1 pila1

hilo2 pila2

hilo3 pila3

Proceso pesado
21

Por qu los hilos?


El objetivo es facilitar la escritura de aplicaciones concurrentes cooperativas:
Dado que todos los hilos comparten los recursos, un proceso pesado puede contener decenas de hilos sin mucho coste adicional (slo los pequeos BCP de sus hilos) La comunicacin entre los hilos del proceso es ms sencilla (usando la memoria que comparten) El cambio de contexto entre hilos de un mismo proceso pesado es menos costoso

22