A mesma razão, temos limites rígidos e flexíveis em todo o resto. O limite rígido é proteger os usuários uns contra os outros. Se um usuário pudesse usar recursos sem limite, isso diminuiria o desempenho / resposta do sistema para todos os outros usuários. O limite flexível é proteger os usuários contra si mesmos, e a contagem de arquivos abertos é o exemplo perfeito disso. Talvez seja necessário ter 300 arquivos abertos de uma só vez e, se seu limite for 300 ou superior, você poderá fazer isso. (Se o seu limite virtual estiver abaixo de 300, você precisará aumentá-lo - o que você pode fazer, até o limite máximo.) Mas muito poucos programas precisam ter 300 arquivos abertos ao mesmo tempo. Se o seu programa faz isso, ele provavelmente tem um bug onde ele abre arquivos e não consegue fechá-los, mesmo que seja feito usando-os. Nesse caso, provavelmente é melhor você saber disso quando o programa tentar abrir seu 101º arquivo; Isso economizará seu tempo e talvez permita que você descubra o erro em seu programa antes que alguém o faça.