Uma chamada lenta do sistema é algo como um soquete TCP read () - se você não tiver o O_ASYNC (ou o que seja) definido, poderá esperar para sempre.
Uma chamada rápida do sistema é algo como gettimeofday () ou getpid (), os quais retornam informações ao processo que o kernel disponibilizou imediatamente.
As leituras de disco caem na categoria de chamadas lentas do sistema. Se um processo faz um read () em um arquivo de disco verdadeiro, descritor de arquivo, o kernel pode precisar ler em um ou mais blocos de disco para satisfazer a leitura. Dependendo da estrutura em disco do sistema de arquivos subjacente, isso pode significar ler o inode em disco para obter o número do bloco de disco de um "bloco indireto", ler o bloco indireto para obter o bloco de dados e, em seguida, ler o próprio bloco de dados . Consome bastante tempo, pelo menos em termos de ciclos de CPU por acesso ao disco, provavelmente pior hoje do que nos bons velhos tempos.
Eu não vejo isso há muito tempo, mas a "metade inferior" do antigo código de driver de dispositivo de unidade de disco Unix bloqueava sinais / interrupções, para que fosse mais fácil manter a integridade do sistema de arquivos em disco. Ocasionalmente, um driver com falha ou um disco com falha nunca entregaria o bloco de disco solicitado por um processo, e o processo dormia para sempre. Até uma morte -9 não fez nada.