SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
Androidの中身
                           第26回NaCl社内勉強会

                              中村 成洋
                          ネットワーク応用通信研究所



Powered by Rabbit 0.6.1
今日のアジェンダ
今日のアジェンダ
 Androidの中身の話
 DalvikVMについて少し




                  2/19
Androidの中身
Linuxカーネル
 基本的にLinuxカーネルのみ使っている
 たとえばglibcは同梱していない
 bionicというBSD libcを改良したものを使
 う
  mallocはdlmalloc




                          4/19
Linuxデバイスドライバ
 ashmem
   Anonymous Shared Memory Subsystem(無
   名共有メモリサブシステム)
   このデバイスに対してmmapするとtmpfs経由で
   メモリ確保できる
   pin,unpinで簡単にキャッシュの実装ができるらし
   い
   Javaレベルからは「android.os.MemoryFile」で
   つかえる
                                     5/19
ashmemの便利なシーン
 Javaはメモリ管理が隠蔽されてしまっている
 組み込みでは困ることもあるよね
  OSからメモリを取って直接管理したいとか

 そんなときに使えそう




                         6/19
マルチタスク
 iPhoneはシングルタスク。。
 Androidはマルチタスク!
  ってか、これが普通なんですよね?




                     7/19
実現方法
 Linuxのfork()を使うよ
 1アプリ、1プロセス
 スレッドとかではない




                    8/19
なんでforkか?
 安全だから
 アプリに問題があって落ちても他のプロセス
 に影響を与えにくい
 Linuxにその辺り任せとけばいいじゃん




                        9/19
DalvikVM
DalvikVMって何?
 Android上のVM
 アプリはこのVM上で動作する




                  11/19
DalvikVM作者
 Dan Bornstein作
   Dalvikはアイスランド語
   「谷間の入り江」って意味
   地名




                    12/19
特徴
 JVMじゃない
  Javaバイトコードを使わない

 .dexファイルという独自形式のバイトコード
  jarを更に圧縮したようなファイル構成になってい
  るそう




                        13/19
特徴(2)
 レジスタマシン
  最近の主流はスタックマシン




                  14/19
なぜレジスタマシン?
 端末がARMなんで〜
 レジスタマシンにした方が効率いいし〜
  VM演算部分は全部ARMアセンブラで書いている
  最近はx86にも対応してる




                       15/19
特徴(3)
 GCは「マークスイープ」
  マークはBitmapMarking




                      16/19
なぜBitmapMarkingか?
 copy-on-write問題
   あれ、なんか聞いたことある。。

 アプリforkしまくり
 GCでマークすると共有メモリが私有領域に
 コピーされちゃう
 BitmapMarkingしましょう

                      17/19
詳細はGC本を待て!
おしまい

Contenu connexe

Tendances

Web技術勉強会9回目2(Slideshare用)
Web技術勉強会9回目2(Slideshare用)Web技術勉強会9回目2(Slideshare用)
Web技術勉強会9回目2(Slideshare用)龍一 田中
 
CAPとBASEとEventually Consistent
CAPとBASEとEventually ConsistentCAPとBASEとEventually Consistent
CAPとBASEとEventually ConsistentYohei Yamamoto
 
ケータイサイトのはなし(入門編)
ケータイサイトのはなし(入門編)ケータイサイトのはなし(入門編)
ケータイサイトのはなし(入門編)Kentaro Matsui
 
第23回WebSig会議「ストレスフリーのWebプロジェクト Web担当者に出来ること、制作会社に望むこと 」
第23回WebSig会議「ストレスフリーのWebプロジェクト Web担当者に出来ること、制作会社に望むこと 」第23回WebSig会議「ストレスフリーのWebプロジェクト Web担当者に出来ること、制作会社に望むこと 」
第23回WebSig会議「ストレスフリーのWebプロジェクト Web担当者に出来ること、制作会社に望むこと 」WebSig24/7
 
ประวัติปฏิณญา
ประวัติปฏิณญาประวัติปฏิณญา
ประวัติปฏิณญาBAMBU Lee
 
イケテルRuby開発環境
イケテルRuby開発環境イケテルRuby開発環境
イケテルRuby開発環境mokada
 
Howtousenetboss
HowtousenetbossHowtousenetboss
Howtousenetbosskumee
 
How To Survive In A Company As A Mac
How To Survive In A Company As A MacHow To Survive In A Company As A Mac
How To Survive In A Company As A MacKeynote User Group
 
말레이시아 Ytl증권서비스방향
말레이시아 Ytl증권서비스방향말레이시아 Ytl증권서비스방향
말레이시아 Ytl증권서비스방향youngmin kim
 
Ppt Pdf
Ppt PdfPpt Pdf
Ppt Pdfkumee
 
Solutions@ Web Slides (Chinese)
Solutions@ Web Slides (Chinese)Solutions@ Web Slides (Chinese)
Solutions@ Web Slides (Chinese)webbssolutionsasia
 
每隻I Phone平均裝53個應用程式
每隻I Phone平均裝53個應用程式每隻I Phone平均裝53個應用程式
每隻I Phone平均裝53個應用程式juniboy
 
European soccer and money
European soccer and moneyEuropean soccer and money
European soccer and moneySeijiHAMAGUCHI
 
FOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript ProgrammingFOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript Programminggyuque
 
Calendar
CalendarCalendar
Calendarkumee
 
Do The Debian Live!
Do The Debian Live!Do The Debian Live!
Do The Debian Live!Jun Nogata
 
経緯度・エリアマッチング技術(080730第2回ジオメディアサミットライトニングトーク)
経緯度・エリアマッチング技術(080730第2回ジオメディアサミットライトニングトーク)経緯度・エリアマッチング技術(080730第2回ジオメディアサミットライトニングトーク)
経緯度・エリアマッチング技術(080730第2回ジオメディアサミットライトニングトーク)Kohei Otsuka
 
ICTA Project
ICTA ProjectICTA Project
ICTA Projecthirogami
 
コンサルティングと私 Lightning Talk
コンサルティングと私 Lightning Talkコンサルティングと私 Lightning Talk
コンサルティングと私 Lightning Talkbose999
 

Tendances (20)

Web技術勉強会9回目2(Slideshare用)
Web技術勉強会9回目2(Slideshare用)Web技術勉強会9回目2(Slideshare用)
Web技術勉強会9回目2(Slideshare用)
 
CAPとBASEとEventually Consistent
CAPとBASEとEventually ConsistentCAPとBASEとEventually Consistent
CAPとBASEとEventually Consistent
 
ケータイサイトのはなし(入門編)
ケータイサイトのはなし(入門編)ケータイサイトのはなし(入門編)
ケータイサイトのはなし(入門編)
 
第23回WebSig会議「ストレスフリーのWebプロジェクト Web担当者に出来ること、制作会社に望むこと 」
第23回WebSig会議「ストレスフリーのWebプロジェクト Web担当者に出来ること、制作会社に望むこと 」第23回WebSig会議「ストレスフリーのWebプロジェクト Web担当者に出来ること、制作会社に望むこと 」
第23回WebSig会議「ストレスフリーのWebプロジェクト Web担当者に出来ること、制作会社に望むこと 」
 
ประวัติปฏิณญา
ประวัติปฏิณญาประวัติปฏิณญา
ประวัติปฏิณญา
 
イケテルRuby開発環境
イケテルRuby開発環境イケテルRuby開発環境
イケテルRuby開発環境
 
Howtousenetboss
HowtousenetbossHowtousenetboss
Howtousenetboss
 
How To Survive In A Company As A Mac
How To Survive In A Company As A MacHow To Survive In A Company As A Mac
How To Survive In A Company As A Mac
 
말레이시아 Ytl증권서비스방향
말레이시아 Ytl증권서비스방향말레이시아 Ytl증권서비스방향
말레이시아 Ytl증권서비스방향
 
Ppt Pdf
Ppt PdfPpt Pdf
Ppt Pdf
 
Solutions@ Web Slides (Chinese)
Solutions@ Web Slides (Chinese)Solutions@ Web Slides (Chinese)
Solutions@ Web Slides (Chinese)
 
每隻I Phone平均裝53個應用程式
每隻I Phone平均裝53個應用程式每隻I Phone平均裝53個應用程式
每隻I Phone平均裝53個應用程式
 
European soccer and money
European soccer and moneyEuropean soccer and money
European soccer and money
 
FOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript ProgrammingFOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript Programming
 
Calendar
CalendarCalendar
Calendar
 
Ppt Pdf
Ppt PdfPpt Pdf
Ppt Pdf
 
Do The Debian Live!
Do The Debian Live!Do The Debian Live!
Do The Debian Live!
 
経緯度・エリアマッチング技術(080730第2回ジオメディアサミットライトニングトーク)
経緯度・エリアマッチング技術(080730第2回ジオメディアサミットライトニングトーク)経緯度・エリアマッチング技術(080730第2回ジオメディアサミットライトニングトーク)
経緯度・エリアマッチング技術(080730第2回ジオメディアサミットライトニングトーク)
 
ICTA Project
ICTA ProjectICTA Project
ICTA Project
 
コンサルティングと私 Lightning Talk
コンサルティングと私 Lightning Talkコンサルティングと私 Lightning Talk
コンサルティングと私 Lightning Talk
 

En vedette

Pf部第24回資料
Pf部第24回資料Pf部第24回資料
Pf部第24回資料daye001
 
Binderのはじめの一歩
Binderのはじめの一歩Binderのはじめの一歩
Binderのはじめの一歩l_b__
 
Androidアプリ解析の基礎 公開用
Androidアプリ解析の基礎 公開用Androidアプリ解析の基礎 公開用
Androidアプリ解析の基礎 公開用Lumin Hacker
 
Binderのはじめの一歩とAndroid
Binderのはじめの一歩とAndroidBinderのはじめの一歩とAndroid
Binderのはじめの一歩とAndroidl_b__
 
Behaviour of the track in hot weather. Rail thermal forces for jointed and CW...
Behaviour of the track in hot weather. Rail thermal forces for jointed and CW...Behaviour of the track in hot weather. Rail thermal forces for jointed and CW...
Behaviour of the track in hot weather. Rail thermal forces for jointed and CW...Constantin Ciobanu
 
Malwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malwareMalwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malwareAyase
 
Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催
Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催
Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催嶋 是一 (Yoshikazu SHIMA)
 
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)Hironov OKUYAMA
 

En vedette (10)

Bond の v4 について
Bond の v4 についてBond の v4 について
Bond の v4 について
 
Pf部第24回資料
Pf部第24回資料Pf部第24回資料
Pf部第24回資料
 
Binderのはじめの一歩
Binderのはじめの一歩Binderのはじめの一歩
Binderのはじめの一歩
 
Androidアプリ解析の基礎 公開用
Androidアプリ解析の基礎 公開用Androidアプリ解析の基礎 公開用
Androidアプリ解析の基礎 公開用
 
Binderのはじめの一歩とAndroid
Binderのはじめの一歩とAndroidBinderのはじめの一歩とAndroid
Binderのはじめの一歩とAndroid
 
Behaviour of the track in hot weather. Rail thermal forces for jointed and CW...
Behaviour of the track in hot weather. Rail thermal forces for jointed and CW...Behaviour of the track in hot weather. Rail thermal forces for jointed and CW...
Behaviour of the track in hot weather. Rail thermal forces for jointed and CW...
 
Malwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malwareMalwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malware
 
Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催
Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催
Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催
 
進化するArt
進化するArt進化するArt
進化するArt
 
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)
 

Plus de Narihiro Nakamura

Plus de Narihiro Nakamura (20)

Symbol GC
Symbol GCSymbol GC
Symbol GC
 
RUBYLAND
RUBYLANDRUBYLAND
RUBYLAND
 
Ruby's GC 20
Ruby's GC 20Ruby's GC 20
Ruby's GC 20
 
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
 
Rubyによる本気のGC
Rubyによる本気のGCRubyによる本気のGC
Rubyによる本気のGC
 
Fxxking gc.c
Fxxking gc.cFxxking gc.c
Fxxking gc.c
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
 
GC FAQ
GC FAQGC FAQ
GC FAQ
 
G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」
 
CRubyGCの並列世界
CRubyGCの並列世界CRubyGCの並列世界
CRubyGCの並列世界
 
円環の理(Garbage Collection)
円環の理(Garbage Collection)円環の理(Garbage Collection)
円環の理(Garbage Collection)
 
地獄のGC本スピンオフ
地獄のGC本スピンオフ地獄のGC本スピンオフ
地獄のGC本スピンオフ
 
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることシャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできること
 
われわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできるわれわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできる
 
GCが止まらない
GCが止まらないGCが止まらない
GCが止まらない
 
GC本をGCしないための100の方法
GC本をGCしないための100の方法GC本をGCしないための100の方法
GC本をGCしないための100の方法
 
GC生誕50周年を祝って
GC生誕50周年を祝ってGC生誕50周年を祝って
GC生誕50周年を祝って
 
GC本のツクリカタ
GC本のツクリカタGC本のツクリカタ
GC本のツクリカタ
 
シャイなRubyistにできること
シャイなRubyistにできることシャイなRubyistにできること
シャイなRubyistにできること
 

Androidの中身-第26回NaCl社内勉強会