UTNianos

Versión completa: [Pedido] Final de Sistemas Operativos 27/9/2013
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Tenes razón, ese dato indica de que esta bajando, la pista 130 debería atenderse última
Despues de checkearlo ayer en la mesa de final confirmo: El orden de pistas es 22-22-10-2-130 . Osea el C-Look atiende solo en un sentido, y puede ser bajada o subida. Asi que la resolucion anterior esta mal!
saludos
Hola! Les dejo mi resolución del ejercicio 2 (C-LOOK) para ver que tal está.

Cilindros(pistas)=200
Sectores=20

Hacemos unos cálculos previos antes de comenzar:
4000 RPM significan 4000 vueltas por minuto. Por lo tanto, 1 vuelta lo hará en 15ms. Teniendo 20 sectores, se traduce a 0,75ms por sector (Ts=0,75)


El orden es tal cual escribió Martulino:

_______Cilindros_Sectores
(28,X)_____-______-
(25,18)____-______-
(22,12)____3______6 (3x2/0.75 = 8: En 6ms avanzo 8 sectores): 18+8-20=6, +6 = 12
(22,13)____0______1 (No sigue girando porque ya se encuentra en esa pista)
(10,0)_____12____15 (12x2/0.75 = 32: En 24ms avanzo 32 sectores): 13+32-20-20=5, +15 = 0
(2,14)_____8_____12 (8x2/0.75 = 22: En 16ms avanzo 22 sectores): 0+22-20=2,+12=14
(130,5)____0_____11 (No sigue girando porque ya se encuentra en esa pista)
__Total___46_____45

Tc es Tiempo entre cilindros (pistas) = 2ms
Tcs es Tiempo entre CADA sector = 0,75ms

A cada lectura, hay que sumarle 1ms (por Tiempo de canal en enunciado)

Finalmente tenemos:
Clindros*Tc + Sectores*Tcs + Cantidad de lecturas * Tiempo de canal (lectura)
46*2ms + 45*0.75 + 6*1ms = 131.75ms


Espero que les sirva, y si ven algún detalle, comentenlo!
A mi NO me dio igual. No se si te confundiste vos porque pusiste muy comprimido el desarrollo. Te dejo como lo hice yo en mas detalle y decime (ademas ya estoy medio quemado =P)

CLook: (25,18)-(22,12)-(10,0)-(2,14)-Subida del cabezal-(130,5)

Del (25.18) al (22,12):

Posiciono Pista: (25,18) --> (22,6) = 6 ms
Posiciono Sector: (22,6) --> (22,12) = 4,5 ms
Leo sector: (22,12) --> (22,13) = 0,75 ms

Subtotal: 11,25 ms

Voy al (22,13):

**Comentario**
Ya estoy en (22,13)pero como Tiempo transferencia > Tiempo entre sector, no esta disponible para leer en ese instante, entonces doy una vuelta = 15 ms.
**Fin Comentario**


Leo sector: (22,13) --> (22,14) = 0,75 ms

Subtotal: 0,75 (sin contar los 15 ms que di la vuelta)

Voy al (10,0):

Posiciono Pista: (22,14) --> (10,8) = 24 ms
Posiciono Sector: (10,8) --> (10,0) = 9 ms
Leo Sector: (10,0) --> (10,1) = 0,75

Subtotal: 33,75 ms
Voy al (2,14):

Posiciono Pista: (10,1) --> (2, 2.13) = 16 ms
Posiciono Sector: (2, 2.13) --> (2,14) = 8,9 ms
Leo Sector: (2,14) --> (2,15) = 0,75

Subtotal: 25,65

Voy al (130,5):


** Comentario **

Subida del cabezal de pista 2 a 130:

200 pistas _____ 20 ms
128 pistas _____ 12,8 ms

** Fin Comentario **


(2,15) --> (130, 12.06) = 12,8 ms
(130, 12.06) --> (130, 5) = 9,7 ms
(130, 5) --> (130,6 y algo) = 1 ms (ultimo pedido uso T. Transferencia)

Subtotal: 23,5 ms

Total: 11,12 ms + 15 ms (de la vuelta) + 0,75 ms + 33,75 ms + 25,65 ms + 23,5 ms = 109,9 ms
fele, lo tenemos muy similar. El tema es que yo anoté cantidades de cilindros y sectores y al final de todo hago al multiplicación por el tiempo de cada uno (2ms y 0.75ms respectivamente).

Lo que no hice fue avanzar 0.75ms una vez que estoy posicionado y listo para la lectura, dejándolo posicionado en el siguiente sector. (Por este caso, no dí toda la vuelta en el (22,12) al (22,13).

Una cosa que tenemos diferente y no comparto es lo siguiente: Cuando pasa del (2,14) al (130,5) para mí no tarda nada dado que el algoritmo al ser C-LOOK cae directamente hasta esa posición sin tardar nada (en este caso, sube), teniendo que sumar solamente el Tiempo entre sectores. Eso tenía entendido yo de los algoritmos C-SCAN y C-LOOK: Caen hasta el sector cero o primer pedido sin incurrir tiempo alguno.
La caída o subida del cabezal, en este caso la subida de (2,14) a (130,5), SI consume tiempo, el tema es que al ser una caída/subida lo hace mas rápido que ir pista por pista. Lo que te confundís vos, es que a veces te dicen que ese tiempo de subida/caída NO lo consideres. En este ejercicio, el enunciado te da los datos para que lo consideres, fíjate bien.
Perfecto fele, ahora una última consulta. El tiempo de espera del canal de 1ms que aparece en el enunciado. Donde lo usamos? Serían 6 lecturas totales entonces 6ms más?
Mira, esa fue una duda que tuve en su momento y buscando comentarios en el campus virtual por ayudantes llegue a la siguiente conclusión:

Tenes:
- Tiempo de canal (Tiempo de transferencia).
- Tiempo por sector

Siempre usas en las cuentas el tiempo por sector para las cuentas, salvo para la lectura del ultimo pedido que tenes que usar el tiempo de transferencia. (Fijate que en cada lectura utilizo 0,75ms y en el ultimo pedido 1ms)

Para lo que te sirve el tiempo de transferencia, es para saber si tenes el cabezal disponible para leer el siguiente pedido. Cuando el tiempo de transferencia es mayor a lo que dura el tiempo por sector, si el siguiente pedido esta muy cerca al pedido que se acaba de leer, el cabezal todavía no va a estar disponible porque va a estar todavía haciendo la transferencia (como pasa en 22,13). Entonces lo que se hace es que el cabezal de una vuelta, para que se posicione en el comienzo del sector que tiene que leer.

El caso de arriba (dar la vuelta) lo tenes que considerar solamente cuando T.Transferencia > T.por sector (y solamente aplica cuando los 2 pedidos estan muy cerca. Si estan muy lejos hasta que va a la pista seguramente ya realizo la transferencia y no tenes que dar esa vuelta de mas)

Si es T.Transferencia < T.por sector, el ejercicio se hace normalmente. Sin considerar nada.

Nada mas acordate que en ambos casos en el ultimo pedido tenes que usar el T.tranferencia y no en tiempo por sector.

Espero que se entienda. Igual es lo que yo entendí. Date una vuelta por campus virtual que ahí hablan del tema este.
Alguien me puede confirmar si el tiempo de transferencia que dan como dato, el "tiempo canal" se usa sólo para el último pedido? Esto es siempre para cualquier algoritmo?
Y otra duda, cuando calcule el seek time para pasar de la pista 2 a la 130, cómo hago el cálculo? Me dicen que para ir de una punta a otra demora 20ms pero como es el algoritmo C-LOOK, no va hasta el extremo sino a la petición más extrema, o sea que del 2 no va a ir al 200 sino que debería ir al 130. Lo tomo como 20ms o hago alguna regla de tres simple o ignoro este dato y digo que 130-2=128 entonces 128x2ms = 256ms (es mucho mayor que 20ms)

Espero su respuesta, desde ya muchas gracias!
Páginas: 1 2
URLs de referencia