syscalls somewhat resembles an interface from user space (the place where your program is running) to the kernel ground. They are necessary when you do something that only the kernel can, for example, communicate with equipment (for example, read bytes from a network card, start a process, even allocating memory via malloc (using brk ), etc.).
Userland functions, such as strcpy , on the other hand, are not indented to make system calls. They do not need special privileges to do what they do, they just work with the process memory on the user's land.
A serious decrease in performance is introduced as system calls (changing modes from the user to the kernel ground and vice versa is expensive), since those that are often called functions like strcpy do not make sense from the design point of view and are unlikely to be seen.
source share