Entrada / salida ( I / O ) de programación es el método que la computadora sistemas operativos utilizan para decidir el orden en que el bloque de E / S operaciones se presentará a los volúmenes de almacenamiento . La programación de E / S a veces se denomina programación de disco.
Programación de E / S
La programación de E / S generalmente tiene que funcionar con unidades de disco duro que tienen tiempos de acceso prolongados para solicitudes ubicadas lejos de la posición actual del cabezal del disco (esta operación se denomina búsqueda). Para minimizar el efecto que esto tiene en el rendimiento del sistema, la mayoría de los programadores de E / S implementan una variante del algoritmo del elevador que reordena las solicitudes entrantes ordenadas al azar para que se pueda acceder a los datos asociados con un movimiento mínimo de brazo / cabeza.
Los programadores de E / S pueden tener muchos propósitos dependiendo de los objetivos; Los propósitos comunes incluyen los siguientes
- Para minimizar el tiempo perdido por búsquedas en el disco duro
- Para priorizar las solicitudes de E / S de ciertos procesos
- Para dar una parte del ancho de banda del disco a cada proceso en ejecución
- Garantizar que determinadas solicitudes se emitirán antes de un plazo determinado.
Programación de disciplinas
Las disciplinas comunes de programación incluyen las siguientes:
- Programación aleatoria (RSS)
- Primero en entrar, primero en salir ( FIFO ), también conocido como primero en llegar, primero en ser servido (FCFS)
- Último en entrar, primero en salir ( LIFO )
- La búsqueda más corta primero , también conocida como búsqueda más corta / tiempo de servicio primero (SSTF)
- Algoritmo de elevador , también conocido como SCAN (incluidas sus variantes, C-SCAN, LOOK y C-LOOK)
- N-Step-SCAN EXPLORACIÓN de N registros a la vez
- FSCAN , N-Step-SCAN donde N es igual al tamaño de la cola al inicio del ciclo de SCAN
- Cola completamente justa (CFQ) en Linux
- Programación anticipada
- Programador de Noop
- Programador de fechas límite
- Programador mClock [2]
- Programador de Budget Fair Queueing (BFQ). [3] [4]
- Kyber [5] [6]
- NINGUNO (utilizado para unidades NVM Express)
- mq-deadline (utilizado para unidades SSD SATA)
- cfq bfq y bfq-mq (utilizados para unidades HDD)
Ver también
Referencias
- ^ Werner Fischer; Georg Schönberger (1 de junio de 2015). "Diagrama de pila de almacenamiento de Linux" . Thomas-Krenn.AG . Consultado el 8 de junio de 2015 .
- ^ "mClock: Manejo de la variabilidad del rendimiento para la programación de E / S del hipervisor" . VMware Inc . Consultado el 12 de julio de 2015 .
- ^ "Programador de E / S de colas de presupuesto justo" .
- ^ "Programador de E / S BFQ en cola para Linux 4.12 - Phoronix" . www.phoronix.com .
- ^ "blk-mq: programador de E / S multicola Kyber [LWN.net]" . lwn.net . 14 de abril de 2017 . Consultado el 19 de julio de 2019 .
- ^ "BFQ I / O Scheduler aterriza junto con el nuevo Kyber Scheduler - Phoronix" . www.phoronix.com . El 1 de mayo de 2017.
Otras lecturas
- Programadores de E / S de Linux , de Ubuntu Wiki
- Sistemas operativos: tres piezas fáciles , por Remzi H. Arpaci-Dusseau y Andrea C. Arpaci-Dusseau. Libros de Arpaci-Dusseau, 2014. Capítulo relevante: Unidades de disco duro
- Amor, R. (2005). Desarrollo del kernel de Linux , Novell Press. ISBN 0-672-32720-1
- Sistemas operativos: principios internos y de diseño, séptima edición, por William Stallings.
enlaces externos
- Medios relacionados con la programación de E / S en Wikimedia Commons