I read from somewhere that Android uses the Linux Kernel. Is it really true? I thought the Linux Kernel was meant for desktop operating systems.
Linux – Does Android really use the same kernel as Linux
linux-kernel
Related Solutions
There is absolutely no difference between a thread and a process on Linux. If you look at clone(2) you will see a set of flags that determine what is shared, and what is not shared, between the threads.
Classic processes are just threads that share nothing; you can share what components you want under Linux.
This is not the case on other OS implementations, where there are much more substantial differences.
Parameters passed on the kernel command line don’t have to be meaningful for the kernel: the kernel parameters documentation says
The kernel parses parameters from the kernel command line up to “--”; if it doesn’t recognize a parameter and it doesn’t contain a ‘.’, the parameter gets passed to init: parameters with ‘=’ go into init’s environment, others are passed as command line arguments to init. Everything after “--” is passed as an argument to init.
This doesn’t apply to init
and root
which really are kernel parameters, and are handled by the kernel. They can also be acted upon by user-space, since they appear in /proc/cmdline
. (Thus for example systemd takes the quiet
kernel parameter into account to reduce its output.)
When the kernel is booted with an initramfs, the root
parameter isn’t used by the kernel directly, and the init
parameter is only used if rdinit
fails. init
startup is handled in kernel_init
, which works as follows:
- if there’s a “ramdisk execute command” (either the value given to
rdinit
on the kernel command line, or/init
) which is accessible, the kernel attempts to run that; - if that fails, and there’s an “execute command” (the value given to
init
on the kernel command line), the kernel attempts to run that, and panics if it can’t; - as a last resort, the kernel tries to run
/sbin/init
,/etc/init
,/bin/init
, and/bin/sh
; if none of those can be run, it panics.
When there’s an initramfs, all of this happens there, and the target volume isn’t mounted by the kernel. What happens after the kernel runs the first init
program (typically, the /init
script in the initramfs) is up to the program, not the kernel. Arguments which aren’t passed to init
are still available in /proc/cmdline
if the /proc
file system is mounted.
Best Answer
Architecture of Android
Android relies on Linux for core system services such as security, memory management, process management, network stack, and driver model. The kernel also acts as an abstraction layer between the hardware and the rest of the software stack.
Latest Android runs Linux version 3.10 (source).
And my comment on your second sentence is that Linux Kernel is not meant for only desktop operating systems. Its use cases vary from Desktop OS to Servers, mainframes and supercomputers to Embedded Devices.
Linux is a widely ported operating system kernel. Due to its low cost and ease of customization, the Linux kernel is used on a highly diverse range of computer architectures: in the hand-held devices and the mainframe Systems, in devices ranging from mobile phones to supercomputers.
On the other note: Palm (later acquired by HP) use Linux-derived operating system, webOS, which is used into its line of Palm Pre smartphones. Several network firewalls and routers from makers such as Cisco/Linksys use customized linux kernel. There are tons of devices out there which are using embedded linux.