Chamadas de sistema rápidas vs. lentas: como os sinais acordam chamadas de sistema bloqueadas

2025-06-03

Este artigo explora as diferenças principais entre chamadas de sistema rápidas e lentas em sistemas operacionais. Chamadas de sistema rápidas (como `getpid()`) retornam imediatamente, enquanto chamadas de sistema lentas (como `read()`) podem bloquear aguardando eventos externos. O artigo se concentra em como os sinais interrompem chamadas de sistema lentas bloqueadas, demonstrando com exemplos de código como lidar com erros `EINTR` e usar a sinalização `SA_RESTART`. Além disso, o artigo examina as nuances de E/S de disco e como o kernel lida com diferentes tipos de chamadas de sistema, comparando os pontos fortes e fracos de vários modelos de E/S (E/S de bloqueio, E/S não bloqueante, multiplexação de E/S, E/S acionada por sinal, E/S assíncrona e I/O Uring).