This is a one stop thread for Mi 5. Here you can go through some of the pertinent threads.
Flashing involves the overwriting of existing firmware or data, contained in EEPROMorFlashing Memory modules present in an electronic device, with new data.This can be done to upgrade a device or to change the provider of a service associated with the function of the device, such as changing from one mobile phone service provider to another or installing a new operating system. If firmware is upgradable, it is often done via a program from the provider, and will often allow the old firmware to be saved before upgrading so it can be reverted to if the process fails, or if the newer version performs worse.
The kernel provides the lowest-level abstraction layer for the resources (processors and In/Output devices) and is responsible for managing the system’s resources. Apps can talk through the kernel to the various hardware components in the system.To run an app, the kernel usually sets up an “address space” for that app, and loads the app into memory. The app must run inside this address space. If it tries to run outside of that space an exception is thrown. Using this structure an operating system tries to protect itself from malicious code being run. That’s why most viruses and other nasty code exploits vulnerabilities in apps that already have the full faith and trust of the end-user and the kernel.
Credit goes to all the authors of these threads.This thread will be updated time to time.