Course Project Proposal: The Android OS

As the involvement of technology and users demands, modern mobile phones no longer function merely as phoning and texting devices. Instead, they can offer many advanced capabilities with PC-like functionality. Typical applications that can be run on a mobile include multimedia applications like playing music, making photos and videos, Internet applications like email and web browsing, or entertainment applications like gaming. With the presence of these complicated applications, an independent operating system is obviously needed for each mobile device. Therefore, many mobile operating systems have been developed and used in the market so far. The most common ones among them include Symbian OS from Symbian Ltd. (47.1% Market Share Sales), RIM BlackBerry operating system (19.5% Market Share Sales), Windows Mobile from Microsoft (12.4% Market Share Sales), and iPhone OS from Apple Inc. (10.7% Market Share Sales) [3]. However, the mobile OS is still a very promising market with increasing demand of mobile users for it. There are still several limitations for the current mobile OSes. First, some of them, like iPhone and BlackBerry OS, are designed for and can be used only in specific types of mobile devices. Second, expert users may need to develop their own applications that require an open platform. Closed source systems such as Windows Mobile are not flexible enough for this purpose. Finally, another important reason is that people want their cell phone functioning like a PC in that whatever they can access on a desktop, they should also be able to access on their cell phones. Therefore, an operating system running on a cell phone should be similar to a common desktop operating system. Symbian OS, while having the largest market share, is not. For all above reasons, on 21 Oct 2008, Google released Android, an open source software platform and operating system, which can run on every mobile device, with the hope of reaching as many mobile users as possible. Android is based on the Linux 2.6 kernel, and it provides an open platform for users to develop their own applications in the Java programming language. Although Android uses the Linux 2.6 kernel, there are significant differences between Android platform stack and the conventional desktop Linux stack. In fact, it is claimed by Google engineer Patrick Brady in a presentation at the Google IO conference that Android is not Linux. Therefore, in this project, we would like to investigate the Android kernel source code to see the differences between the way Android kernel manages CPU, memory, and other resources, and those in Linux 2.6 kernel. In addition, if we still have enough time, we would like to compare Android with other mobile OS such as Symbian OS, Windows Mobile and iPhone OS and the approaches they use for resource management.