Naver linuxkernel26 운영자 : 박 철

Slides:



Advertisements
Similar presentations
모바일 프로그래밍 개론 UNIT 01 로봇 SW 컨텐츠 교육원 조용수. 학습 목표 모바일 프로그래밍이란 ? Embedded System 특성 Mobile OS Hybrid and Native SDK and NDK 2.
Advertisements

CHAP. 2 안드로이드 개발 도구 설치. © 2012 생능출판사 All rights reserved 개발 과정의 개요.
Data Communication/Computer Network 관련 교과목의 내용
1 강. 안드로이드 개요 및 개발 환경 구축 - 안드로이드 개요 -JDK 설치 -Path 설정 - 이클립스 설치 -ADT, SDK 설치 Lecturer Kim Myoung-Ho Nickname 블스
Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
멀티미디어 신기술 세미나 프로젝트 제안서 김현철 김경률.
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
Page 1 Android Programming November 04 / 2009 S/W Junhyuk Jang.
2016 유성환 Hybrid MOBILE.
The Value Chain of Telecommunications Service
A n d r o i d Android 2010년 5월 19일 동서대학교 백선재
Open Platform을 기반으로 한 System SW 및 Application SW 전문가
Linux/UNIX Programming
1. 개발 시스템 개요.
GTK 프로그래밍 ( 1 ) SNSLAB 발표 : 문동규.
안드로이드 철학, Open Access.
2. 앱 개발환경 구축 Step by Step 안드로이드 프로그래밍 쉽게 시작하는 안드로이드 4.4 앱 개발.
Linux/UNIX Programming
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
Power Java 제3장 이클립스 사용하기.
A n d r o i d Android 2010 년 5월 19일 작성자 : 백 선 재.
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Cross Compiler를이용한 커널 컴파일 및 포팅
Power Java 제2장 자바 개발 도구.
제4장 Cross Compiler 설치.
임베디드 운영체제 (리눅스 중심) Lecture #2.
Linux를 이용한 Embedded 장비 개발
Linux/UNIX Programming
UNIT 06 JTAG Debugger 로봇 SW 교육원 조용수.
갤럭시 S를 이용한 자동차 원격 제어 시스템 담당교수 : 진현욱 교수님
운영체제 박상민.
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Java 기초 (Java JDK 설치 및 환경설정)
07. 디바이스 드라이버의 초기화와 종료 김진홍
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Root Filesystem Porting
C / C++ Programming in multi platform
Visual Basic .NET 처음 사용하기.
Root Filesystem Porting
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
부트로더와 Self Programming
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
Cross Compiler 설치.
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
1. MIDP란? 2. 하드웨어 사양 3. MIDlet 4. MIDlet Suite
CHAP 12. 리소스와 보안.
Cross Compiler를이용한 커널 컴파일 및 포팅
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Linux/UNIX Programming
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
Device Driver 임베디드 시스템 I.
Linux/UNIX Programming
제목소개 1. 안드로이드소개 2. 패킷캡쳐를 위한 환경 소개 3. ndk 소개 4. lipcap 5. 6.도식화 그림
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
모바일 자바 프로그래밍 J2ME 개발 살펴보기 Ps lab 오민경.
Linux/UNIX Programming
Linux/UNIX Programming
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
13차시_스마트 애플리케이션 기획 스마트 미디어의 사용환경과 사용자의 특성.
Linux/UNIX Programming
Wireless Java Programming
발표자 : 이지연 Programming Systems Lab.
CHAP 15. 데이터 스토리지.
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
JAVA 프로그래밍 16장 JNLP.
Linux/UNIX Programming
Presentation transcript:

Naver linuxkernel26 운영자 : 박 철 (e2g1234@naver.com) 구글 안드로이드 개요 Naver linuxkernel26 운영자 : 박 철 (e2g1234@naver.com)

Android Software platform developed by Google for mobile phone Free of charge Open source (Apache License except for kernel) Packaging OS to upper layer applications such as browser http://code.google.com/android/ http://www.openhandsetalliance.com/ Initial screen Browser Map

Android SW platform 구글의 전략 가시화 Smart phone 시장의 도래 2차 타깃 넷북 겨냥 모든 하드웨어에 들어갈 수 있는 개방형 플랫폼 '안드로이드'를 무기로 웹 세상을 장악하려는 구글의 전략 Smart phone 시장의 도래 현재 구글은 안드로이드 스마트폰에만 적용해 상용화 한 상태 2차 타깃 넷북 겨냥 PC 업체들과 협력 중 셋톱박스 및 다양한 기기 올해 10월 열릴 일본 최대 전자 전시회 '씨텍 2009(CEATEC 2009)'에서 안드로이드를 탑재한 셋톱를 전시할 예정 MS 의 폐쇄용 SW platform대비됨 개방형 오픈 SW platform 안드로이드를 채택하는 기기가 무한 늘어날 수 있는 가장 큰 이유 핸드폰 시장 흐름의 재편 전반적인 임베디드 시스템의 변화 휴대폰 뿐 아니라 TV, 셋톱박스, VoIP단말, 디지털액자 등 다양한 기기에 탑재돼 시판될 전망이다. 최근 미국의 주요 통신사는 안드로이드를 탑재한 집전화 서비스를 준비하고 있다고 밝히기도 했다.

SW platform 별 smart phone 출처 : omokomok.tistory.com

SW platform별 비교 출처 : omokomok.tistory.com

Program model CPU(S3C6410) Memory(DDR) Write back Memory access Reg loading Excute #include <stdio.h> int main() { printf(“Hello~ \n”); return 0; } Write back “Stack” Section hello.c (Source) Memory access “BSS” Section Reg arm-gcc (Compiler) “Data” Section excute Decode “Text” Section PC fetch hello (ELF) runtime

Smart phone이 등장하기 까지 전화 삐삐 Smart phone 핸드폰 무선전화

임베디드 시스템의 프로그램 모델의 특징 Firm ware Multi thread(MicroC/OS-II) 단일 프로세스 Multi thread(MicroC/OS-II) 멀티 프로세스 OS영역과 Application 영역이 분리되지않음 OS의 기능이 단순 schedule 기능제공 프로세스간 메모리보호가 되지 않는 시스템 Multi process(linux) OS영역과 Application 영역이 분리됨 OS의 기능이 schedule 기능 여러 가지 기능제공 Multi process(Android) Application의 기능 강화 자바 V M 및 프레임워크 기능 강화 JAVA로 application 구현됨

Program model – firmware/muti-thread Multi-Thread(RTOS) Firmware Stack Stack Stack “Stack” Section ……………………………… ……… BSS “BSS” Section “Data” Section “Data” Section Text Text Text 단일 프로세스에 동작함 특수 기능에 사용함 H/W 비중이 큰 시스템 “Text” Section scheduler

Program model – Multi-process Multi-Process(linux) Multi-Process(android) application application application application application application Framework & VM middleware & Library Library scheduler scheduler kernel kernel

안드로이드 구조

안드로이드 시스템의 구조 Application Area App1 App2 App3 Appn Application framework JAVA Core library Dalvik VM Middle ware Area C/C++ library bionic libc SW Interrupt System Call Interface Virture File System(VFS) Device file system General file system Socket file system Kernel Area Inet(AF_INET) Buffer Cache Network Subsystem Transport(TCP,UDP) Character Device Driver Block Device Driver Network Device Driver Network(IP) Device Interface Hardware Device

기존 커널의 확장 S3C6410용 Kernel 2.6.27 안드로이드를 지원할 수 있도록 하기 위한 커널 확장관련 패치를 제공 커널 관련한 확장들은 다음과 같다. Alarm Low Memory Killer Ashmem Kernel Debugger Binder Power Management Logger IPC의 프로세싱 오버헤드와 보안 헛점을 해결하기 위해 Binder를 채택 모바일 디바이스가 배터리 기반에서 동작한다는 사실과 해당 배터리의 용량제약이라는 상황에 대응하기 위한 구조 되어 있다. Linux Kernel은 ashmem(android shared memory)이라고 불리는 Shared Memeroy 부분하고 Binder Driver 부분이 모바일 플랫폼에 맞게 만들어져 있다. Binder는 프로세스간 통신하는 Overhead를 줄이기 위해서 만들어져 있고 Power Management는 기존의 리눅스에서 사용되는 모듈을 사용하지 않고 모바일 환경에 맞도록 개발된 모듈을 가지고 있다. Android 라이브러리는 GNU 기반의 소스를 사용하지 않는다. 이는 상용화에 제약이 없도록 GPL 로 부터 해방되기 위함이다. 이에 libC도 glibc를 사용하지 않고 있다.

bionic libc 독자적으로 만들어진 linker와 libc 사용 스탠다드 glibc, uclibc를 사용하지 않음 C++ STL(Standard Templete Library) 지원하지 않음 bionic libc의 장점 라이센스: user application에서 GPL문제 회피 size: 약 200k, glibc(GNU version of libc)의 절반크기 speed: 제한된 CPU power에서 동작

Android runtime java runtime과 동등 레벨 프로세스가 동작되면서 library 호출할 때 사용 자바 어플리케이션에서 호출할 때 libc 기반의 C/C++ library를 호출할 때 runtime library를 호출 dex.( Dalvik Executables (DEX)) 실행파일의 구조를 가지게 된다. 실행파일이 symbloic resolution을 통하여 함수를 가지고 있다가 library를 호출한다. Android Runtime은 Dalvik VM과 Core libraries로 구성 Android의 개발은 Eclipse의 ADT Plug-in을 통해서 Java로 컴파일 되고 class와 resource가 Dx 컨버터를 통해서 Android App(.apk)로 만들어지며 이 apk가 Dalvik VM위에서 동작하게 된다. Dalvik VM은 작은 메모리에서도 최적화 되는 Dalvik Executable (.dex) 포멧 파일을 실행한다. VM은 register-based이고, 'DX' 툴로 부터 .dex 포맷으로 변환된 자바 컴파일러로 부터 컴파일 된 클래스를 구동한다. Dalvik VM은 쓰레딩과 저수준의 메모리 관리와 같은 기능을 위해 리눅스 커널에 기초한다.

Zygote(수정란) Zygote를 통한 프로세스 관리 안드로이드에서 프로세스를 생성하는 방식 어플리케이션을 빠르게 구동하기 위해서 미리 fork 되어 있는 프로세스이다. 시스템에서 exec() 호출을 통해 특정 애플리케이션을 실행하고자 하기 전까지는 중립적인 상태, 즉 특정 애플리케이션과 합체되지 않는 상태를 유지한다 안드로이드에서 프로세스를 생성하는 방식 fork()와 execve()를 통하여 프로세스를 생성하는데 zygote를 통하여 프로세스가 생성되고 메모리를 공유하는 형식을 취는 것 같다.

Memory Map of User Space 0x00000000 0x00008000 app_process 0x40000000 Java apps and resource data etc.; *.apk,*.jar,*.ttf etc. No memory with execution attribute File mapping direction Shared libraries in native code; libc and libwecore etc. *.so files Some memory are of execution attribute File mapping direction 0xB0000000 /system/bin/linker Stack 0xBEFFFFFF

프로세스의 메모리 구조 통상적인 리눅스 안드로이드 .so 모듈이 논리 메모리 공간의 저위 어드레스에서 고위 쪽으로 할당된다. 이 할당을 실행하는 것은 ‘ld.so’ 프로그램이 일반적이다. 40000000번지부터 공유 라이브러리나 파일을 순서대로 배치. 안드로이드 공유 라이브러리가 논리 어드레스 공간의 고위 어드레스에서 저위 방향으로 확보 파일을 40000000번지부터 순방향으로, 라이브러리를 B0000000번지부터 역방향으로 배치 라이브러리를 로드하는 역할을 하는 것은 ‘linker’라는 명칭의 프로그램이다. Dalvik VM용 영역을 별도로 확보 모든 애플리케이션 프로그램을 Dalvik VM으로 동작시키기 때문에 소비하는 메모리의 양이 늘어나기 때문

안드로이드 파일시스템 var tmp system proc sys sbin etc data root / system,dalvik,cache drm,logs,download data,app등 작업용 파일군 bin app frame- work lib usr,fonts,media etc,sounds lost+found Linux로써 사용 할 때의 shell 등의 커맨드군 어플리케이션 프로그램 Java의 라이브러리군 네이티브 코드 라이브러리군 저작권 관리정보 로그 다운로드 결과 어플리케이션 데이터

안드로이드 파일시스템 system, data가 추가 됨 Dalvik VM 본체 프로그램 resource 쉘(Shell) 명령어 system/bin 디렉토리 있음 프로그램 resource 일반적인 리눅스 usr/bin/ 저장 안드로이드 system/ bin/ 저장 쉘(Shell) 명령어 임베디드 리눅스 : BusyBox 통해 사용 및 관리됨 안드로이드 : toolbox 통해 사용 및 관리됨

안드로이드 개발자 분류 및 필요기술 1. 안드로이드를 탑재하는 시스템 계층 개발자 2. 안드로이드가 탑재된 제품의 응용 개발자 안드로이드 개발자 분류 및 필요기술 1. 안드로이드를 탑재하는 시스템 계층 개발자 ARM 프로세서 리눅스 커널 2.6 리눅스 디바이스 드라이버 기타 펌웨어 레벨 개발능력 2. 안드로이드가 탑재된 제품의 응용 개발자 Java Programming Language Eclipse Dalvik JavaVM WebKit 기타 응용 개발 능력 3. 안드로이드를 이용한 웹 서비스 개발자 기존 웹 서비스 개발 능력 안드로이드 플랫폼에 대한 이해

Android on Real target

감사합니다. http://cafe.naver.com/linuxkernel26