CLR is .NET equivalent of Java Virtual Machine (JVM). It is the runtime that converts a MSIL code into the host machine language code, which is then executed appropriately.
The CLR is the execution engine for .NET Framework applications. It provides a number of services, including:
Code management (loading and execution)
Application memory isolation
Verification of type safety
Conversion of IL to native code.
Access to metadata (enhanced type information)
Managing memory for managed objects
Enforcement of code access security
Exception handling, including cross-language exceptions
Interoperation between managed code, COM objects, and pre-existing DLL's (unmanaged code and data)
Automation of object layout
Support for developer
Services (profiling, debugging, and so on).