Enviado em 12/03/2012 - 09:54h
Olá, gostaria de saber as principais diferenças de performance entre system calls e funções de biblioteca no Linux (UNIX-like). Fiz alguns experimentos aqui (trabalho da univ.) e percebi que muitas vezes o uso de libcs ao invés de system calls diretamente é melhor em termos de tempo de execução, considerando que ambas realizem a mesma operação, como por exemplo, read/fread. Aí vem minha dúvida: porque que isso acontece? O meu primeiro instinto foi pensar o contrário, já que um acessa diretamente o kernel e o outro passa antes pela camada de libs. Cheguei a pensar que pode ter algo a ver com a mudança de contexto user-mode/kernel-mode, mas num consegui entender bem exatamente. Podem me dar algumas dicas?
Outros detalhes do experimento: Usei o "time" pra medir os tempos e constatei que com system calls o tempo "sys" (kernel) predomina, e para libcs o contrário: tempo "user" sempre dominante.
Obs. Em relação às libcs, estou considerando apenas aquelas que necessariamente precisam de uma system call para realizar uma operação. Basicamente, dois pedaços de código que fazem a mesma coisa: um com uso apenas de system calls e o outro apenas funções de bibliotecas (libc).
Desde já agradeço,
Vinícius V.
Outros detalhes do experimento: Usei o "time" pra medir os tempos e constatei que com system calls o tempo "sys" (kernel) predomina, e para libcs o contrário: tempo "user" sempre dominante.
Obs. Em relação às libcs, estou considerando apenas aquelas que necessariamente precisam de uma system call para realizar uma operação. Basicamente, dois pedaços de código que fazem a mesma coisa: um com uso apenas de system calls e o outro apenas funções de bibliotecas (libc).
Desde já agradeço,
Vinícius V.