According to Wikipedia an [execution model](https://en.wikipedia.org/wiki/Execution_model) is

> 
> part of the language specification, and is implemented as part of the language implementation.
> 
> 
> 

It further defines that

> 
> the order of execution may be chosen statically [...] but a small portion must be chosen dynamically, as execution proceeds.
> 
> 
> [...] The static choices are most often implemented inside a compiler, in which case the order of work is represented by the order in which instructions are placed into the executable binary. The dynamic choices would then be implemented inside the language's runtime system.  
> 
> The runtime system may be a library, which is called by instructions inserted by the compiler, or the runtime system may be embedded into the executable directly, such as by inserting branch instructions, which make dynamic choices about which work to perform next.
> 
> 
> 

Wikipedia specifies the [runtime system](https://en.wikipedia.org/wiki/Runtime_system) as

> 
> any behavior that is not directly the work of a program is runtime system behavior. This definition includes as part of the runtime system things such as putting parameters onto the stack before a function call, the behavior of disk I/O, and parallel execution related behaviors.
> 
> 
> 

which additionally

> 
> is also the gateway by which a running program interacts with the runtime environment, which contains not only state values that are accessible during program execution, but also active entities that can be interacted with during program execution like disk drives and people, via keyboards.
> 
> 
> 

It further states that,

> 
> Higher-level behaviors implemented by a runtime system may include tasks such as drawing text on the screen or making an Internet connection.  
> 
> It is often the case that an OS provide these kinds of behaviors as well [...] The runtime system is implemented as an abstraction layer that translates the invocation of the runtime system into an invocation of the operating system. This hides the complexity or variations in the services offered by different operating systems. **[which basically are system calls for me, regarding the Linux Kernel]**  
> 
> This also implies that the OS kernel can itself be viewed as a runtime system, and that the set of OS calls that invoke OS behaviors may be viewed as interactions with a runtime system.
> 
> 
> 

I understand that there has to be some kind of runtime environment, like the Linux Kernel, loading the compiled executable into memory, starting the process, allowing sub-threads and stuff like this. The kernel itself is written in `C` and can not be viewed as the "runtime system" of the `C` language. However, it provides functions like `malloc()` and `free()` which are essential parts of the runtime system.

**Q** So what exactly is the runtime system of `C` ? Is there any, not blurry, definition of it ? Is it a mixture of a self-standing kernel + Compiler ?