Limite de I / O - I/O bound

Na ciência da computação , o limite de E / S se refere a uma condição na qual o tempo que leva para completar um cálculo é determinado principalmente pelo período gasto esperando que as operações de entrada / saída sejam concluídas. Isso é o oposto de uma tarefa vinculada à CPU . Essa circunstância surge quando a taxa de solicitação dos dados é mais lenta do que a taxa de consumo ou, em outras palavras, gasta-se mais tempo solicitando dados do que processando.

I / O vinculado como um problema inerente à computação

O estado vinculado de E / S foi identificado como um problema na computação quase desde seu início. A arquitetura de Von Neumann , que é empregada por muitos dispositivos de computação, envolve várias soluções possíveis, como a implementação de uma unidade de processador central logicamente separada que, juntamente com o armazenamento das instruções do programa, também recupera dados reais geralmente da memória principal e faz uso disso mais dados acessíveis para trabalhar. Quando o processo é encerrado, ele grava de volta os resultados no armazenamento original (geralmente na memória principal ).

Como os dados devem ser movidos entre a CPU e a memória ao longo de um barramento que tem uma taxa de transferência de dados limitada , existe uma condição conhecida como gargalo de Von Neumann . Simplificando, isso significa que a largura de banda de dados entre a CPU e a memória tende a limitar a velocidade geral de computação. Em termos da tecnologia real que compõe um computador, o Gargalo de Von Neumann prevê que é mais fácil fazer a CPU realizar cálculos mais rapidamente do que fornecer dados na taxa necessária para que isso seja possível.

Na história recente, o gargalo de Von Neumann se tornou mais aparente. A filosofia de design dos computadores modernos é baseada em uma CPU e memória principal fisicamente separadas. É possível fazer a CPU funcionar em uma alta taxa de transferência de dados porque os dados são movidos entre locais dentro deles através de distâncias minúsculas. A separação física entre a CPU e a memória principal, no entanto, requer um barramento de dados para mover os dados por distâncias comparativamente longas de centímetros ou mais. O problema de fazer esta parte do sistema operar suficientemente rápido para acompanhar o ritmo da CPU tem sido um grande desafio para os projetistas.

Limite de E / S como um problema prático

O estado vinculado de E / S é considerado indesejável porque significa que a CPU deve parar sua operação enquanto espera que os dados sejam carregados ou descarregados da memória principal ou do armazenamento secundário . Com a velocidade de computação mais rápida sendo o objetivo principal de novos designs e componentes de computador, como a CPU e a memória, sendo caros, há um forte imperativo para evitar estados vinculados de E / S e eliminá-los pode gerar uma melhoria mais econômica no desempenho do que atualizar a CPU ou memória.

Conforme a CPU fica mais rápida, os processos tendem a ficar mais ligados a I / O

Ou em termos mais simples:

À medida que a CPU fica mais rápida, os processos tendem a não aumentar em velocidade em proporção à velocidade da CPU porque eles ficam mais ligados a E / S.

Isso significa que os processos vinculados a E / S são mais lentos do que os processos não vinculados a E / S, não mais rápidos. Isso se deve a aumentos na taxa de processamento de dados no núcleo, enquanto a taxa na qual os dados são transferidos do armazenamento para o processador não aumenta com isso. À medida que a velocidade do clock da CPU aumenta, permitindo que mais instruções sejam executadas em uma determinada janela de tempo, o fator limitante da execução efetiva é a taxa na qual as instruções podem ser entregues ao processador a partir do armazenamento e enviadas do processador ao seu destino. Em suma, os programas mudam naturalmente para serem cada vez mais limitados por E / S.

Comparação com CPU-bound

Suponha que temos um processo vinculado à CPU e muitos processos vinculados a E / S. Conforme os processos fluem pelo sistema, o seguinte cenário pode ocorrer. O processo vinculado à CPU obterá e manterá a CPU. Durante esse tempo, todos os outros processos finalizarão sua E / S e passarão para a fila de prontidão, aguardando a CPU. Enquanto os processos aguardam na fila de espera, os dispositivos de E / S ficam ociosos. Eventualmente, o processo vinculado à CPU termina seu surto de CPU e se move para um dispositivo de E / S. Todos os processos vinculados a I / O, que têm rajadas curtas de CPU, são executados rapidamente e voltam para as filas de I / O. Nesse ponto, a CPU fica ociosa. O processo vinculado à CPU então voltará para a fila de prontidão e será alocado na CPU. Novamente, todos os processos de E / S acabam esperando na fila de espera até que o processo vinculado à CPU seja concluído. Há um efeito de comboio à medida que todos os outros processos esperam que o único grande processo saia da CPU. Esse efeito resulta em menor utilização da CPU e do dispositivo do que seria possível se os processos mais curtos fossem permitidos primeiro.

Veja também

Referências