Kernel is a very small part of the entire operating system, according to Google's research and development capabilities, really want to develop a kernel is not that difficult? Is it really hard to develop the kernel, or is Google using the Linux kernel for Android based on some considerations?
Reply content:
Not Google chose Linux, but Andy Rubin started to do Android to choose Linux, then the small team of dozens of people, the application framework can be made to make the phone is good, which has the energy to invent the OS, choose a mature open source and everyone will use the kernel, only Linux.
...... First of all, I'm going to have to spit out a kernel that's not hard to write. If it's all from scratch Android, this framwork is not an order of magnitude compared to the Linux kernel. You think kernel is simply because Linux kernel is doing so well that you don't feel it.
And Android itself this is still in the perpetual beta version of the Linux kernel stability is the Android can match
Why did the Android team choose Linux before? Maybe because the board they bought at the time only supported Linux.
...... A joke is in fact the following reasons:
1.linux has a wide range of use, in the embedded market since ARM9 has begun to mature
2. Own Open source
3. Non-GPL open source libraries are many, open source license is a very troublesome matter
Open Source license is a deadly thing for commercialization ... Why no one mentions ...
It's not hard to develop a kernel, but it's hard to get thousands of devices to drive it. It was a huge, almost impossible task.
Apple can self-research the kernel, because Apple only needs to drive a very limited number of devices. Convince a handful of these device vendors to develop Apple drivers, or even develop them on their own.
Windows can self-study the kernel, because it's probably the most device-driven thing on the planet.
So what is the most power-driven hardware device in addition to Windows? The answer is Linux.
So Android must only choose Linux as the kernel, there is no other option.
The answer is because I want to vomit a little bit to praise the most @pansz answer.
On the contrary, the hardest part of Linux is its kernel. As a person who has written m device drivers under N open source or non-open source embedded systems, I would say that device-driven writing is definitely a hanging thread.
Secondly, the embedded device does not need to be at the same time to hold what thousands of devices, unlike a computer, you change the sound card to reload the driver is OK. You can put your phone screen for a different model to try, hardware interface is not the same, the software needs to do support?
Again, the peripherals needed in the phone are not as exaggerated as the thousands.
now answer the main question. Why Google wants to use Linux.
1, don't take Google and Apple analogies. Two of them are not the same company.
Google is an internet company, and Google relies on services to make money. And Apple is the device vendor. Apple is doing what Apple believes is the most user-friendly device to make money with devices, and Apple's software is for Apple's devices.
2, smart devices require a multitasking operating system with excellent management capabilities. No one is going to pay you to start developing such a system from scratch. That's a lot of difficulty.
3, not Google chose Linux. Google chose Android, and Anroid chose Linux. Of course, if Android didn't use an open source system for the year. Google does not necessarily choose it.
4, a stable, open source, the world has many engineers to help you upgrade the maintenance of the system free of charge. Is it not the best choice for an internet company?
5,linux is powerful, and many of its feature can meet Android's needs. and free of charge for maintenance. I think this is the reason why Android initially chose Linux. Or before Android was called Android, the reason for Linux was chosen. Please look at the 6th article.
6, finally, tell a story. Once a sun bull jumped to the moto (or it could have been dug). Because it is sun out of the people, to Moto built a project, the bottom is C (do not remember is not Linux) Upper Java system for mobile phones. That era or moto is the industry's oldest era. All the mobile phone systems (including the interface) are written in C, the wood has C + +, more wood has java. That era of mobile phone CPU 26M is relatively fast, imagine, in such processing capacity, first run a C system, then run a virtual machine, then run Java what is the feeling? The bug in that project was flying around. Finally, the project was finally hung up in Moto, and Daniel naturally left. And then finally, this Daniel to Google. In my opinion, the short answer is three words:
no need .。
Here are three ways to start:
from a technical point of view,, at the operating system level, the Linux operating system can not do, or can not do a good place in Google is actually very clear, there are corresponding relatively good response measures, so technically there is no such power;
from the point of view of business cooperation, Google as a pure software provider, in order to try to bring the hardware manufacturers around their own, in order to form a solid ecosystem, it is necessary to consider from the perspective of hardware manufacturers, Linux as a has been a practice and time testing, stability and performance have been recognized, And the hardware manufacturers have already had a certain technical reserves, obviously hardware manufacturers are willing to have a certain grasp of the things done under the Platform for Development, so that their technical risk controllable. At the same time, the Linux system is not directly controlled by Google, it is also easier for manufacturers to reduce their vigilance (third-party vendors are not stupid, although they may believe that Google's technical capabilities, but 100% will consider the problem: if I do well, Google you will not directly to rob our fruit AH), so that the surrounding manufacturers put more energy on this platform.
from Google's own perspective,, Google itself must feel more adept at searching and doing the platform (Google search is also a platform), so from the "weaknesses" of the point of view, Google wants to move in this field has a greater voice, certainly will not like Intel, Qualcomm, participate in the " The 18-month transistor doubling "in the hardware race, instead wants to control it from the point of view of the software's entry (i.e. operating system, or application). From a technical point of view,
Google uses the adapter mode (adapter mode) in design mode to handle the relationship between Android and Linux systems(In fact, you can see from the Chrome OS and Linux, Chrome browser and WebKit core of the matter, Google to deal with this problem is the same technical approach, AH),
the importance of Linux on mobile platforms is greatly reduced. At the same time, Google also through the more lethal Google app, so that Google services users of heavy users will eventually be difficult to leave. This way, Google can pro to copy its own success before the money (from advertisers to make money)
P.S:
@ chenchen classmate mentioned the Apple kernel is his own development, this is wrong, at least not completely, aside from the early MacOS does not say that MAC OS x kernel code directly from BSD, of course, Apple has made targeted changes, but it is Apple's own development, which is not true. For the correct statement, refer to the Wikipedia statement on FreeBSD:
Mac OS X Server includes the latest technological advances from the open source BSD community. Originally developed at the University of California, Berkeley, the BSD distribution are the foundation of most UNIX Implem Entations today. Mac OS X Server is based largely on the FreeBSD distribution and includes the latest advances from this development commun ity.
-"Apple Mac OS X Server Snow leopard-unix:open Source Foundation"
In addition, you can learn about the relationship between Mac OS X and Mach from this blog: / http DOLGOPA.WORDPRESS.COM/2 010/04/14/jordan-k-hubbard-freebsd-relation-between-freebsd-and-mac-osx/
Seeing everyone's reply, I think I can answer this question from another angle. Need to know two questions, what is the system kernel? What did he do? How good is it to spend your energy on developing your own kernel?
About the role of the kernel I think the landlord must be very clear, simple to say is to provide process management, file network management, system security rights management, as well as the system and hardware equipment communication Foundation. On a highly-dependent, multi-layered operating system such as Android or iOS, the kernel is almost invisible to the upper-level developer and can only be manipulated by opening the framework interface to you.
So we can say that the kernel is fundamental to the whole system, not functionality. For the entire Android project, its Dalvik [including the new arts] and the main interaction, functional framework is the most important.
Besides, how good is the development of the kernel, or how high the cost of the problem.
As the basis of the whole system, the efficient and stable core can be said to be heavy, and any software development to go through an iterative process, Microsoft Development NT kernel cost a lot of money and time, and still continue to improve and maintain is the best example of this kind of iteration. Even so, after nearly 10 years of development and maintenance, the efficiency and functionality of the NT kernel is still weaker than Linux. Due to the open source nature of Linux, a large number of individuals and enterprises to continue to maintain and improve it is a major reason for Linux to stay ahead, and Microsoft has its own power can not be comparable. This is actually telling you that in the premise of having open source Linux, it is actually a thankless task to develop your own system kernel. And the previous Android team or Google Now do not have their own existing system kernel projects, so the use of source Linux is naturally saving time and money and insurance options. And as for why Microsoft is on the path of NT, I think it will have its own reason, such as the system has full control, etc., do not do a hypothetical discussion here.
In addition, it is worth mentioning that "Apple's self-developed core" is actually inaccurate. iOS and OSX are essentially UNIX-based cores. is also regarded as "industry practice".
Thirdly, software and building reuse are also the usual means in open source software. Using well-maintained open source projects is critical to the stability and functionality of software systems. Why do you invent the wheel again? Opposing the answer to the driven dependency theory. The driver is not a major problem, or not the biggest. Because the phone is not a traditional PC, many of the devices are custom-made and will have to be rewritten.
The myriad of libraries and networking components around Linux is a big problem.
If you do not use the Linux kernel, these complex and involved in all areas of knowledge of the library will be transplanted or even rewritten, this is not worth the candle.
Conversely, if Google is going to make a kernel of its own, it will also write a basic Linux-compatible system for the reasons of these libraries. From the system development layering and difficulty, since there is open source Linux, why do you have to develop the kernel itself? As if we play some games, there are Windows system can run directly, not a few manufacturers will be to re-develop the underlying system. Even the game console, in fact, his operating system and function library are readily available, game developers only need to write the program according to the function of the system. This is a good way to reduce the development difficulty and cost.
P.S: Please allow me to spit the groove
@ Tech Hot-Z
Android is essentially a Java virtual machine running on top of the Linux kernel
Google uses only kernel, and nothing else is useless. This means that compared to traditional Linux distributions such as Ubuntu, Debian, and Redhat, only the underlying structure of the system is the same, and everything else is different on Android, especially the programmer's programming interface. As a result, Android applications must be re-written, and existing Linux programs cannot be ported up. So, in a strict sense, Android is a completely new system, its distance from Linux is farther than Mac OS and Linux.
Kernel and Android licenses are not the same, the former is the GPL license, the latter is the Apache software License (ASL) license. The GPL license stipulates that any changes to the source code must be open source, so Android is open source because it modifies the kernel. The ASL license stipulates that you can use the source code at will, do not open source, so the building on Android hardware drivers and applications, can remain closed. In order to get more support from the vendors, Google intentionally chose to do so, and deliberately modified kernel, so that some of the features that should have been included in the kernel, have been transferred to userspace, so to avoid open source. You can refer to one of Robert Love's answers on Quora: Android (OS): What is the major changes that Android made to the Linux kernel?
Modify the kernel as little as possible and get rid of the existing UNIX desktop legacy as much as possible, which is a feature of Android compared to some other mobile devices (typically like Meego).