I understand that a user can own a process and each process has an address space (which contains valid memory locations, this process can reference). I know that a process can c
If you wanted to perform a system call directly from your program, you could easily do so.
It is platform dependent, but let's say you wanted to read from a file. Every system call has a number. In this case you place the number of the read_from_file
system call in register EAX. The arguments for the system call is placed in different registers or the stack (depending on system call). After the registers are filled with the correct data and you are ready to perform the system call, you execute the instruction INT 0x80
(depends on architecture).
That instruction is an interrupt which causes the control to go to the OS. The OS then identifies the system call number in the register EAX, acts accordingly and gives control back to the process doing the system call.
The way system calls are used are prone to change and depends on the given platform. By using libraries that provides easy interfaces to these system calls, you make your programs more platform independent and your code will be much more readable and faster to write. Consider implementing system calls directly in a high level language. You would need something like inline assembly to ensure data are put in the right registers.