2010-12-01 17 views
0

私はAndroidのカーネルでいくつかのケーススタディを書くつもりでした。これは、Advanced Operating systemsクラスの私のカリキュラムの一部です。 私が欲しかった主な焦点は、プライオリティキューがどのRTOSで実装されているかをクラスで学んだ理論に関連付けるための実際の実装でした。 しかし、私は情報を見つけることは本当に大きなアイデアを持っているのではなく、大きな仕事であることを知りました。 : だから私はどちらかに制限したい 1.非常に具体的なカーネル(プロセスまたはメモリ) または 2. AndroidとLinux OSの違い 私が観察したことは、私は実用的な違いだった何を望むかそれらの両方が、与えられたデータでも、私の教科書で見ることができます。上の情報。Android OSカーネル関連のクエリ

私は方向にいくつかのポインタを得ることになる願っています。へ

答えて

0

良い方法学習を開始するには、Androidのgitリポジトリ:https://android.googlesource.com

ここにいくつかの政治がありますが、最終的にあなた自身のためのリンクが増えています:http://www.kroah.com/log/linux/android-kernel-problems.html

+0

リンク先の書き込みに重大な間違いがあります。 Binderはセキュリティモデルではなく、OpenBinderはAndroidで使われているものにリンクしていません(アンドロイドは基本的なメカニズムだけを共有する極端に単純化されたバージョンを持っています、特に発見メカニズムはありません)。カーネルのデバイスドライバも、カーネルの他のものもBinderに依存しません。これは、ユーザーモードのOSとアプリケーションサービスのためのツールです。また、カーネルセキュリティモデルの方法では、実際には斬新なもの、つまりネットワークなどの特権のカーネル実施のための特定のユーザーグループのハードコーディングが欠落しています。 –

+0

OK - 私は完全にそれを読まなかったことを認めなければなりません。どうも。 –

2

Android LinuxカーネルとメインラインLinuxカーネルは近いです。いくつかの重要な違いがあります:

  1. Androidには、メジャーwakelockパッチが適用されています。これらはメインラインではありません。 Googleはこの問題について数年前に明らかにする必要があります。
  2. Androidはbinderセキュリティモデルを持っており、メインラインはありません。
  3. Androidには、SurfaceFlingerをサポートするための新しいフレームバッファがすべて用意されています。
  4. 電話機のハードウェアサポート。メインラインカーネルは、すべてのARMプロセッサとデバイスを直接サポートしていません。 AndroidカーネルツリーはMainline + ARM(OMAP)+ Vendorパッチのアマルガムを考慮してください。
  5. 特定の埋め込みチューニング。

しかし、コードの95%はMainline LinuxとAndroid Linuxで同じです。 AndroidはRTOSではありません(RTパートは無線モジュール上の別のプロセッサで処理されます)。

+0

良い答え。 1つの訂正:バインダーはセキュリティに関するものではなくIPCに関するものです.OneはAndroidのセキュリティーモデルも異なりますが、それはカーネルではなくOSによって処理されると主張できます。このリストには、プロセス間でメモリを共有するためのashmemもあります。他にもいくつかの違いがありますが、どちらかと言えば小さいです。 – Robert

+0

OK、私はあなたが言いたいことを得たと思う。もしアンドロイドがRTOSでないなら、私はプロセスやメモリの実装がどのように行われているかについて、私のケーススタディを行います。いくつかのリンクやいくつかのコードウォークスルーを教えてください。私が見つけることができるものは、(私がすでに学んだ私の教科書のように)何かの定義か、リポジトリ内のハードコアコード(理解しにくい)のいずれかです。私が勉強しているものと実際にカーネル内で何が起こっているのかを簡単に関連付ける方法はありますか?私はこれがbizzareかもしれないことを知っているが、私は開始する中間点が必要です。 – sandeep