Algoritmos Round Robín En este algoritmo de planificación cada proceso tiene un quantum (es un rango de tiempo), una regla general sobre este quantum es que tiene que ser mayores a las ráfagas de CPU pues si la ráfaga es menor al quantum el proceso termina antes del quantum y se planifica nuevamente, y si la ráfaga es mayor, se saca de la CPU y se pasa a otro proceso. El rendimiento depende del quantum pues solo existe una cola de trabajo. Ejemplo: quantum de 4 Proceso Ráfaga CPU
P1 7
P1 0
P2 3
P2 4
P3 7
P3 4
P4 11
P4 5
P1 15
P4 18
19
Algoritmo SJF(Shortest job first) El SJF asocial los procesos con la longitud de la siguiente ráfaga de CPU, cuando esta está libre asigna el proceso que tiene la ráfaga más pequeña, si se llega el caso que dos procesos tienen la misma ráfaga este aplica FIFO. Existen dos clases de SJF el apropiado o expulsivo (un proceso nuevo llega al CPU con longitud menor al tiempo restante del proceso en ejecución, entonces lo saca) y el no apropiado o no expulsivo (cuando al CPU tiene un proceso, no puede sacarlo hasta que complete ráfaga de CPU)
Algoritmo FIFO o FCFS (First Come , First Served) Es el más sencillo de implementar de todos los algoritmos por que a medida que va llegando un proceso se va ejecutando formando una cola de procesos cuando llegan varios. No importa si hay un proceso más largo que otro en poca palabras no hay un prioridad de tamaño o importancia el primero que llega se ejecuta en su totalidad para continuar con otro. Proceso CPU
P1 5
P1
P2 12
P3 3
P2 5
P3 17
20
Algoritmo con Prioridad Cada proceso tiene una prioridad y la CPU mira la prioridad más alta. Si hay dos procesos con la misma prioridad se aplica FIFO el primero que llega es el primero que sale.
Cola multinivel La cola original de procesos se divide en colas según el listado o clases de procesos. De las colas que nacen es regla que tengan algún tipo de algoritmo de pacificación Round Robín o FIFO y se debe tener un algoritmo distinto para que se elija una cola de proceso. Ejemplo:
Prioridad alta Tareas del sistema
Tareas interactivas
Tareas de edición
Tareas batch
Prioridad baja
FORK Es un función que permite que un proceso tenga procesos hijos que se encarguen de algo en especial y así el proceso principal pueda hacer otras tareas con mayor prioridad. El proceso secundario o hijo es parecido al padre. El proceso hijo devuelve un cero y PID del padre. Ejemplo /* fork.c - Ejecución conjunta de procesos padre e hijo */ #include #include main () { printf ("Ejemplo de fork.\n"); printf ("Inicio del proceso padre. PID=%d\n", getpid ()); if (fork() == 0) { /* Proceso hijo */
printf ("Inicio proceso hijo. PID=%d, PPID=%d\n", getpid (), getppid ()); sleep (1); } else { /* Proceso padre */ printf ("Continuación del padre. PID=%d\n", getpid ()); sleep (1); } printf ("Fin del proceso %d\n", getpid ()); exit (0); }
Ejemplo de fork. Inicio del proceso padre. PID=5331 Continuación del padre. PID=5331 Inicio proceso hijo. PID=5332, PPID=5331 Fin del proceso 5332 Fin del proceso 5331
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.