07-02-2014, 21:48
Hola como andan,
Estuve intentando resolver el ejercicio 3b) de la guìa de ejercicios oficial de Masoero:
3) Un disco rígido tiene 100 cilindros, 10 sectores por pista y 2 platos. El tiempo entre pistas es de 1ms y tarda 20ms en dar una vuelta. El brazo acaba de leer el MBR. En un instante dado llegan los pedidos: 400, 500, 1803, 411.
Se pide:
b) Utilizando el algorimo N-Step SCAN (con colas de 2 pedidos) ordene la cola y determine el tiempo necesario para atender todos los pedidos
De lo que entendí de N-Step SCAN, en este caso tengo N = 2, entonces tengo dos colas..... En la primera cola tengo 400, 500
Haciendo un análisis de lo que ya resolví en el 3a) me da que:
- Estoy parado en (0,0,1) moviéndose hacia arriba (donde (Cilindro, Cabezal, Sector))
- 400 equivale a (10, 0 ,0)
- 500 equivale a (12, 2, 0)
Entonces la cola la dejo así ordenada.... Primero leo 400 y después 500.
Después proceso la segunda cola... Para eso primero analizo que:
- 1803 es (45, 0 , 3)
- 411 es (10, 1, 1)
Entonces lo que tengo que hacer es seguir subiendo el brazo hasta la última pista del disco (la 99) para después bajar y atender 1803 y 411 en ese orden.
Lo que no entiendo es... ¿Cómo calculo el recorrido hasta la pista 99? Quiero decir... en 99 no tengo absolutamente nada que leer, entonces me supongo lo siguiente:
Si ya terminé de leer 500, debería quedar posicionado en (12,2,1)... después saco las cuentas de cuanto cuesta viajar de 12 a 99.. Esto me da 87 cilindros.
Después tengo que bajar al cilindro 45, por lo cual hago 99-45 = 54ms.... y después sumo ambos viajes me da 87 + 54 = 141 ms de seek.
Ahora para el search.... si estaba en el sector 1 y recorrer un sector tarda 2ms, calculo 141ms/2ms = 70,5 sectores que recorrí , o sea que termino cayendo en el sector 1,5. Como me pide alocarme al sector 3, recorro 1,5 sectores más y esto me da 3ms de search. Leo el sector y son 2ms más.
¿Está bien este análisis?
Estuve intentando resolver el ejercicio 3b) de la guìa de ejercicios oficial de Masoero:
3) Un disco rígido tiene 100 cilindros, 10 sectores por pista y 2 platos. El tiempo entre pistas es de 1ms y tarda 20ms en dar una vuelta. El brazo acaba de leer el MBR. En un instante dado llegan los pedidos: 400, 500, 1803, 411.
Se pide:
b) Utilizando el algorimo N-Step SCAN (con colas de 2 pedidos) ordene la cola y determine el tiempo necesario para atender todos los pedidos
De lo que entendí de N-Step SCAN, en este caso tengo N = 2, entonces tengo dos colas..... En la primera cola tengo 400, 500
Haciendo un análisis de lo que ya resolví en el 3a) me da que:
- Estoy parado en (0,0,1) moviéndose hacia arriba (donde (Cilindro, Cabezal, Sector))
- 400 equivale a (10, 0 ,0)
- 500 equivale a (12, 2, 0)
Entonces la cola la dejo así ordenada.... Primero leo 400 y después 500.
Después proceso la segunda cola... Para eso primero analizo que:
- 1803 es (45, 0 , 3)
- 411 es (10, 1, 1)
Entonces lo que tengo que hacer es seguir subiendo el brazo hasta la última pista del disco (la 99) para después bajar y atender 1803 y 411 en ese orden.
Lo que no entiendo es... ¿Cómo calculo el recorrido hasta la pista 99? Quiero decir... en 99 no tengo absolutamente nada que leer, entonces me supongo lo siguiente:
Si ya terminé de leer 500, debería quedar posicionado en (12,2,1)... después saco las cuentas de cuanto cuesta viajar de 12 a 99.. Esto me da 87 cilindros.
Después tengo que bajar al cilindro 45, por lo cual hago 99-45 = 54ms.... y después sumo ambos viajes me da 87 + 54 = 141 ms de seek.
Ahora para el search.... si estaba en el sector 1 y recorrer un sector tarda 2ms, calculo 141ms/2ms = 70,5 sectores que recorrí , o sea que termino cayendo en el sector 1,5. Como me pide alocarme al sector 3, recorro 1,5 sectores más y esto me da 3ms de search. Leo el sector y son 2ms más.
¿Está bien este análisis?