Você está na página 1de 143

Sistemas Operativos

Administracin del Procesador

Unidad2-C7

Administracin del procesador

Administracin de procesos
El SO es el responsable de:
La creacin y eliminacin de procesos del sistema y del usuario La calendarizacin de procesos Sincronizacin de procesos Comunicacin de procesos Manejo de bloqueos

Procesos
Informalmente un proceso es un programa en ejecucin
Un proceso es ms que un cdigo de programa, el cual es a veces llamado seccin de texto Tambin incluye la actividad actual, representada por el contador del programa y el contenido de los registros de los procesos Un proceso generalmente incluye la pila de proceso, el cual contiene datos temporales y la seccin de datos la cual contiene variables globales

Programas pasivos
Un programa por s mismo no es un proceso, un programa es una entidad pasiva, como por ejemplo: el contenido de un archivo almacenado en disco Un proceso es una entidad activa con un contador de programa especificando la siguiente instruccin a ser ejecutada y un conjunto de recursos asignados

Estados de proceso
Conforme un proceso se ejecuta cambia su estado
El estado de un proceso se define en parte por la actividad actual de ese proceso. Cada proceso puede estar en uno de los siguientes estados:
Nuevo: El proceso se crea Ejecutndose: Sus instrucciones son ejecutadas Esperando: El proceso espera por la ocurrencia de algn evento Listo: El proceso espera a ser asignado al CPU Terminado: El proceso ha finalizado su ejecucin
6

Diagrama de estados de procesos

Operaciones en procesos
Los procesos se pueden ejecutar concurrentemente, pueden ser creados y borrados dinmicamente
Un proceso puede crear varios procesos nuevos durante su ejecucin Al proceso creador se le llama proceso padre y a los nuevos procesos hijos Cada uno de los nuevos procesos a su vez pueden crear nuevos procesos generando un rbol de procesos

Creacin de procesos
En general un proceso necesita ciertos recursos para lograr su tarea

Cuando un proceso crea subprocesos, stos pueden obtener los recursos directamente del S.O.
O pueden estar restringidos a un subconjunto de recursos del proceso padre El padre puede particionar sus recursos entre sus hijos o puede compartir algunos recursos entre varios de ellos. Restringir a un proceso hijo a un subconjunto de recursos del padre previene que los subprocesos sobrecarguen el sistema pr crear muchos subprocesos

Subprocesos
Cuando un proceso padre crea subprocesos, existen dos posibilidades en trminos de la ejecucin
El padre continua su ejecucin concurrentemente con sus hijos El padre espera hasta que algunos o todos sus hijos hayan terminado

Tambin existen dos posibilidades en trminos del espacio de direcciones del nuevo proceso
El proceso hijo es un duplicado de proceso padre El proceso hijo tiene un programa cargado en l
10

Terminacin de procesos
Un proceso termina cuando ejecuta su ltima instruccin y pide al S.O. que le elimine. En este punto, el proceso puede regresar datos a su proceso padre Todos lo recursos del proceso son liberados por el S.O. Tambin puede terminar un proceso por la peticin de otro proceso. Generalmente slo el proceso padre puede pedir que se terminen sus hijos.
11

Terminacin de procesos
Dentro de las razones para que un padre termine con su hijo
El hijo ha excedido el uso de algn recurso. Implica mecanismo de inspeccin La tarea asignada al hijo ya no es requerida El padre se termina o sale del sistema. Terminacin en cascada

12

Bloque de Control de Proceso

Cada proceso se representa en el sistema operativo por un PCB (process control block)

13

PCB
Un PCB contiene unidades de informacin como son:
Estado de proceso: Nuevo, listo, ejecutndose, esperando, etc. Contador de programa: Indica la direccin de la siguiente instruccin a ser ejecutada Registros de CPU: Los registros varan en nmero y tipo, dependiendo de la arquitectura de la computadora. Junto con el contador de programa, la informacin de los registros debe ser guardada cada vez que se ocurra una interrupcin para permitir al proceso continuar correctamente.

14

PCB
Informacin de Calendarizacin de CPU. Incluye prioridad de proceso, apuntadores a colas de calendarizacin. Informacin de administracin de la memoria. Incluye el registro base y lmite, las tablas de pginas, tablas de segmento Informacin de conteo. Incluye la cantidad de tiempo de CPU y tiempo real utilizados, lmites de tiempo, nmero de proceso Informacin del estado de E/S. Incluye una lista de E/S de dispositivos asignados al proceso

15

Cambio de Contexto
Cambiar el CPU de un proceso a otro requiere que se almacene el estado de los procesos salientes y se recargue el estado de los procesos entrantes Esta tarea es conocida como el cambio de contexto
El contexto de un proceso est representado por el PCB Cuando un cambio de contexto ocurre el kernel guarda el estado en el PCB y carga el PCB del nuevo proceso

16

CPU cambiando entre procesos

17

Cambio de Contexto
El tiempo que toma cambiar de contexto es pura sobrecarga Este tiempo varia de arquitectura en arquitectura dependiendo de la velocidad de la memoria, el nmero de registros a copiar, etc

18

Procesos cooperativos

19

Procesos cooperativos
Los procesos que se ejecutan concurrentemente en el S.O. pueden ser independientes o cooperativos Un proceso independiente no afecta ni es afectado por otros procesos en ejecucin en el sistema
Cualquier proceso que no comparte cualquier informacin con otro es independiente

Un proceso cooperativo afecta o es afectado por otros procesos en ejecucin

20

Razones para la cooperacin


Compartir informacin. Dado que varios usuarios pueden estar interesados en la misma informacin Aceleracin de cmputo. Si se desea que una tarea particular se ejecute ms rpido, es necesario dividirla en subtareas, ejecutndose en paralelo Modularidad. Cuando se desea construir un sistema de manera modular dividiendo las funciones en procesos separados o hilos Conveniencia. Para permitir al usuario realizar ms de una tarea al mismo tiempo.

21

Procesos cooperativos
La ejecucin concurrente de procesos cooperativos requiere de mecanismos que permitan a los procesos comunicarse entre ellos y sincronizar sus acciones
Pipes Signals Message Queues Semaphores Shared Memory Sockets

El problema del consumidor-productor


Uno consume informacin producida por el otro Para que se ejecuten concurrentemente, necesitan de un buffer
Buffer ilimitado Buffer limitado
22

Procesos cooperativos
Buffer
Provisto por el SO por medio del uso de la comunicacin entre procesos (IPC) Codificado explcitamente por la aplicacin del programador con memoria compartida

Memoria compartida
Requiere que los procesos compartan un buffer comn. El cdigo para implementar el buffer debe ser escrito explcitamente por el programador

23

Hilo de ejecucin
El modelo de proceso, hasta ahora discutido, implica que es un programa que slo posee un slo hilo de ejecucin Este nico hilo de control permite al proceso realizar slo una tarea a la vez La mayora de los SO extienden el concepto de proceso para permitirles tener mltiples hilos de ejecucin

De esta manera un proceso puede realizar ms de una tarea a la vez.

24

Hilos
Un hilo, a veces llamado un proceso ligero (lightweight process, LWP) es una unidad bsica de utilizacin de CPU

Un hilo abarca una identificacin, un contador de programa, un conjunto de registros y una pila

25

Hilos
Comparte con otros hilos que pertenecen al mismo proceso su seccin de cdigo, seccin de datos, recursos del SO. Un proceso tradicional (heavyweight) tiene un slo hilo de control

Si un proceso tiene mltiples hilos de control puede hacer ms de una tarea al mismo tiempo
26

Procesos de uno y mltiples hilos

27

Por qu los Hilos


Las aplicaciones pueden y necesitan realizar varias cosas al mismo tiempo
Una navegador despliega imgenes, texto, recuperan informacin.

Tambin una aplicacin requiere a veces realizar varias tareas similares al mismo tiempo
Servidor web debe atender varios clientes tratando de acceder concurrentemente

Una solucin es tener un proceso simple que acepte peticiones y cuando recibe una peticin, crea un proceso separado para servir a esa peticin
28

Hilos
Si los nuevos procesos van a hacer la misma tarea, porqu agregar la sobrecarga de la creacin de procesos? Generalmente es ms eficiente para un proceso que contiene mltiples hilos servir al mismo propsito Los hilos tambin juegan un papel importante en los sistemas de llamadas a procedimientos remotos (RPC)

29

Beneficios
Los beneficios de la programacin multihilo puede ponerse en cuatro categoras: Rapidez de respuesta.
Hacer en multihilos una aplicacin interactiva puede permitir a un programa continuar corriendo incluso si parte de l est bloqueado o realizando una tarea lenta, lo que se traduce en respuestas ms rpidas para el usuario.

30

Beneficios
Comparticin de recursos.
Por omisin, los hilos comparten la memoria y los recursos del proceso al cual pertenecen

Economa
Asignar memoria y recursos en la creacin de procesos es costoso. Dado que los hilos comparten recursos de su proceso es ms econmico crear hilos y cambiar entre contextos de hilos

31

Beneficios
Utilizacin de arquitecturas de multiprocesadores.
Los beneficios del multihilado se incrementan en una arquitectura de multiprocesamiento, donde cada hilo puede correr en paralelo en cada procesador. Un proceso de un slo hilo slo puede correr en un procesador no importando cuantos estn disponibles

32

Planificacin de CPU

33

Calendarizacin de procesos

El objetivo de la multiprogramacin es tener procesos corriendo todo el tiempo para maximizar la utilizacin del CPU. El objetivo del tiempo compartido es intercambiar el CPU entre procesos de manera tan rpida que los usuarios puedan interactuar con cada programa mientras se est ejecutando.

34

Cola de calendarizacin
Conforme un proceso ingresa al sistema, es puesto en una cola de trabajos
Esta cola consiste de todos los procesos en el sistema Los procesos que son residentes en memoria principal y estn listos y esperando para ejecutarse se almacena en una lista llamada la cola de procesos listos Esta cola es almacenada en una lista ligada. El encabezado de una cola lista contiene apuntadores al primer y al ltimo PCB en la lista.

35

Cola de calendarizacin
La lista de procesos esperando por un dispositivo de E/S es llamada la cola de dispositivo Cada dispositivo tienen su propia cola de dispositivo

36

Calendarizacin de un proceso Un nuevo proceso es inicialmente puesto en la cola lista. Espera en esta lista hasta que es seleccionado para su ejecucin (dispatched). Una vez que el proceso es asignado al CPU y se est ejecutando uno de los siguientes eventos ocurre:
El proceso solicita una operacin E/S y es puesto en una cola E/S El proceso puede crear subprocesos y esperar por su terminacin El proceso es removido abruptamente de la CPU como resultado de un interrupcin y puesto en la cola de espera.

37

Representacin de la Calendarizacin de un proceso

38

Calendarizadores
Un proceso se mueve entre diferentes colas de calendarizacin en su ciclo de vida Los SO deben seleccionar los procesos de esas colas de alguna manera La seleccin del proceso es llevada a cabo por el calendarizador correspondiente

39

Calendarizadores de largo y corto plazo


Cuando existen ms procesos de los que se pueden ejecutar inmediatamente son almacenados (spool) generalmente en el disco El calendarizador de largo plazo o calendarizador de trabajos se encarga de seleccionar a los procesos de la cola y cargarlos a la memoria para su ejecucin El calendarizador de corto plazo o Calendarizador de CPU selecciona entre esos procesos que estn listos para su ejecucin y asigna el CPU a uno de ellos.

40

Calendarizador de Corto Plazo


La diferencia principal entre estos calendarizadores es la frecuencia de su ejecucin El CCP debe seleccionar un proceso nuevo para la CPU muy frecuentemente Un proceso se puede ejecutar durante unos pocos milisegundos antes de esperar por una peticin de E/S Frecuentemente el CCP se ejecuta al menos una vez cada 100 ms.
41

Calendarizador de Corto Plazo

Debido al breve tiempo entre ejecuciones, el CCP debe ser muy rpido Por ej. Si le toma 10 milisegs. Decidir que proceso ejecutar durante 100 milisegs. Entonces
10/(100+10)= 9% del CPU es desperdiciado para decidir que proceso se ejecutar.

42

Calendarizadores de largo plazo


El CLP se ejecuta con mucha menor frecuencia que CCP Pueden pasar minutos para la creacin de un nuevo proceso El CLP controla el grado de multiprogramacin (nmero de procesos en memoria)

Si el grado de multiprogramacin es estable entonces la tasa promedio de creacin de procesos es igual al promedio de procesos que dejan el sistema

43

C.L.P.
Entonces el CLP se necesita invocar solamente cuando un proceso deja el sistema El CLP puede permitirse tomar ms tiempo para seleccionar un proceso para su ejecucin. El CLP debe hacer una seleccin mucho ms cuidadosa

En general la mayora de los procesos pueden describirse como destinado a E/S o destinado a CPU

44

C.L.P.
Un proceso E/S pasa la mayor parte de su tiempo haciendo operaciones de E/S ms que de cmputo Un proceso CPU genera muy pocas peticiones de E/S, utilizando la mayor parte de su tiempo haciendo operaciones de cmputo El CLP debe seleccionar una buena mezcla de procesos de E/S y CPU
Si todos los procesos son E/S entonces la cola de procesos listos estar vaca casi todo el tiempo Si todos los procesos son CPU entonces las colas de dispositivos estarn vacas

45

El calendarizador de mediano plazo


Algunos SO pueden introducir un nivel intermedio de calendarizacin: CMP El CMP remueve procesos de la memoria y por lo tanto reduce el grado de multiprogramacin

Tiempo despus el proceso puede ser introducido de nuevo a la memoria y su ejecucin contina donde se qued. Intercambio (Swapping) El proceso es swapped out y despus swappped in por el CMP.

46

Calendarizacin de la CPU
La calendarizacin de la CPU es la base de los SO multiprogramados El objetivo de la multiprogramacin es tener algn proceso, para ejecutar todo el tiempo La idea es simple, en el momento que un proceso necesite de una operacin de E/S, el procesador en lugar de esperar a que termine dicha operacin, se asigna a otro proceso cargado en memoria
47

Ciclo de rfagas CPU-E/S


El xito de la calendarizacin de la CPU depende de la siguiente propiedad de los procesos
La ejecucin de los procesos consiste de un ciclo de ejecucin de CPU y espera de E/S

Los procesos alternan entre estos dos estados La ejecucin de los procesos comienza con un perodo de CPU, seguido de un perodo de E/S

48

Secuencia alternada entre CPU y E/S

49

Ciclo CPU-E/S
Cunto dura un periodo de CPU?

Un programa destinado a E/S tpicamente tiene muchos periodos cortos de CPU


Un programa destinado a CPU puede tener unos pocos periodos largos de CPU

50

Histograma de perodos de CPU

51

Calendarizador de CPU
Cuando el CPU est ocioso, el SO debe seleccionar a uno de los procesos que estn en la cola de procesos listos Tarea realizada por el calendarizador de corto plazo (Calendarizador de CPU) La cola de procesos listo no tiene que ser FIFO, adems puede ser:
Cola de prioridad Un rbol O una simple desordenada lista ligada

52

Calendarizacin
Las decisiones de calendarizacin se basan en 4 circunstancias
1. Cuando un proceso cambia del estado de ejecucin al estado de espera (ej, peticin de E/S) 2. Cuando un proceso cambia del estado de ejecucin al estado listo (ej, ocurre un interrupcin) 3. Cuando un proceso cambia del estado de espera al estado listo (termin operacin E/S) 4. Cuando un proceso termina
53

Calendarizacin no preemptive
En los casos 1 y 4 se dice que el esquema de calendarizacin es no preemptive (sin derecho preferente), en realidad no hay opcin en trmino de la calendarizacin En los casos 2 y 3 se dice que es una calendarizacin preemptive (preferente) En la calendarizacin no preemptive, una vez que el CPU se ha asignado a un proceso, el proceso mantiene el CPU hasta que lo libera
Porque termina O por cambiar al estado de espera
54

Calendarizacin preemptive
La calendarizacin preferente tiene que establecer un mecanismo que aseguren que la informacin no sea afectada en el cambio entre procesos.

55

Despachador (Dispatcher )
El despachador es el mdulo que da el control de la CPU al proceso seleccionado por el calendarizador de CPU

Su funcin implica
Cambio de contexto Cambio a modo usuario Regreso al lugar apropiado en el programa de usuario para continuar su ejecucin

El despachador debe ser muy rpido dado que se invoca durante cada cambio de proceso

El tiempo que le toma al despachador detener un proceso e iniciar el otro es llamado tiempo de latencia del despachador
56

Algoritmos de planificacin

57

Criterios de calendarizacin
Cada algoritmo de calendarizacin tiene sus propiedades y pueden beneficiar a una u otra clase de procesos Algunos criterios que son considerados para comparar y evaluar a los algoritmos de calendarizacin son:
Utilizacin de la CPU Eficiencia Tiempo total de proceso Tiempo de espera Tiempo de respuesta

58

Criterios para los algoritmos de Calendarizacin de CPU

Utilizacin de la CPU
Mantener al CPU trabajando tanto como sea posible.

Eficiencia.
Nmero de procesos completados por unidad de tiempo

Tiempo total (turnaround time)


Para un proceso dado, cunto se tarda en ejecutar completamente ese proceso

59

Criterios para los algoritmos de calendarizacin de CPU

Tiempo de espera
El algoritmo de calendarizacin de CPU no afecta el tiempo de espera en la cola de E/S pero s afecta el tiempo que un proceso pasa en la cola de procesos listos.

Tiempo de respuesta
Tiempo que tarda en comenzar a responder, es decir tiempo que pasa desde que ocurre una peticin hasta que se produce la primera respuesta

En general, se desea maximizar la utilizacin de CPU y la eficiencia; mientras que se desea minimizar el tiempo total, tiempo de espera y tiempo de respuesta
60

Primero en llegar-primero en servir (FCFS)


El ms sencillo de los algoritmos de calendarizacin de CPU El proceso que solicita primero el procesador obtiene primero el procesador La implementacin es muy sencilla utilizando colas FIFO Cuando el CPU se encuentra libre toma al proceso que est a la cabeza de la cola lista

61

FCFS
Proceso Perodo CPU

P1 P2 P3

24 3 3

Suponga que los procesos llegan en el orden: P1 , P2 , P3. La grfica de Gantt es:
P1 0 24 P2 27 P3 30

Tiempo de espera P1= 0; P2= 24; P3= 27 Tiempo promedio de espera: (0 + 24 + 27)/3 = 17

62

FCFS
Proceso P2 P3 P1 Perodo CPU 3 3 24

Suponga que los procesos llegan en el orden: P2 , P3 , P1. La grfica de Gantt es:
P2 0 3 P3 6 P1 30

Tiempo de espera P1= 6; P2= 0; P3= 3 Tiempo promedio de espera: (6 + 0 + 3)/3 = 3

63

FCFS
El promedio del tiempo de espera en FCFS es generalmente no mnimo

Vara substancialmente si los perodos de procesamiento de los procesos cambia Qu pasa si tenemos un procesos destinado a CPU y muchos procesos destinados a E/S?
El FCFS es un algoritmo no preemptive. Una vez que el procesos obtiene el CPU, lo mantiene hasta que termina o necesita E/S

64

Primero el trabajo ms corto (SJF) Este algoritmo establece asociaciones entre las rfagas de CPU y los tiempos de ejecucin de los procesos Cuando el CPU est disponible es asignado al proceso que tiene la siguiente rfaga ms pequea
Si dos procesos tienen la misma, ms corta, longitud de rfaga entonces se utiliza FCFS para escoger a uno En realidad se escogen los procesos por su longitud de rfaga de CPU, no por su tiempo total

65

Ejemplo 1 (No preemptive)


Process P1 P2 P3 P4
P4 0 3

Burst Time 6 8 7 3
P1 9 P3 16 P2 24

El tiempo de espera 3 miliseg para el p1, 16 ms para p2, 9 ms para p3 y 0 para p4


El tiempo promedio de espera es (3+16+9+0)/4= 7 ms

66

Ejemplo 2 (no preemptive)


Process P1 P2 P3 P4 Arrival Time Burst Time 0 7 2 4 4 1 5 4

P1 0 3 7

P3 8

P2 12

P4 16

SJF (no-preemptive) Average waiting time = (0 + 6 + 3 + 7)/4 = 4

67

Variantes de SJF
Maneja dos esquemas:
No preemptive. Una vez que el CPU es asignado al proceso no puede ser retirado hasta que se completa su rfaga de CPU. Preemptive. Si un nuevo proceso llega con una longitud de rfaga de CPU menor que el tiempo de CPU restante del actual proceso en ejecucin, entonces lo saca del CPU (preempt). Este esquema es conocido como Shortest-RemainingTime-First (SRTF).

SJF es ptimo, ya que da el tiempo promedio de espera mnimo para un conjunto dado de procesos
68

Ejemplo 3 (Preemptive)
Process P1 P2 P3 P4 Arrival Time 0.0 2.0 4.0 5.0 Burst Time 7 4 1 4

SJF (preemptive)
P1 0 P2 P3 P2 P4 P1 11 16

Average waiting time = (9 + 1 + 0 +2)/4 = 3

69

Calendarizacin por prioridad


El algoritmo SJF es un caso particular del algoritmo general de calendarizacin por prioridad En este algoritmo, se asocia a cada proceso una prioridad y se asigna la CPU al proceso con la prioridad ms alta Proceso que tienen la misma prioridad son escogidos con FCFS El esquema utilizado para representar la prioridad vara de un sistema a otro.
70

Ejemplo
Process P1 P2 P3 P4 P5
P2 0 1

Burst Time 10 1 2 1 5
P5 6 P1

Prioridad 3 1 4 5 2
P3 16 P4 18 19

El tiempo promedio de espera es 8.2 msegs

71

Calendarizacin por prioridad


Las prioridades pueden ser definidas interna o externamente. La definicin interna de prioridades se basa en tiempos lmites, requerimiento de memoria, tasa promedio de rfagas Las prioridades externas se establecen mediante criterios que son externos al S.O., tales como la importancia del proceso, tipos y fondos pagados para el uso de la computadora, etc.

72

Calendarizacin por prioridad


Este tipo de calendarizacin tambin puede ser preferente o no preferente. Cuando un proceso llega a la cola de procesos listos, se compara su prioridad con la prioridad del proceso que est actualmente ejecutndose Entonces, en un esquema preemptive, el algoritmo asignar la CPU al proceso que llega a la cola lista con una prioridad mayor que el proceso que se ejecuta. Un esquema no preemptive, simplemente pondr al nuevo proceso a la cabeza de la lista de procesos listos

73

Calendarizacin por prioridad


Un problema que ocurre con los algoritmos de calendarizacin por prioridad es el bloqueo indefinido Puede darse el caso de que los procesos con prioridades bajas esperen indefinidamente por la CPU Una solucin a este problema se llama aging (envejecimiento). Esta tcnica consiste en incrementar gradualmente la prioridad de un proceso que ha pasado mucho tiempo en el sistema
74

Calendarizacin por Round-Robin


Este algoritmo est diseado especialmente para sistemas de tiempo compartido Funciona de manera similar a FCFS, sin embargo sigue el esquema de derecho preferente.

Se agrega una unidad de tiempo, llamada time quantum. Generalmente un quantum es de 10 a 100 ms
La cola de procesos listos es tratada como una cola circular, el calendarizador recorre la cola asignando la CPU a cada proceso hasta por 1 intervalo de un time quantum

75

Calendarizacin por Round-Robin Para implementar RR se maneja la cola de procesos listos como una cola FIFO
Los procesos nuevos son agregados al final de la cola. Entonces el calendarizador de CPU toma al primer proceso estable un temporizador para interrumpir hasta un time quantum despus. Enseguida despacha al proceso Pueden ocurrir una de dos situaciones
El proceso puede tener un tiempo de rfaga de CPU menor que el time quantum El tiempo de rfaga de CPU del proceso es mayor que el tiempo del quantum

76

Calendarizacin por Round-Robin


En el primer caso, el proceso libera la CPU voluntariamente
Entonces el calendarizador proceder con el siguiente proceso en la cola de procesos listos

En el segundo caso, se agotar el tiempo del quantum y causar una interrupcin al S.O. Esto causar un cambio de contexto y el proceso es puesto al final de la cola de procesos listos Entonces el calendarizador toma el siguiente proceso a la cabeza de la cola de procesos listos

77

Ejemplo RR con quantum de 4 ms


Process P1 P2 P3 Burst Time 24 3 3
P1
0 4

P2 P3
7 10

P1

P1
14 18

P1

P1 22

P1
26 30

El tiempo promedio de espera es 17/3= 5.66 msegundos En RR ningn proceso tiene a la CPU por ms del time quantum

78

RR
Si existen n procesos en la cola lista y el tiempo de quantum es q entonces cada proceso tiene 1/n del tiempo de CPU en lapsos de a lo ms q unidades de tiempo a la vez. Ningn proceso espera ms de (n-1)q unidades de tiempo.
Rendimiento
q grandes FIFO q pequeas q debe ser grande respecto al tiempo de cambio de contexto, de otro modo la sobrecarga es alta Generalmente, tiene un tiempo total promedio ms alto que SJF pero un mejor tiempo de respuesta

79

RR y los cambios de contexto

80

RR y el tiempo de total

81

Calendarizacin de colas multinivel

Otro tipo de algoritmos de calendarizacin se utilizan con procesos que fcilmente son clasificados en grupos
Foreground y background

Un algoritmo de calendarizacin multinivel de colas particiona la cola de procesos listos en diferentes colas separadas Los procesos son permanentemente asignados a una cola basados en alguna propiedad de los procesos como: tamao de memoria, prioridad de procesos, tipo de proceso

82

Colas Multinivel
Cada cola tiene su propio algoritmo de calendarizacin

Entonces, debe existir una calendarizacin entre las colas, la cual es comnmente implementada mediante la calendarizacin preemptive de prioridad fija
No obstante, otra calendarizacin entre colas se lleva a cabo mediante la divisin del tiempo entre las colas, donde cada cola tiene su porcin de tiempo de CPU para sus procesos

83

C. M.

84

Calendarizacin multinivel con retroalimentacin

Normalmente en los algoritmos de calendarizacin multinivel de colas los procesos son asignados permanentemente a una cola Los procesos no se mueven entre las colas Este esquema tiene la ventaja de tener una menor sobrecarga de calendarizacin
Pero tiene la desventaja de ser inflexible

85

C. M. R. C.
Permite a los procesos moverse entre las colas La idea es separar a los procesos con diferentes caractersticas de rfagas de CPU Si el proceso usa demasiado tiempo de CPU es movido a una cola de baja prioridad Este esquema deja a los procesos destinados a E/S y a los procesos interactivos (foreground) en colas de alta prioridad No obstante, un proceso que espera demasiado en la cola de baja prioridad puede ser movido a la cola de prioridad alta (aging)
Previene el bloqueo indefinido
86

C. M. R. C. (ejemplo)
El calendarizador primero ejecuta todos los procesos de la cola 0 Solamente cuando la cola 0 est vaca ejecutar los procesos en la cola 1 De la misma manera ocurre con la cola 2, solo se ejecutarn sus procesos si las colas 0 y 1 estn vacas

87

C. M. R. C. (ejemplo)
Un proceso que llega a la cola 1 reclama la CPU a un proceso de la cola 2 Un proceso que llega a la cola 0 reclama la CPU a un proceso de la cola 1 Un proceso que entra en la cola lista, es puesto en la cola 0 con un quantum de 8 ms. Si no termina en su quantum, se mueve al final de la cola 1 Si la cola 0 est vaca, el proceso a la cabeza de la cola 1 tendr un quantum de 16 ms. Si no termina, se saca y es enviado al final de la cola 2 Los procesos de la cola 2 son calendarizados bajo un esquema FCFS, solamente cuando las colas 0 y 1 estn vacas
88

C. M. R. C.
En general, est definido por los siguientes parmetros
El nmero de colas El tipo de calendarizacin de cada cola El mtodo utilizado para determinar cundo cambiar un proceso a una cola de mayor prioridad o a una de menor prioridad El mtodo utilizado para determinar a qu cola entra un proceso cuando necesita servicio

89

Ejercicio

Los procesos llegan en el orden P1, P2, P3, P4, P5, todos en el tiempo 0.
Dibuja 4 diagramas de Gantt ilustrando la ejecucin de los procesos utilizando FCFS y SJF Cul es el tiempo total y el tiempo de espera de cada proceso para cada algortimo utilzado en el inciso anterior

90

Solucin
A)

B)

C)

91

Sincronizacin de procesos

92

Sincronizacin de procesos
Un proceso cooperativo es aquel que afecta o es afectado por otros procesos ejecutndose en el sistema Los procesos cooperativos suelen compartir espacios de memoria lgicos o suelen compartir informacin por medio de archivos De cualquier forma el acceso concurrente a los datos compartidos puede resultar en la inconsistencia de los datos Entonces, ahora estudiaremos los mecanismos utilizados para garantizar la ejecucin ordenada de los procesos cooperativos que comparten espacios de direcciones
93

Ejemplo
Supongamos que tenemos el caso de un proceso que produce informacin y otro que la consume. Ambos procesos usan un buffer de tamao N para almacenar la informacin producida o consumida Datos Compartidos
#define BUFFER_SIZE 10 typedef struct { ... } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; int counter = 0;

94

Problema del C-P


Proceso Productor
item nextProduced; while (1) { while (counter == BUFFER_SIZE) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; counter++; }

Proceso Consumidor
item nextConsumed; while (1) { while (counter == 0) ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; }

95

Operacin atmica
Las sentencias counter++; counter--; deben ejecutarse atmicamente Operacin Atmica significa que una operacin debe ser completada sin alguna interrupcin La sentencia count++ puede implementarse en lenguaje mquina como sigue:

register1 = counter register1 = register1 + 1 counter = register1


96

Problema de la concurrencia
La sentencia count -- puede implementarse como: register2 = counter register2 = register2 1 counter = register2 Si tanto el productor como el consumidor intentan actualizar el buffer concurrentemente, las sentencias del lenguaje mquina se pueden entrelazar

El entrelazado depende de cmo los procesos productor y consumidor son calendarizados


97

Inconsistencia de datos
Suponga que el contador es inicialmente 5. El entrelazado de las sentencias es: p: register1 = counter (register1 = 5) p: register1 = register1 + 1 (register1 = 6) c: register2 = counter (register2 = 5) c: register2 = register2 1 (register2 = 4) p: counter = register1 (counter = 6) c: counter = register2 (counter = 4)
El valor del contador puede resultar en 4 6 cuando el resultado correcto es 5. Condicin de carrera. Cuando varios procesos acceden y manipulan datos compartidos de manera concurrente y el valor final del dato compartido depende del proceso que llega al final Para prevenir las condiciones de carrera, los procesos deben sincronizarse

98

El problema de la seccin crtica


Considere n procesos {p0,p1,pn-1} todos compitiendo por el uso de algn dato compartido Cada proceso tiene un segmento de cdigo, llamado seccin crtica, en el cual la informacin compartida es accedida Problema asegurar que cuando un proceso entre en su seccin crtica, ningn otro proceso puede ejecutar su seccin crtica. Entonces, la ejecucin de una seccin crtica de un proceso es mutuamente exclusiva en tiempo
99

Seccin crtica
Cada proceso debe obtener un permiso para ejecutar su seccin crtica (entry) do {
entry section critical section exit section remainder section } while (1);

100

Solucin al problema de S.C.


Cualquier solucin al problema de la S.C. debe satisfacer:
Exclusin mutua. Si un proceso pi est ejecutando su S.C. entonces ningn otro proceso puede ejecutar su seccin crtica Progreso. Si ningn proceso est ejecutando sus S.C. y algunos procesos desean entrar a su S.C. entonces aquellos procesos que no estn ejecutando sus secciones restantes pueden participar en la seleccin del proceso que entrar en seccin crtica y esta seleccin no se puede posponer de manera indefinida Espera limitada. Existe un lmite en el nmero de veces que otros procesos pueden entrar en su seccin crtica, despus de que un proceso ha requerido su entrada a su seccin crtica y antes de que su peticin se cumplida

101

Soluciones aplicables a dos procesos P0 y P1 Los procesos comparten una variable turn inicializada en 0 (o 1). If turn==i entonces el proceso pi puede ejecutar su seccin crtica Algoritmo 1
Proceso Pi do { while (turn != i) ; //solo entra s.c. si turn==i critical section turn = j; reminder section } while (1);
102

Soluciones a dos procesos

Algoritmo 1 (S.C. de 2 procesos) Esta solucin asegura que slo un proceso entre a su seccin crtica, pero no satisface la condicin de progreso
Ya que estrictamente los procesos deben ejecutar su seccin crtica de manera alternada Entonces, si turn==0 and P1 est listo para entrar a S.C. no lo puede hacer incluso cuando P0 pueda estar en su seccin restante

103

Algoritmo 2
Se sustituye la variable turn con el arreglo boolean flag[2] Los elementos del arreglo se inicializan en falso Si flag[i] es verdadero, indica que el proceso pi est listo para entrar en su seccin crtica Process Pi do { flag[i] := true; while (flag[j]) ; critical section flag [i] = false; remainder section } while (1); Igual se cumple la exclusin mutua pero no la condicin de progreso

104

Algoritmo 2
Qu pasa si se ejecuta lo siguiente
T0: P0 pone flag[0] = true; T1: P1 pone flag[1] = true;

Entonces P0 y P1 se ciclan de manera infinita

105

Algoritmo 3
Los procesos comparten ahora dos variables boolean flag[2] e int turn

Inicialmente flag[0]=flag[1]=false y turn ya sea 0 o 1


Process Pi do { flag [i]:= true; turn = j; while (flag [j] and turn == j) ; critical section flag [i] = false; remainder section } while (1);
106

Algoritmo 3
Exclusin mutua
Pi entra en su seccin crtica nicamente si flag[j]==false o turn==i

Analizar para la casa


Segunda y tercera propiedad

107

Algoritmo Bakery
Solucin para cuando n procesos desean entrar en seccin crtica Un proceso que desea entrar en su seccin crtica toma un nmero. El proceso con el nmero ms pequeo es el que entra en seccin crtica En caso de que dos procesos tengan el mismo nmero entonces el proceso con el nombre menos entra en seccin crtica, entonces los nombres de los procesos deben ser nicos
108

Semforos
Una herramienta que da solucin al problema de la seccin crtica y que se puede generalizar a problemas ms complejos son los semforos Un semforo S es una variable entera que, aparte de su inicializacin, es accedida slo a travs de dos operaciones atmicas wait y signal
wait (S) {
while (S 0) ; S--;}

signal (S) {
S++;}
109

Semforos
Las modificaciones al valor del semforo en las operaciones wait y signal deben hacerse indivisiblemente Esto quiere decir que cuando un proceso modifica el valor del semforo, ningn otro proceso puede simultneamente modificar ese valor del semforo Entonces, en el caso de wait(S), la comprobacin de S<=0 y su posible modificacin (s--) se deben ejecutar sin interrupcin

110

Utilizacin de los semforos


Se pueden utilizar semforos para tratar el problema de n procesos queriendo entrar en su seccin crtica Los n procesos comparten un semforo, mutex (mutual exclusion), inicializado a 1 Cada proceso pi es organizado
do { wait(mutex); critical section signal(mutex); remainder section } while (1);

111

Utilizacin de los semforos (2)


Se pueden utilizar los semforos para solucionar problemas de sincronizacin Suponga que tiene dos procesos concurrentes p1 con una sentencia s1 y p2 con una sentencia s2. Adems, se requiere que s2 sea ejecutada despus de que s1 ha sido completada Se puede implementar usando el semforo synch=0;
S1; Signal(synch);
//Instrucciones en P1

y
Wait(synch); S2; //Instrucciones en P2

112

Implementacin de los semforos


La principal desventaja de las soluciones de exclusin mutua y de la definicin de semforo es que requieren de una espera ocupada Mientras un proceso est en su seccin crtica cualquier otro proceso que trata de entrar a su seccin crtica debe entrar a un ciclo de espera. En un sistema de multiprogramacin este esquema es muy problemtico, ya que es un slo procesador que es compartido entre todos los procesos Las esperas ocupadas desperdician ciclos de CPU que algn otro proceso podra utilizar productivamente

113

Semforos
Spinlock
A este tipo de semforo se le conoce como spinlock
Son tiles en sistemas multiprocesamiento La ventaja del spinlock es que no necesita del cambio de contexto por lo que reduce considerablemente el tiempo de cambio ente proceso y proceso

Para sobrellevar la necesidad de la espera ocupada, se redefinen las operaciones wait y signal del semforo
Cuando un proceso ejecuta la operacin wait y encuentra que el valor del semforo es no positivo, entonces debe esperar. Sin embargo, su espera no es una espera ocupada, sino ms bien un bloqueo

114

Semforos
La operacin de bloqueo pone al proceso en una cola de espera asociada al semforo El estado del proceso es cambiado al estado de espera
Entonces el control de transferido al calendarizador de CPU, quien selecciona al siguiente proceso para ejecutar

Un proceso que es bloqueado, esperando en un semforo S, debe ser reiniciado cuando otro proceso ejecuta una operacin signal
115

Semforos
Esta reinicializacin se lleva a cabo mediante la operacin wakeup, la cual cambia el estado del proceso de espera al estado listo.
Entonces el proceso es puesto en la cola de procesos listos

Para implementar esta definicin de semforo se utiliza: typedef struct { int value; struct process *L; } semaphore;
116

Semforos
Cuando un proceso debe esperar en un semforo, se agrega a la lista de procesos Una operacin signal remueve un proceso de la lista de procesos en espera y lo pone es la cola de procesos listos void wait(semaphore S): S.value--; if (S.value < 0) { add this process to S.L; block(); } void signal(semaphore S): S.value++; if (S.value <= 0) { remove a process P from S.L; wakeup(P); }
117

Implementacin de los semforos


Si el valor del semforo es negativo, su magnitud es el nmero de procesos esperando en la cola de ese semforo El aspecto crtico de los semforos es que se ejecutan atmicamente
Se debe garantizar que dos procesos no pueden ejecutar las operaciones wait y signal en el mismo semforo al mismo tiempo De nuevo el problema de la seccin crtica
Un solo procesador Ms de un procesador

118

Implementacin de los semforos


En un sistema de un solo procesador
Se inhiben las interrupciones durante el tiempo que las operaciones wait y signal son ejecutadas

En un sistema de multiprocesadores
No funciona la inhibicin de las interrupciones Entonces se utilizan soluciones provistas por el hardware o software

119

IPC
Sistema de pase de mensajes
La funcin del sistema de mensajes es permitir a los procesos comunicarse y sincronizarse sin la utilizacin de la memoria compartida En SO de microkernel, los servicios de pase de mensajes estn a nivel de procesos de usuario
send (mensaje) receive (mensaje)

Los mensajes pueden ser de longitud fija o variable


Longitud fija - Sistema sencillo programacin difcil Longitud variable - Sistema complejo programacin sencilla

120

Sistema de pase de mensaje


Si dos procesos quieren comunicarse, deben enviarse mensajes por medio de un enlace de comunicacin (lgico) Existen diferentes mtodos para implementar el enlace de comunicacin as como las operaciones de enviar y recibir
Comunicacin directa o indirecta Comunicacin simtrica o asimtrica Buffering automtico o implcito Envo por copia o por referencia Mensajes de tamao fijo o variable

121

Nombramiento (Naming)
Los procesos que quieren comunicarse deben tener una forma de referirse uno al otro
Comunicacin directa o indirecta

Comunicacin directa
Cada proceso que desea comunicarse debe nombrar explcitamente el receptor o transmisor de la comunicacin
Send(P, msg) enva mensaje al proceso P Receive(Q, msg) recibe mensaje del proceso Q

122

Comunicacin directa
Un enlace, en este esquema de comunicacin, tiene las siguiente propiedades
Un enlace se establece automticamente entre cada par de procesos que quieren comunicarse. Un enlace est asociado exactamente con dos procesos Exactamente un enlace existe entre cada par de procesos

Utiliza direccionamiento simtrico


Tanto el que enva como el que recibe debe nombrar al otro proceso

Existe una variante, utilizando direccionamiento asimtrico


Send(P, msg) enva mensaje al proceso P Receive(id, msg) recibe mensaje de cualquier proceso

qu pasa si un proceso cambia de nombre?


Buscar en todas las definiciones de procesos.

123

Comunicacin indirecta
Los mensajes son enviados o recibidos de casillero (buzn) o puertos Un casillero puede verse como un objeto en donde los procesos ponen mensajes y de donde se remueven los mensajes Cada casillero tiene un identificador nico Un proceso puede comunicarse con diferentes procesos utilizando varias casillas Dos procesos pueden comunicarse si comparten un casillero

124

Comunicacin indirecta
En la comunicacin indirecta se definen las operaciones enviar y recibir
Send(A, msg) Enva un mensaje al casillero A Receive(A, msg) Recibe un mensaje del casillero A

El enlace lgico tiene las siguientes propiedades


Un enlace se establece si ambos procesos comparten un casillero Un enlace puede estar asociado con ms de dos procesos Un nmero de diferentes enlaces puede existir entre cada par de procesos comunicados, donde cada enlace corresponde a un casillero

125

Comunicacin indirecta
Suponga que los procesos p1, p2 y p3, comparten el casillero A. p1 enva un mensaje a A, mientras que p2 y p3 ejecutan el mtodo recibir de A. Cul proceso obtendr el mensaje enviado por p1?
Permitir al enlace estar asociado a lo ms con dos procesos Permitir a lo ms un proceso a la vez ejecutar la operacin recibir Permitir al sistema seleccionar arbitrariamente cual proceso recibir el mensaje

126

Comunicacin indirecta
El SO o el proceso puede ser propietario de un casillero Si el casillero es manejado por el proceso
El casillero es parte del espacio de direcciones del proceso Se hace distincin entre el propietario (quien solo puede recibir mensajes por medio de este casillero) y el usuario, quien solo puede enviar mensajes al casillero

Dado que cada casillero puede tener solo un propietario no hay confusin acerca de quin debe recibir el mensaje
Cuando un proceso que es propietario de un casillero termina, el casillero desaparece

127

Comunicacin indirecta
Cuando el S.O. es propietario del casillero, este es independiente y no es ligado con ningn proceso en particular
El S.O. debe proporcionar un mecanismo que permita a los procesos.
Crear nuevos casilleros Enviar y recibir mensajes por medio del casillero Borrar un casillero

El procesos que crea un casillero, es entonces el propietario La propiedad y la funcin de recepcin pueden ser pasadas a otros procesos por medio de las llamadas al sistema apropiadas

128

Sincronizacin en la comunicacin
La comunicacin entre procesos se da por medio de ejecucin de las primitivas send y receive Existen diferentes formas de implementar cada primitiva de pase de mensajes
Bloqueo No bloqueo (sncrona) (no sncrona)

Envo bloqueante: el proceso que enva se bloquea hasta que el mensaje es recibido por el proceso receptor o por el casillero

129

Sincronizacin en la comunicacin
Envo no bloqueante: El proceso transmisor enva el mensaje y continua su operacin Recepcin bloqueante: el receptor se bloquea hasta que el mensaje est disponible Recepcin no bloqueante: el receptor recupera ya sea un mensaje vlido o nulo

130

Buffering
Independientemente si la comunicacin es directa o indirecta, los mensajes intercambiados por la comunicacin entre procesos, residen en un cola temporal.

Dicha cola puede implementarse de tres formas


Capacidad cero: la longitud mxima de la cola es cero, entonces, el enlace no puede tener ningn mensaje esperando en l. En este caso, el transmisor se bloquea hasta que el receptor tiene el mensaje

131

Buffering
Capacidad limitada
La cola tiene una longitud finita N, entonces, a lo mas N mensajes pueden residir en ella. Si la cola no esta llena cuando un nuevo mensaje es enviado, ste es puesto en la cola y el transmisor puede continuar su ejecucin sin esperar Como el enlace es de capacidad finita, si el enlace est lleno, el transmisor debe bloquearse hasta que se libere espacio de la cola

Capacidad ilimitada
La cola potencialmente tiene una cola infinita, entonces cualquier nmero de mensajes pueden esperar en ella. El transmisor nunca se bloquea

132

Comunicacin entre procesos en C-S

Cliente. Proceso que solicita un servicio Servidor. Proceso que proporciona el servicio Servicio. Es una entidad abstracta que puede ser proporcionado por varios procesos servidores ejecutndose en computadoras separadas y cooperando va red. Comunicacin principalmente se da
Sockets RPC (Remote procedure calls)

133

Sockets
Socket es un punto final de un enlace de comunicacin bidireccional entre dos programas corriendo en la red Arquitectura Cliente-Servidor
Cliente. Su funcin es conectarse a un servidor para realizar una tarea. Servidor. Entidad capaz de escuchar a los clientes e iniciar un proceso de comunicacin con ellos.

134

Sockets

Solicitud de conexin de un cliente

Conexin establecida Cliente/Servidor

135

Remote Procedure Calls


Una de las formas ms comunes de servicios remotos es el paradigma RPC Dado que se trata de un ambiente en el cual los procesos se ejecutan en sistemas separados, se debe utilizar un esquema basado en mensajes para proporcionar servicios remotos A diferencia de IPC los mensajes intercambiados en el esquema RPC estn bien estructurados y no slo son paquetes de informacin

136

RPC
Los mensajes son dirigidos a un demonio de RPC escuchando en un puerto en el sistema remoto y contienen un identificador de la funcin a ejecutar con los parmetros a pasarle a la funcin Entonces la funcin se ejecuta y cualquier salida es enviada de vuelta al solicitante en un mensaje separado La semntica de RPC permite a un cliente invocar un procedimiento en un sistema remoto como si lo hiciera de manera local

137

Monitores
Aun cuando los semforos proporcionan un mecanismo conveniente y eficaz para la sincronizacin de procesos, su uso incorrecto puede dar por resultado errores de temporizacin (timing) que son difciles de detectar, ya que estos errores slo suceden si tienen lugar secuencias de ejecucin particulares, y estas secuencias no ocurren siempre.

Los investigadores han desarrollado construcciones en lenguaje de alto nivel.


138

Monitores
Recuerde que un tipo, o un tipo de datos abstracto, encapsula datos privados con mtodos pblicos para operar sobre dichos datos. Un monitor presenta un conjunto de operaciones definidas por el programador que tienen provista la exclusin mutua dentro del monitor. El tipo monitor tambin contiene la declaracin de variables cuyos valores definen el estado de una instancia de dicho tipo, junto con los cuerpos de procedimientos o funciones que operan sobre esas variables
139

Regiones crticas
Estructura de sincronizacin de alto nivel Una variable compartida v de tipo T declarada como:
v: shared T

La variable v es accedida nicamente dentro de la sentencia region v when B do S donde B es una expresin boleana Mientras la sentencia S es ejecutada, ningn otro proceso puede acceder a la variable v.
140

Regiones crticas
Las regiones refieren a la misma variable compartida pero excluyndose una a otra al mismo tiempo

Cuando un proceso trata de ejecutar la sentencia de regin, la expresin boleana B se evala. Si B es verdadera, la sentencia S se ejecuta. Si B es falsa el proceso espera hasta que B se hace cierta y ningn otro proceso est en una regin crtica asociada a v

141

Ejemplo buffer limitado


Las regiones crticas se pueden utilizar de manera efectiva para resolver problemas generales de sincronizacin

Problema del bffer limitado struct buffer { int pool[n]; int count, in, out; }
El productor region buffer when( count < n) { pool[in] = nextp; in:= (in+1) % n; count++; }

142

Ejemplo buffer limitado


Consumidor remueve un item del buffer compartido y lo coloca en nextc region buffer when (count > 0) { nextc = pool[out]; out = (out+1) % n; count--; }

143