Cómo implementar un algoritmo de programación de disco C-SCAN para encontrar su tiempo de búsqueda

Algoritmos de programación de disco con ejemplos

En términos relativos, la recuperación de datos de los controladores del disco duro siempre es lenta en comparación con el acceso a la CPU y la memoria debido a la naturaleza mecánica del disco magnético. El movimiento del brazo del disco es una operación muy costosa, por lo tanto, los sistemas operativos utilizan algoritmos de programación de disco para reducir el tiempo de búsqueda. A continuación puede encontrar un resumen de algunos de los algoritmos de programación de disco bien conocidos. El algoritmo recibe una cola de posiciones de solicitud (números de seguimiento) y la posición actual del cabezal. La salida del algoritmo es el orden en que se atienden las solicitudes.

Primero llegado, primero en servir (FCFS)

  1. Las solicitudes se atienden en el orden en que llegan
  2. El algoritmo es fácil de implementar.
  3. Mal algoritmo ya que puede implicar mucha distancia de búsqueda innecesaria

El tiempo de búsqueda más corto primero (SSTF)

  1. Solicitud de servicio con el menor tiempo de búsqueda desde la posición actual de la cabeza
  2. Puede matar de hambre algunas solicitudes
  3. Buen algoritmo para una pequeña lista de solicitudes.

Escaneo o algoritmo de elevador

  1. El brazo del disco comienza en un extremo del disco y se mueve hacia el otro extremo
  2. Atiende las solicitudes a medida que se mueve y luego invierte la dirección cuando golpea el otro extremo
  3. Los algoritmos de escaneo son buenos para cargas pesadas y más justos

C-Scan

  1. Similar al algoritmo de escaneo, pero la cabeza vuelve al cilindro 0 cuando llega al final del disco
  2. Trata la lista de cilindros como una lista circular que envuelve el disco
  3. El tiempo de espera es más uniforme para cilindros cerca del borde del disco.

C-Look

  1. Similar a C-Scan pero la cabeza solo viaja hasta la última solicitud en cada dirección

More Interesting

Cómo diseñar una estructura de datos que pueda almacenar 1-1000 números

Cómo equilibrar el tiempo entre el desarrollo web de aprendizaje (JavaScript) y las estructuras de datos de algoritmos

¿Existe un libro o sitio web que describa los problemas y luego le solicite la estructura de datos / algoritmos más apropiados necesarios para resolver el problema?

¿Por qué es necesario conocer la complejidad temporal de un programa?

¿Cómo es coherente una búsqueda iterativa de profundización en beneficio de BFS y DFS?

Un profesor me dijo que no me molestara en aprender muchos lenguajes de programación sino que me enfocara solo en C ++, estructuras de datos y algoritmos, ¿tiene razón?

¿Cómo funciona la función Rolling Hash utilizada en el algoritmo Rabin Karp?

¿Qué estructura de datos debo usar en Java para almacenar y obtener el siguiente tipo de datos? ¿Cuál debería ser la estructura de mi clase para este propósito?

¿Qué es el algoritmo Twofish?

¿Qué tecnología utiliza X ?: ¿Cómo implementan las empresas de análisis (Mixpanel, KISSMetrics, etc.) el análisis de embudos?

¿Qué temas matemáticos necesito aprender antes de comenzar a aprender inducción, recursión y programación dinámica?

Cómo calcular la suma de subconjuntos individuales de todos los subconjuntos en un rango dado de manera eficiente

En el software de servidor web, ¿alguna vez se prefiere la ordenación en lugar de la clasificación rápida, porque un ataque DoS podría desencadenar el comportamiento de clasificación rápida en el peor de los casos?

Cómo saber si un algoritmo es [matemática] O (n) [/ matemática], [matemática] O (2n) [/ matemática] o [matemática] O (n ^ 2) [/ matemática]

¿Se conoce algún algoritmo general para factorizar números muy grandes?