Está en la página 1de 8

Ejercicios de Disco

Los discos constan de varios platos, cada plato tiene dos cabezas de lectura/escritura
(arriba y abajo). Esto quiere decir que el plato contiene información de ambos lados. A
cada uno de los dos lados de los platos se lo denomina superficie. Cada plato posee
pistas, que son círculos concéntricos que lo dividen. Un cilindro es el conjunto de todas
las pistas en la misma posición de todos los platos.
Las cabezas se mueven perpendiculares a los platos, pasando de pista a pista o de
cilindro en cilindro, es indistinto. Las pistas están divididas en sectores, que son
bloques de información del mismo tamaño.

Cabezas
de
lectura/e
scritura

Cilindro

Lo que tarda la cabeza en pasar de cilindro a cilindro o de pista a pista se denomina


tiempo de búsqueda.

Pistas
Cabeza
l

Sentidos del movimientos


de la cabezal de
lectura/escritura

Lo que tarda en pasar de sector a sector se llama: Tiempo rotacional.


Sector 4
Sentido de rotación
Cabeza del disco
l
Sector 2

Sector 0

Los ejercicios normalmente nos dan las r.p.m (revoluciones por minuto) a las que gira
el disco. Al dar una vuelta la cabeza pasa por sobre toda una pista.

Ej.

Un disco con:
2 platos => 4 cabezas
100 cilindros => 100 pistas/superficie
10 sectores por pista
Tiempo que tarda entre cilindros: 4 ms = Tiempo de búsqueda
Velocidad de Giro: 50 r.p.s
Pedidos: 142 - 623 (aunque nunca lo diga, están dados en número de sector)

Para atender el pedido, primero la cabeza tiene que pararse en el cilindro adecuado y
después ubicar el sector.
Calculemos el tiempo rotacional:

50 vueltas……………………….. 1 seg (este está en r.p.s; si estuviera en r.p.m serían


60 seg)
1 vuelta…………………………..X= 0.02 seg = 20 ms

10 sectores ………………………… 20 ms
1 sector……………………………….X= 2 ms

Para saber en que cilindro me encuentro debo averiguar la cantidad de sectores por
cilindro, que se calcula como:

Cantidad de cabezas * cantidad de sectores/pista = 4 * 10 = 40

Si dividimos nuestros pedidos por este número nos dará en que cilindro se encuentra
cada pedido:

142 / 40 = 3

623 / 40 = 15

Ahora tendríamos que ver en que cabeza está el pedido, y para hacer eso dividimos el
resto de la división anterior por la cantidad de sectores por pista:

22 / 10 = 2
23 / 10 = 2

Para conocer el sector, usamos el resto de esta última división:

R=2
R=3

Si el ejercicio dice que los sectores están numerados en el rango 0..99, los dejamos
como están.

Si los sectores están numerados en el rango 1..10, a este resto hay que sumarle 1
(porque los restos de dividir a un número por 10 dan de 0 a 9)

R=2+1
R=3+1

Las direcciones físicas quedan de la siguiente manera. (elijo la numeración de 0 a 9)

Dirección lógica Cilindro Cabeza Sector


142 3 2 2
623 15 2 3

Para calcular el tiempo que pasó de un pedido al otro tengo que ver dos cosas:

En este caso, me tengo que mover 12 cilindros (|15 – 3|): 4 ms * 12 = 48 ms (tiempo


de cilindro a cilindro * cantidad de cilindros atravesados)
El disco mientras el cabezal va al cilindro correspondiente sigue girando y avanza
sectores.

Lo que tenemos que ver entonces es cuantos sectores se han recorrido en el lapso
que duró la traslación de esos 12 cilindros

Tiempo de sector a sector: 2 ms. (se calculó antes) => cantidad de sectores
atravesados = 48 ms / 2 ms/sector = 24 sectores

Si estaba en el sector 2 (ver tabla anterior), ahora “estaría” en el 26. Pero como hay 10
sectores por pista, si pasamos 24, sería como haber dado 2 vueltas enteras + 4
sectores => estamos en el sector 6.
Ahora tenemos que ir al sector 3. Como nos pasamos, para llegar al 3 hay que
completar la vuelta y movernos 3 más.

Sector 6 al sector 0 => 2ms * 4 sectores = 8 ms


+ Sector 0 al 2 => 4 ms

12 ms

Por lo tanto, el tiempo total para cumplir el pedido es de: 48 ms + 12 ms = 60 ms + 2


ms *

* Aunque el ejercicio muchas veces no lo diga, se supone que al atender el pedido se


lee un sector. Si no hay datos acerca de cantidad de sectores a leer, tamaño del
sector, etc., se toma al tiempo de lectura como lo que se tarda en recorrer un sector. El
tiempo de transferencia esta explicado más adelante.

Sigamos con otro pedido:

Dirección lógica Cilindro Cabeza Sector


623 15 2 4*
497 12 1 7

* Nos movimos un sector

3 cilindros (|12 – 15|) * 4 ms = 12 ms.


En 12 ms nos movimos 6 sectores (12 ms / 2 ms). Estamos en 4 + 6 = 10, que
equivale al sector 0 (estamos en la numeración de 0..9)
Para llegar al 7 desde el cero tardamos 7 * 2 ms = 14 ms

Total = 12 ms + 14 ms + 2 ms (nuevamente de lectura)

Tiempo de transferencia

T=b/r*N
b = cantidad de bytes a transferir
r = r.p.s. (revoluciones por segundo)
N = cantidad de bytes por pista

Algoritmos
1 Planificación SCAN

En el algoritmo SCAN, el brazo del disco parte de un extremo del disco y se mueve hacia el
otro, atendiendo las solicitudes a medida que llega a cada cilindro, hasta llegar al otro extremo
del disco. Ahí, la dirección de movimiento de la cabeza se invierte, y continúa la atención. La
cabeza barre continuamente el disco de un lado a otro.

El algoritmo SCAN también se conoce como algoritmo de elevador, ya que el brazo del disco
se comporta igual que el elevador de un edificio, que atiende primero todas las solicitudes para
subir y luego cambia de dirección para atender las solicitudes de abajo.

Pistas

100

Pedido

2 Planificación C-SCAN

La planificación SCAN circular (C-SCAN) es una variante de SCAN diseñada para dar un
tiempo de espera más uniforme. Al igual que SCAN, C-SCAN mueve la cabeza de un extremo
del disco al otro, atendiendo las solicitudes en el camino, sólo que ahora, cuando la cabeza
llega al otro extremo, regresa de inmediato al principio del disco sin atender solicitudes.
Pistas
En la estrategia C-SCAN, el brazo se mueve del cilindro exterior al interior, sirviendo a las
peticiones con menor tiempo de búsqueda. Cuando el brazo ha completado su recorrido hacia
100 salta al principio del disco y a continuación reanuda su recorrido hacia adentro
adentro,
procesando peticiones.

Pedido
Para resolver los ejercicios, hay que ver si la cabeza del disco esta subiendo o
bajando, y respetar esa dirección. Se ordenan los pedidos en forma creciente desde la
posición inicial hasta el ultimo o primer cilindro (depende de la dirección) y después
atender el resto.

Ej: Seguimos con los datos del ej anterior, 100 pistas y 10 sectores por pista

Posición inicial: 500 (en sectores) y ascendiendo

Pedidos: 10 – 642 – 811 – 800 – 254 – 798 – 685

Ordenando: 500 – 642 – 685 – 798 – 800 – 811 – 9XX* - 0 – 10 – 254

* Hay que llegar hasta el último cilindro y para después volver al primer cilindro, pero
no interesa el sector dentro del cilindro que quedemos

Si en el ejercicio tenemos que calcular los tiempos de atención de los pedidos, cuando
llegamos al pedido más alto, tendríamos que calcular el tiempo que tarda hasta el
ultimo cilindro

Ej.:

Supongamos que atendimos el pedido 811 y quedamos en el cilindro 8 sector 1. Nos


tenemos que mover 1 cilindro.

En el ejercicio anterior teníamos que tardaba 4 ms para pasar entre cilindros y 2 ms


para pasar de sector a sector.

Entonces para mover un cilindro son 4 ms y en ese tiempo la cabeza se movió 2


sectores. Estaríamos en el cilindro 9 sector 3 (1 + 2)

Lo importante es que, como el tiempo de retorno al cilindro 0 se considera nulo, para


calcular el siguiente pedido (10) tendríamos que considerar que estamos en el cilindro
0 sector 3

3 Scan n pasos

Funciona igual que scan, pero utiliza 2 colas:

- Una de tamaño n, donde guarda los pedidos que va a atender.


- Una cola de espera, donde acumula el resto de los pedidos.
Suponiendo que tengo los pedidos que llegaron en el siguiente orden: 1000 – 642 –
811 – 800 – 254 – 798 – 685 y uso scan de 3 pasos. Las colas quedarian asi:

Cola n = 1000 – 642 – 811


Cola espera = 800 – 254 – 798 – 685

Atenderia los pedidos de la cola n, en el siguiente orden (suponiendo que arranca del
sector 0): 642 – 811 – 1000.

Luego saca los 3 priomeros pedidos de la cola de espera, y los pasa a la cola n:

Cola n = 800 – 254 – 798


Cola espera = 685

Y atiende esos pedidos en el siguiente orden (habiamos quedado en el sector 1000) :


800 – 798 – 254

Por ultimo atiende el pedido 685.

Existe el F-Scan, que es un scan de n pasos, con n = 2.

4 Planificación LOOK

El algoritmo look trabaja con la misma idea que Scan, con la diferencia que no va
hasta la ultima pista antes de cambiar el sentido del recorrido, sino que va hasta la
pista que tenga el ultimo pedido.

Pistas

100

Pedido

5 Planificación C- LOOK
Este algoritmo, como look, se mueve hasta los pedidos “extremos”, pero en un solo
sentido.

Pistas

100

Pedido

Regla para acordarse Diferencias entre Scan, C-Scan, Look, C-Look

- Acuerdense que scan es “escanear” (que nivel que tengo de ingles!!!)….


Piensen como funciona la lucecita de un scanner…. Recorre TODO el scanner,
por mas que le pongas una hoja oficio, a4, o la horrible foto 4x4 que tenes en el
dni.
- Look es “mirar”, por lo tanto, cuando sube “mira” si hay pedidos arriba para
seguir avanzando, si no hay, cambia de sentido.. (y mira abajo cuando bajas)
- Y tambien acuerdense que los algoritmos que tiene la C, “CORTAN” cuando
llegan a un extremo, y vuelven a arrancar desde 0.

También podría gustarte