Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1169034
  • 博文数量: 234
  • 博客积分: 5592
  • 博客等级: 大校
  • 技术积分: 1987
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-23 14:12
文章分类

全部博文(234)

文章存档

2015年(1)

2013年(4)

2012年(16)

2011年(204)

2010年(9)

分类: Android平台

2013-04-28 09:21:56

An operating system has been a known quantity for the past several decades. It usually provided a known set of APIs which were called system calls. Yes, we did migrate to more secure operating systems with privileges. Yes, we do allow for virtualization. Yes, we do have multi threading and multi core architectures built into our operating systems. But these were just additions – nothing that changed the concept of how we look at an operating system.

In the past two years system calls have changed. They have become irrelevant. And this change can be attributed to the two innovative forces of industry, Apple and Google.

With the release of iPhone by Apple, a new paradigm has been introduced to the market, one in which user interfaces and controlled application stores are key. Google followed suite with Android, that has been adopted whole heartedly by both developers and users. This has caused a shift in the way we think about operating systems.

How do I know that? Just look at the architecture and makeup of .

The brave new world of operating systems

In a recent webinar that I have given about Android and video calling services, I tried emphasizing the fact that Android is different than the usual suspects of the operating system world:

There’s a debate that I hear every once in a while around the issue of what is Android: is it Linux or is it… Android. My answer – it’s Android.

Yes, it is based on Linux. Yes, it can be considered as an Embedded Linux variant. No, you can’t treat it as you do any other Linux variant.

Up until today requirements from operating systems were quite rudimentary: a memory allocator, file system access, a bit of multi-threading functionality and that’s about it (I might missed a few, but flow with me).

Nowadays, operating systems offer a lot more:

  • Browser – a built-in browser engine that can be used to build applications on top
  • User Interface – one that comes with a whole application development framework and not only a way to place buttons and labels in a window frame
  • 3D graphics and visualization
  • Application development paradigm that is hooked up to an application store
  • Over The Air (OTA) updates – for the OS itself and for third party applications

Why is this paradigm different? Because it splits the developers that use the OS into two camps: those who build the device itself and need to deal with the operating system’s internals and those who are application developers, who need (must?) use the offered application framework.

The examples we have for this today come from the mobile world, but I have a feeling that this new paradigm is going to proliferate into all desktop/personal based operating systems in the future.

Google Android

Android’s architecture is an overused slide as it is, but it does goes to show how different it is than Linux:


Android operating system architecture

As can be seen, Linux is part of this architecture, but it is a low level thing. Same as you don’t view Apple’s OS X as a Linux OS, you shouldn’t view Android as such – most developers don’t have access to this level.

Due to the fact that this operating system needs to run on different types of hardware, Google have decided to go for Java development when it comes to applications. This is why the Application Framework and the Applications domain marked in blue in the figure above are all written in Java. To that end, Google have implemented their Dalvik virtual machine that runs Java bytecode.

Application developers are limited to the upper blue area, while device manufacturers need to tweak and run their code on all levels of this architecture.

Mircosoft Windows Phone 7

Windows Phone 7 is a new operating system that hasn’t been released yet. Whatever I could glean about it came from the :


Windows Phone 7 architecture

If you try hard enough, you will be able to almost map the Windows Phone 7 architecture into the Android one.

Application developers are expected to use Silverlight, XNA and/or HTML/JS when they work on Windows Phone 7.

As with Android, this operating system is designed to work with multiple hardware platforms and chipsets, so applications developers need to be able to “compile” on runtime. Microsoft opted for using C# as its main development language and compiling it all over its CLR (=virtual machine similar to Android’s Dalvik VM).

There’s a lot more that you can find in the .

Apple iOS

The Apple iOS is a bit different than my first two examples, mainly because the OS and the end product are both developed and controlled by Apple. There is no way to get iOS to run on your own device.

It also means that in the iOS domain, you can only be an application developer.

While much is available on iOS, there’s one thing that I found rather missing – a diagram that shows visually the architecture of the operating system. The best I could find on Apple’s website is this:


Mapping of Cocoa into iOS architecture (source: Apple)

Cocoa is Apple’s UI framework which is what developers interact with, and the main development language is Objective-C.

In Apple’s case, there is no real need for a virtual machine as they control the whole environment – from chip to application to the final device.

The new OS interfaces

Here’s how each of these operating systems view the new services they have to deal with:

Google Android Microsoft Windows Phone 7 Apple iOS
Application Store Android Market App Marketplace AppStore
User Interface Java Application Framework Silverlight Cocoa
Browser Webkit Internet Explorer Webkit
3D Graphics OpenGL DirectX OpenGL
Main programming language Java C# Objective-C
Virtual machine Dalvik VM CLR None

There are additional services that are offered by these operating systems that I skipped in this post (such as message passing, application privileges in the system, built-in communication applications, etc). Suffice to say that operating systems are both changing and growing in recent years.

阅读(2080) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~