Originally posted by pal666
View Post
Plus, when the purpose of your kernel is constrained you need a lot less manpower than what you need for something that's expected to be useful in many scenarios.
Think this:
- You don't need SysV IPC, you use Binder for everything;
- You don't need a myriad of architectures, you can for example restrict to little endian, which covers pretty much all consumer hardware other than routers;
- You can go further and only implement ARM support (even if you need the design to be flexible enough to add other architectures later), because it'll run on cellphones only and x86 failed there;
- Drivers? Most of them are up to the OEM to provide;
- Filesystems? One for internal storage, FAT for interoperability;
- No memory hotplug;
- No huge number of network protocols, just Unix, TCP and UDP probably;
- No BPF or only the classic version in case you need to debug packet flow;
- No floppy, ATA, CD-ROM, KVM, etc...
Essentially, making a kernel for Android only means you no longer need to support a lot of stuff, and also that you can break a lot of things safely because you control the userspace too. That makes it much cheaper to develop it than you would think.
Comment