A system call is a request of some application in user space, requesting the services of the kernel to carry out a given task it doesn't have the right or privilege to do. The system call comes from user space, signals a trap into kernel space and then if approved carries out the service for the user mode app. So as an example, lets say we have a non modern Linux kernel and want to read out memory. Newer kernels disable this by default, but it can be re-enabled. We can read from /dev/mem, and doing so takes many read system calls, as the user space doesn't have access to /dev/mem. To see the system calls you can do something like this
Quote:
sudo strace cat /dev/mem > /dev/null
|
A thread is the line of execution of a process. So lets say we create an application in C which is just a for loop that continually increments a variable by 1 to 1 million. The assembled version of that C app, will be numerous add instructions allowing the system to count to 1 million. All of those instructions are held in the processes thread of execution, and are executed one at a time. In older systems there was one thread per process, though in modern systems, each process can have as many threads as resources available. A process is just a program in execution by the way.