Sandun, I guess you mean running Micro Linux type OS on microcontrollers. Micro Linux (there are some other embedded OSs such as RTOS) might good on powerful chips such as ARM, DSPs, etc... But on a uC with a small flash memory (ex: 4K), it would be impossible to run even the Kernel. Direct machine language execution, threading through interrupts/timers are the common practices with such small devices. Almost all good programming practices must be applied when you work on them. Dev time code optimisation is one of the most important things. If one need to become a good quality C/C++/ASM programmer, I would recommend to work on such little uCs (There is less room for mistakes with them).
SDCC only works on Intel 8051, Maxim 80DS390, Zilog Z80 and the Motorola 68HC08 based MCUs at the moment. They are still working on Microchip PIC16 and PIC18 series. There are more PICs such as 12 series and dsPIC that are widely used nowadays which they need to plan. Also, Atmel which known as the most reliable uC for professional applications, need to be addressed. However, I guess they will address them in future.
HI-TECH has a free version that comes with MPLab (for PICs). It might not be good for professional projects since the optimisations is not good. But for a beginner HI-TECH free version is more than enough.
I would also like to ask beginners to learn assembly language (ASM) on PIC in parallel to C/C++. It is nice to write codes with a few ASM instructions (due to RISC architecture of most uCs). When I say C++, don't misunderstand with OOP side of it. In the embedded world OOP is a white elephant. On small chips with less memory, dynamic memory allocation (which is essential in OOP environment), garbage collection are just a few nightmare to achieve.
Gihan, If you already have Mikro C (that comes with its own IDE), then it is okay to work with that.