Laboratorio 1 Trabajo Con Llamadas Al Sistema

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 15

Llamadas al

Sistema
Sistemas Operativos

Mayo 05 de 2022
Samuel Steven Bernal
Martínez

INFORME
Lenguaje
Seleccionado:

Editor de
Texto:
¿Qué son los Algoritmos de
planificación y para que sirven?

Los algoritmos de planiificación resultan


útiles a la hora de administrar y evaluar los
recursos y el tiempo que consume
determinado proceso,
conjunto o incluso
otro algoritmo en realizar una determinada
tarea, puede darse el caso que la CPU se
encuentre ante la situación de decidir que
proceso va antes que otro, aquí es donde
entran en juego los algoritmos de
planificación, decidiendo que procesos
deben ejecutarse y cual es la razón de que
estos se ejecuten organizando todo,
algunos resultan muy ineficientes y otros
extremadamente eficientes, esto varia
según como esté diseñado y las tareas a
desempeñar.
Programa #1

Para este primer programa


seleccionamos el algoritmo de
planificación Tiempo restante
más corto primero (SJF) por sus
siglas en ingles.

Antes de ir al programa, para


entenderlo mejor primero
veamos la siguiente tabla para
analizar como funciona en un
caso practico real.

Hora de
No° Proceso Rafaga
llegada

Proceso N°1 3 7

Proceso N°2 6 3

Proceso N°3 2 9

Proceso N°4 0 4
El algoritmo Más corto
Primero(SFJ), necesita conocer
de antemano cada uno de los
tiempos de ejecución de los
procesos a evaluar, y como su
nombre lo infiere, cuando este
algoritmo se encuentra con
varias tareas o procesos por
hacer al mismo tiempo,
escogerá el más corto Primero.

Volviendo al ejemplo:

En el primer tiempo es decir


tiempo 0 llega el proceso 4 .

Proceso N°4

En el tiempo 2, llega el proceso


3 pero este tiene mayor rafaga
por lo que tendra que esperar.
Proceso N°3
En el tiempo 3, llega el proceso
1 pero este tiene mayor rafaga
por lo que tendra que esperar.
Proceso N°1

En el tiempo 6, llega el proceso


2 y al comparar con los
procesos 4, 3 y 1, el que menos
rafaga tiene es el 2 por lo tanto
este tiene prioridad y pasa
delante a ejecutarse primero,
los demás tienen que esperar.

Proceso N°2

De esta forma mediante


comparaciónes el programa
termina por ejecutar todos los
procesos de manera eficiente.

Proceso N°1 Proceso N°2

Proceso N°3 Proceso N°4


Código
Iniciamos el programa con una función principal, dicha función
tiene el propósito de encontrar el tiempo de espera de los
procesos, esta función tiene la característica de aplicarse en
todos y cada uno de los procesos, la función tiene por nombre
tiempo: espera y como argumentos las variables
procedimientos, z que son los datos ingresados, y "te" que
refiere a tiempo de espera de los procesos, adicionalmente
insertamos el tiempo de ráfaga en la palabra "rt," definimos los
valores de "completo" "t" y "corto" en 0, utilizamos valores
boleanos para la variable verifica y la fijamos inicialmente en
"false".
Posteriormente iniciamos dos ciclos el primero de ellos "While"
y luego "For" en forma de bucle para iterar sobre la seciancia
dada y hallar los procesos por terminar.
Luego de hacer los correspondientes incrementos en cada
iteracion del bucle, seguimos con las siguientes funciones
secundarias, en este caso de tiempo de respuesta con los
argumentos de "procedimientos", "z", "te" y "tr" que significa
tiempo de respuesta.
la siguiente función se encarga de encontrar el tiempo
promedio y tiene como argumentos "procedimientos" y "z",
esto significa que estas funciones estarán presentes para
todos los procesos.
Para finalizar el programa imprimimos en forma de tabla
utilizando \t y \n para hacer los saltos de linea y espacios
correspondientes, de esta forma logramos mostrar el
contenido de manera adecuada, en la parte inferior tenemos
los procesos en los que podemos ingresar datos, para esta
simulacion probamos con 4 datos inventados, con los 3
valores que el algoritmo necesita para funcionar.

Resultados Más Corto Primero:


Código #2 y #3

Importamos el Módulo Random, esto nos ayudara a generar


ie implementar números de manera aleatoria, lo veremos
más adelante.

Importamos el Módulo Heapq, que nos ayuda a implementar


el algoritmo de Monticulo de manera sencilla, si bien es
cierto que no haremos una cola, nos ayudara para
implementar los dos algoritmos de manera sencilla gracias a
su árboles binarios.
En variable "p" guardamos los datos generados
aleatoriamente, asi mismo imprimimos lo que se mostrará al
usuario y se le dará la opción de elegir entre el primer o
segundo algoritmo de planificación.

Iniciamos con el Algoritmo por Prioridad establecida, y para


hacerlo implementamos la función precedencia donde como
argumento tiene "p" que son los números aleatorios
generados que veremos más adelante, mediante los ciclos
analizamos y sacamos de la lista teniendo en cuenta su
prioridad y el proceso de ejecucion en el que se encuentran,.
Ahora para el ultimo Algoritmo y el
segundo de este programa
implementamos una función para definir
los pasos para lograr el algoritmo de
Round robin, esto se logra mediante la
implementación de un ciclo While donde
las iteraciones imprimen el Numero de
proceso en ejecución, el que ya esta
ocupado y el que aun se necesita, esto
para dejar claro la forma en la que
asigna a cada proceso una porcion
equitativa tratando cada uno de los
procesos con la misma prioridad.
Resultados de los dos Algoritmos en Consola:

Prioridad estandarizada:

Round Robin:
Conclusiones y
Análisis de
Resultados:

En el Algoritmo Más corto primero podemos


evidenciar en el programa que los procesos
cortos se trabajan de manera muy eficiente,
Como desventaja un proceso largo puede
demorarse demasiado si se agregan procesos
mas cortos todo el tiempo ya que este
preferira el corto siempre.

En el Algoritmo de Prioridad estandarizada


resulta muy basico y lento para ciertos
procesos, no resulta tan eficiente ya que
requiere de más información a diferencia de
los demás, tal como lo evidenciamos en el
programa.
En el Algoritmo Round Robin, encontramos
que es muy eficiente en la medida que reparte
al carga de los procesos por toda la CPU, sin
embargo puede llegar a sobrecargarla y tardar
mucho si se tienen que procesar demasiados
procesos.

También podría gustarte