domingo, 10 de octubre de 2010

2.4 Planificación de Procesos

La planificación de Round Robin nos menciona que a cada uno de los procesos se le asigna un cuanto de tiempo, durante el cual se le permite ejecutar. Si el proceso aun sigue ejecutándose cuando ya se haya terminado su tiempo, entonces lo que pasa es que el SO toma la CPU de ese proceso y se la asigna a otro. Si el proceso se termina o se bloquea antes de su tiempo entonces la conmutación de la CPU se efectúa cuando el proceso este bloqueado.

La planificación por prioridad segun la planificación de round robin dice que todos los procesos son muy importantes si importar sus priordades. El punto es que a cada proceso se le asigna una prioridad y lo que se permite es que primero se tiene que ejecutar el proceso con la prioridad mas alta y asi sucesivamente hasta llegar al proceso con la prioridad mas baja, pero todos se tienen que ejecutar sin importar la prioridad que tenga cada uno.

El primer trabajo más corto es que el planificador debe tomar en cuenta el criterio de el primer trabajo mas corto lo que se realiza este planificador es que tiene cuatro procesos con diferente tiempo de ejecución entonces debe buscar el proceso con mas tiempo para luego ser ejecutado y hacer en el camino mas corto sin tener que pasar por otros procesos.

La Planificación garantizada es que cada el sistema le hace promesas a los usuarios que ejecutan algún procesos dentro del sistema, y luego obtienen un tiempo determinado de su CPU, entonces lo que la CPU realiza es que al proceso solo le da la mitad del tiempo y no el tiempo completo que debería utilizar en la CPU.

En la planificación por lotería la idea en esta aplicación es dar a cada proceso boletos de lotería para que así el proceso con el boleto ganador pueda tener un tiempo de la CPU para poder ejecutarse en ella. Si cada proceso tiene un boleto, entonces solo el proceso que tenga ese boleto tendría uso de la CPU y ningún otro proceso debe ejecutarse.

Ahora si se encuentra una cantidad de boletos pendientes que aun no tienen un procesos ganador y un proceso X tiene 20 de esos boletos tendrá una probabilidad del 20% de ganar, y obtendrá el 20% del tiempo de la CPU.

La planificación en tiempo real nos dice que los procesos deben ser ejecutados en tiempo y forma, si un proceso se altera por ejemplo que se quiera adelantar para que se ejecuta mas rápido lo que va a suceder es que ese proceso se va a dañar y no se ejecutara correctamente, ahora si se quisiera hacer lo contrario el proceso perdería su tiempo y tardaría en ejecutarse.

La planificación por 2 niveles nos dice que cuentan con un planificador de dos niveles, el primero se encuentran los procesos en la memoria y en el segundo se encuentran los procesos en el disco, en la memoria se cargan un subconjunto de procesos, luego lo que realiza el planificador de nivel inferior limita los procesos ejecutados en la memoria durante cierto tiempo, el disco hace lo mismo que la memoria carga un subconjunto de procesos, entonces el planificador de nivel superior limita esos procesos durante cierto tiempo, luego se transfieren los procesos entre el disco y la memoria y el resultado es que tenemos una combinación entre los recursos de la memoria y el disco.

2.3 Problemas clásicos de IPC

Problema de la cena de filósofos

Tenemos a 5 filósofos sentados alrededor de una mesa, en la mesa hay 5 platos, pero tienen un problema que solo hay 5 tenedores, y para poder comer el espagueti se necesitan 2 tenedores. Entonces uno de los 5 filosofos tiene que esperar a que otro termine de comer, pero en ese tiempo el puede morir de hambre.

Problema de lectores y escritores es que uno puede estar leyendo pero otro no puede estar escribiendo, y si uno escribe los demás no pueden estar leyendo.

Problema del peluquero dormido, llega el peluquero a su peluquería y se duerme, después llega un cliente y el peluquero se despierta y empieza a cortarle el cabello, después llega otro cliente y se da cuenta de que el peluquero esta realizando un corte de cabello, entonces hay una silla vacia y el cliente espera a que termine con el primero, luego llega un tercer cliente, entra a la peluquería y ve que el peluquero esta trabajando y como esta lleno el lugar y no hay un lugar vacio lo que hace el cliente que llego es que se marcha.

2.2 Comunicación entre Procesos

Los procesos necesitan estar comunicado con otros procesos.

Condiciones de competencia

Los procesos que se encuentran en el SO pueden compartir ciertas características comunes como en que ambos pueden leer y escribir. Por ejemplo cuando un proceso desea imprimir un archivo, introduce el nombre de ese archivo que se va a imprimir en un directorio especial, mientras otro proceso llamado demonio de impresión empieza a revisar en cierto directorio para ver si hay archivos por imprimir y si los encuentra los imprime y luego borra los nombres del directorio para poder introducir nuevos nombres.

En las secciones críticas la idea aquí es que un proceso esta realizando una tarea especifica y entonces es mismo proceso esta accediendo a memoria, entonces el nuevo proceso comenzó a utilizar variables antes de que el proceso anterior terminara de usarlas. La parte en la que se accede a la memoria compartida de denomina región critica o sección critica.

Exclusión mutua con espera activa

Si un procesos se encuentra ocupado actualizando su memoria compartida en la parte de su región critica, entonces no debemos dejar que entre otro proceso en su región critica y cause problemas, lo que debemos hacer es esperar a que el primer proceso termine de actualizar su región para luego ejecutar un nuevo proceso y asi no cause problema.

Dormir y despertar

Semáforos es un nuevo tipo de variable, donde un semáforo puede tener el valor de 0 si no hay señales de despertar y un valor positivo si hay una o mas señales de despertar en espera. Los procesos tienen que esperar a que otro proceso se ejecute. Si un proceso se esta ejecutando y otro proceso se quiere ejecutar tiene que entrar en modo de reposo hasta que el proceso que se ejecuto primero termine su ejecución. Una vez terminado el primero el segundo proceso se despierta para ser ejecutado.

La transferencia de mensaje no es otra cosa mas que recibir y enviar mensajes entre procesos. Primero se tiene que enviar un mensaje a un destino x, ese mensaje se recibe de un origen x. Si no hay un mensaje disponible, el receptor puede ponerse en estado bloqueado hasta le llegue un mensaje y cambiar su estado a activo. Si no le llega el mensaje el receptor puede mandar un código de error a su emisor de que no le ha llegado el mensaje.

UNIDAD 2 PROCESOS

Las computadoras de hoy en día pueden realizar varios procesos a la vez dentro de su procesador, internamente en las computadoras los programas se ejecutan a una gran velocidad entre un programa y otro al mismo tiempo, esta velocidad se da en milisegundos.

Los procesos son muy importantes para las computadoras sin estos procesos los programas y todos los recursos que se encuentran almacenados en ella se estarían ejecutándose al mismo tiempo y causaría un desorden, entonces la computadora no sabría que recurso ejecutar primero y en cambio con los procesos llevan un orden a la hora de ejecutarse.

El modelo de procesos

El modelo de procesos está organizado en una seria de procesos secuenciales o simplemente en un proceso, como ya sabemos un proceso es un programa que se está ejecutando, cada uno de los procesos tiene su propia CPU virtual.

El punto aquí es que un proceso es una actividad, todos los procesos tienen un programa, una entrada, un estado y una salida.

En la mayoría de los SO se necesita tener una aplicación para poder crear y eliminar a los procesos mientras sea necesario. En MINIX los procesos se ejecutan con la llamada al sistema mediante la sentencia FORK (bifucar). Lo que realiza esta sentencia es crear una copia del proceso que fue invocado.

Implementación de procesos

El SO mantiene una tabla, llamada tabla de procesos. En esta tabla muestra una entrada por cada proceso que se ejecuta. Esta entrada muestra la información necesaria de cada proceso que se está ejecutando, por ejemplo el estado de memoria que se esta utilizando, contador de programa, la situación de archivos abiertos, etc.

Hilos

Los hilos normalmente se manejan en el espacio de usuario. La actividad que realizan los hilos es que se está ejecutando un hilo y está a punto de bloquearse empieza a buscar un sucesor que va a ser ejecutado ya sea el mismo proceso o de uno distinto.