HOME > Detail View

Detail View

안드로이드 하드웨어 서비스 (Loan 3 times)

Material type
단행본
Personal Author
김대우 박재영, 저 문병원, 저
Title Statement
안드로이드 하드웨어 서비스 / 김대우, 박재영, 문병원 지음
Publication, Distribution, etc
서울 :   개발자가행복한세상,   2013  
Physical Medium
viii, 600, ix p. : 삽화(일부천연색) ; 25 cm
Series Statement
개발자가 행복한 세상 안드로이드 시리즈 ;003
ISBN
9788996603139
General Note
색인수록  
000 00825camcc2200277 c 4500
001 000045761604
005 20130819130317
007 ta
008 130816s2013 ulka 001c kor
020 ▼a 9788996603139 ▼g 13000
035 ▼a (KERIS)BIB000013226165
040 ▼a 241027 ▼c 241027 ▼d 211009
082 0 4 ▼a 005.268 ▼2 23
085 ▼a 005.268 ▼2 DDCK
090 ▼a 005.268 ▼b 2013z4
100 1 ▼a 김대우
245 1 0 ▼a 안드로이드 하드웨어 서비스 / ▼d 김대우, ▼e 박재영, ▼e 문병원 지음
246 1 1 ▼a Android hardware service
260 ▼a 서울 : ▼b 개발자가행복한세상, ▼c 2013
300 ▼a viii, 600, ix p. : ▼b 삽화(일부천연색) ; ▼c 25 cm
440 0 0 ▼a 개발자가 행복한 세상 안드로이드 시리즈 ; ▼v 003
500 ▼a 색인수록
700 1 ▼a 박재영, ▼e
700 1 ▼a 문병원, ▼e
945 ▼a KLPA

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.268 2013z4 Accession No. 121226346 Availability Available Due Date Make a Reservation Service B M
No. 2 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.268 2013z4 Accession No. 151316501 Availability Available Due Date Make a Reservation Service
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.268 2013z4 Accession No. 121226346 Availability Available Due Date Make a Reservation Service B M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.268 2013z4 Accession No. 151316501 Availability Available Due Date Make a Reservation Service

Contents information

Book Introduction

『안드로이드 아나토미: 시스템 서비스(2011)』, 『안드로이드 미디어 프레임워크(2012)』를 계승시켜 안드로이드가 제공하는 하드웨어 제어를 위한 메커니즘을 분석하고 있다. 저자들은 현업에 종사하면서 플랫폼 소스와 로그를 직접 분석하고 테스트하여 지금까지 잘 알려지지 않았던 안드로이드 플랫폼의 하드웨어 제어의 기본 원리 및 실제 프레임워크의 동작에 대해 자세히 설명하고 있다.

안드로이드 초창기 시절에 비해 안드로이드 개발자들이 많이 늘어나고 관련 자료들도 손쉽게 검색할 수 있는 시기가 되었지만, 안드로이드 개발은 여전히 힘들고 버전이 업데이트될 때마다 구조 변경으로 인해 이전 코드를 재활용하지 못하는 경우가 빈번합니다. 안드로이드 플랫폼에 대한 깊은 이해가 필요하지만, 개발자는 버그 수정 위주의 업무로 인해 나무만 보고 숲을 볼 겨를이 없는 것이 현실입니다. 이 책 또한 현업의 개발자들이 어떻게 하면 개발 프로세스를 개선할 것인가라는 물음에서부터 시작하였습니다. 그 물음의 해법은 다름 아닌 정석대로 안드로이드의 기본적인 구현 원리를 파헤치는 것입니다. 기본기가 튼튼한 개발자는 스마트폰 시대에 걸맞은 “Smart” 한 개발을 주도할 수 있습니다. 안드로이드 플랫폼의 동작 원리를 이해하고 그 지식을 직접 개발 업무에 응용하고 싶은 개발자에게 이 책을 강력히 추천합니다.

1장: 안드로이드 하드웨어 서비스
안드로이드는 애플리케이션이 하드웨어를 직접 제어할 필요가 없이 애플리케이션 프레임워크의 API를 이용하여 하드웨어에 접근할 수 있도록 하드웨어 서비스를 제공한다. 하드웨어 서비스는 애플리케이션 개발자가 하드웨어에 대한 자세한 지식이 없어도 하드웨어를 제어할 수 있는 상위수준(High-Level)의 API를 제공한다. 따라서 애플리케이션은 하드웨어가 제공하는 API를 호출하여 안드로이드 하드웨어를 제어할 수 있다. 1장에서는 안드로이드 하드웨어의 주요 컴포넌트와 안드로이드의 하드웨어 서비스의 종류에 대해서 설명한다. RIL 데몬과 텔레포니 프레임워크는 서로 다른 프로세스에서 실행되고 있으므로 프로세스 간 통신을 위한 IPC가 필요하다. 안드로이드는 RIL 데몬과 텔레포니 프레임워크 간의 통신을 위해 유닉스 도메인 소켓을 사용한다. 그리고 유닉스 도메인 소켓을 이용한 프로세스 간 통신을 설명하며 텔레포니 프레임워크에서 쓰레드 간 비동기 통신을 지원하기 위해 제공되는 메시지, 핸들러, 루퍼, 메시지 큐 등에 대해서 소개한다.

2장: RIL
RIL은 모뎀을 안드로이드로부터 추상화시키는 일종의 HAL로 안드로이드 RIL은 다양한 모뎀 벤더를 지원하기 위해 모뎀제어를 위한 표준 방법을 정의하였다. RIL은 RIL 데몬과 모뎀 제어를 위한 벤더 RIL로 크게 구분할 수 있다. RIL 초기화 시 RIL 데몬은 벤더 RIL를 동적으로 로딩한다. 2장에서는 각종 클라이언트의 I/O 이벤트나 타임아웃 이벤트를 효율적으로 처리하기 위한 RIL 데몬의 RIL 이벤트 스케줄러에 대해 설명하고 RIL 이벤트 스케줄러가 RIL 이벤트를 스케줄링하는 메커니즘과 모뎀으로부터 전달된 RIL resp와 RIL ind를 RIL 데몬이 처리하는 방법에 대해서 소개한다.

3장: 텔레포니 프레임워크
텔레포니 프레임워크는 자바 애플리케이션 프레임워크로 상위 Phone 애플리케이션에 텔레포니 관련 API를 제공한다. 텔레포니 프레임워크는 Phone 애플리케이션에 의해서 초기화되며 Phone 애플리케이션에서 실행된다. 네트워크의 특성상 네트워크로부터 전달되는 응답이 올 시점을 예측하기 어려우므로 비동기 방식의 통신 방법이 필요하다. Phone 애플리케이션은 텔레포니 프레임워크에 서비스 req를 보낸 후 서비스 resp를 받기까지 대기하는 것은 비효율적이므로 루퍼를 기반으로 메시지 통신을 사용한다. 3장에서는 텔레포니 프레임워크가 1장에서 서술한 메시지, 핸들러, 루퍼, 메시지 큐 등을 어떻게 사용하는지에 대한 설명을 담고 있다.

4장: USIM
USIM(Universal Subscriber Identity Module)은 가입자 정보를 저장하고 이를 제공하는 독립적인 시스템이다. 휴대 전화는 USIM과의 통신을 통해 필요한 정보를 요청하거나 저장한다. 4장에서는 USIM이 무엇인지 그리고 USIM과 휴대 전화와의 통신은 어떤 방식으로 진행되는지 살펴본다. 더불어 USAT(USIM Application Toolkit)이라 불리는 USIM과 함께 UICC(Universal Integrated Circuit Card)에 설치되어 동작하는 시스템에 대해서 알아보도록 한다.

5장: 안드로이드 파워 매니지먼트
안드로이드의 유저 영역에서 파워 매니지먼트의 주요 동작은 화면 밝기 제어와 Sleep 방지이다. 유저 영역에서 파워 매니지먼트의 주요 동작은 파워 매니저 서비스에 의해 구현되며, 애플리케이션 및 서비스는 파워 매니저 서비스를 이용해서 화면 밝기 제어와 Sleep 방지 동작을 수행한다. 5장에서는 기본적인 파워 상태와 배터리의 설명을 시작으로 안드로이드 파워 매니지먼트의 계층 구조 및 클라이언트와 서비스 관점에서 파워 매니지먼트를 설명한다. 또한, 화면 밝기 제어 동작, 유저 영역에서 Wake Lock의 종류에 따른 동작, 그리고 파워 매니저 서비스를 이용하지 않는 Wake Lock의 동작 등을 예제와 더불어 설명한다.

6장: 안드로이드 커널 파워 매니지먼트
안드로이드의 커널은 리눅스 커널을 기반으로 동작하며 모바일 환경을 위해 전통적인 리눅스 커널의 Suspend 및 Resume 동작 외에 Suspend 동작과 Resume 동작을 각각 두 단계로 나누어 Early Suspend 동작과 Late Resume 동작을 리눅스 커널에 추가하였다. 또한, 특정 모듈 혹은 특정 장치가 Suspend 상태로 진입하지 않고 동작하게 하기 위해 즉, CPU 리소스를 사용하기 위해 Wake Lock 기능을 새로이 추가하였다. 6장에서는 전통적인 리눅스 커널의 파워 매니지먼트 방식인 APM과 ACPI의 설명을 시작으로 안드로이드 커널에서의 Suspend, Early Suspend, Late Resume, Resume 동작과 Wake Lock 동작을 설명한다.


Information Provided By: : Aladin

Author Introduction

김대우(지은이)

서강대학교에서 전자공학 학사와 석사 학위를 받았다. 대학시절 리눅스에 심취하여 리눅스 동아리를 만들어 활동하였다. LG전자에서 안드로이드 프로젝트에 참여하였으며 현재는 르네사스 모바일에서 안드로이드 LTE폰 프로젝트에 참여하고 있다. 안드로이드 개발을 좋아하지만, 아직도 피쳐폰을 사용하고 있다. 주요 관심 분야는 안드로이드 플랫폼, SW 설계와 ARM 아키텍처이며 언젠가 취미생활로 오픈 소스 프로젝트를 만들 계획을 세우고 있다.

박재영(지은이)

고려대학교에서 전파공학 학사와 석사 학위를 받았으며, LG 전자에 입사하여 휴대폰 개발로 시작하여 지금도 개발 업무를 하고 있다. 특히, 10년이 넘는 개발 기간 동안 하드웨어와 연관된 BSP 업무부터 UI 업무 그리고 양산 관련 업무까지 전 영역에 걸쳐서 두루두루 다양한 경험을 하였다. 주요 관심 분야는 무선 통신, 모바일 플랫폼, ARM 아키텍처, USIM, 파워 매니지먼트이며 향후에는 학생들을 가르치는 일을 통해 사회에 이바지할 계획을 세우고 있다.

문병원(지은이)

LG 전자에서 휴대전화 개발을 하다가, 지금은 업종을 바꾸어 게임 회사에서 데이터 분석을 하고 있다. 프로그래머의 역량은 단지 지식을 많이 아는 게 아니라 문제를 해결하는 방법을 아는 것이라고 생각하고, 오늘도 나날이 새로워지기 위한 노력을 멈추지 않겠다고 생각하는 프로그래머다.

Information Provided By: : Aladin

Table of Contents


01장 안드로이드 하드웨어 서비스 = 1
 1.1. 안드로이드 하드웨어 서비스의 소개 = 2
  1.1.1. 안드로이드의 등장 = 3
  1.1.2. 모바일 디바이스의 하드웨어 구조 = 7
  1.1.3. 안드로이드 하드웨어 서비스의 개요 = 15
  1.1.4. 본서의 서술 방향 = 21
 1.2. IPC(Inter-Process Communication) = 23
  1.2.1. 안드로이드의 프로세스 = 24
  1.2.2. 프로세스(Process)의 fork() 및 exec() 함수 = 26
  1.2.3. 리눅스 커널의 IPC = 29
  1.2.4. 리눅스 파이프(Pipe) = 30
  1.2.5. 인터넷 소켓(Socket) = 33
  1.2.6. 유닉스 도메인 소켓(Unix domain Socket) = 41
 1.3. I/O 멀티플렉싱 = 45
  1.3.1. 서버/클라이언트 모델 = 46
  1.3.2. select() 함수를 이용한 I/O 멀티플렉싱 = 49
  1.3.3. select() 함수의 예제 = 52
 1.4. ITC(Inter-Thread Communication) = 54
  1.4.1. 멀티 쓰레드(Multi-Thread) = 55
  1.4.2. 안드로이드의 ITC 모델 = 59
  1.4.3. 메시지(Message) = 63
  1.4.4. 루퍼(Looper) = 67
  1.4.5. 핸들러(Handler) = 74
  1.4.6. 핸들러 쓰레드(HandlerThread) = 82
 1.5. 데몬 서비스 분석 = 85
  1.5.1. 일반적인 데몬 프로그램의 구조 = 85
  1.5.2. init 프로세스의 데몬 서비스 생성 = 88
  1.5.3. 데몬 프로세스와 멀티-클라이언트 간 통신 = 98
02장 RIL = 105
 2.1. RIL(Radio Interface Layer)의 소개 = 106
  2.1.1. RIL 소개 = 106
  2.1.2. AP와 모뎀 간 상호 작용 = 107
  2.1.3. AP와 모뎀 간의 통신 : RIL 명령 = 109
 2.2. RIL의 구조 = 113
  2.2.1. 안드로이드 텔레포니 스택 = 113
  2.2.2. 안드로이드 RIL의 모뎀 제어 모델 = 116
 2.3. RIL 데몬의 구조 = 117
  2.3.1. RIL 데몬의 구성요소 = 118
  2.3.2. RIL 이벤트 = 120
  2.3.3. RIL 이벤트 스케줄러 = 121
 2.4. RIL 데몬 초기화 = 130
  2.4.1. 데몬의 시작 = 130
  2.4.2. RIL 데몬 초기화 과정 = 134
  2.4.3. 벤더 RIL 라이브러리 동적 로딩 = 135
  2.4.4. RIL 이벤트 스케줄러 생성 = 137
  2.4.5. 벤더 RIL 초기화 = 144
  2.4.6. 벤더 RIL의 Radio 제어 함수 등록 및 I/O 이벤트용 소켓 생성 = 149
 2.5. RIL 이벤트 처리 메커니즘 = 154
  2.5.1. RIL 이벤트 스케줄러의 동작 원리 = 154
  2.5.2. RIL 이벤트 처리 콜백 함수 = 163
  2.5.3. RIL req 처리 메커니즘 = 177
  2.5.4. RIL resp 처리 메커니즘 = 185
  2.5.5. RIL ind 처리 메커니즘 = 192
03장 텔레포니 프레임워크 = 201
 3.1. 텔레포니 프레임워크의 개요 = 202
  3.1.1. 텔레포니 프레임워크의 기능 = 202
  3.1.2. 텔레포니 프레임워크의 제공 서비스 = 205
 3.2. 텔리포니 프레임워크의 구조 = 206
  3.2.1. 텔레포니 프레임워크의 계층별 구성요소 = 207
  3.2.2. PhoneApp 클래스 = 209
  3.2.3. PhoneProxy 클래스 = 211
  3.2.4. Phone 인터페이스 = 213
  3.2.5. Radio 인터페이스 = 216
  3.2.6. state tracker 클래스 = 219
  3.2.7. CallManager 클래스 = 220
  3.2.8. 텔레포니 프레임워크의 버전별 변경사항 (1.5∼4.2) = 223
 3.3. 텔레포니 프레임워크의 초기화 = 225
  3.3.1. Phone 애플리케이션의 생성 = 227
  3.3.2. 텔레포니 프레임워크의 초기화 = 229
  3.3.3. RILJava의 초기화 = 237
 3.4. 텔레포니 프레임워크의 서비스 모델 = 242
  3.4.1. 텔레포니 프레임워크의 서비스 구조 = 243
  3.4.2. 텔레포니 프레임워크의 서비스 req/resp 처리 메커니즘 = 244
  3.4.3. 텔레포니 프레임워크의 서비스 ind 처리 메커니즘 = 254
 3.5. RILJava의 RIL req 처리의 예제 = 275
  3.5.1. Phone 애플리케이션의 텔레포니 프레임워크 API 호출 = 276
  3.5.2. RILJava의 Radio API 호출 = 278
  3.5.3. RILJava의 RILRequest 객체 생성 = 282
  3.5.4. RILRequest 객체를 RILSender 쓰레드로 전송 = 284
  3.5.5. RILSender 쓰레드의 RIL req 발송 = 287
 3.6. RILJava의 RIL resp 처리의 예제 = 290
  3.6.1. RIL 데몬으로부터 RIL resp 수신 = 291
  3.6.2. RILReceiver 쓰레드의 서비스 resp 메시지 발송 = 294
  3.6.3. 클라이언트 객체 핸들러의 서비스 resp 메시지 처리 = 298
 3.7. RILJava의 RIL ind의 처리의 예 = 299
  3.7.1. Subscriber 객체의 서비스 ind 등록 = 300
  3.7.2. RILReceiver 쓰레드의 RIL ind 수신 = 302
  3.7.3. RILReceiver 쓰레드의 notifyRegistrant() 메서드 호출 = 304
  3.7.4. Subscriber 객체 핸들러의 서비스 ind 메시지 처리 = 307
04장 USIM = 311
 4.1. USIM 소개 = 312
  4.1.1. 스마트카드란 무엇인가? = 314
  4.1.2. 스마트카드의 부팅 과정 = 314
  4.1.3. APDU를 이용한 스마트카드 통신 = 316
  4.1.4. USIM의 유래 = 318
  4.1.5. USIM의 주요 기능 = 319
 4.2. USIM의 데이터 구조 및 동작 = 324
  4.2.1. USIM의 데이터 구조 = 324
  4.2.2. USIM의 이동 통신 관련 EF들 = 326
  4.2.3. APDU를 통한 EF 읽기 과정 = 330
 4.3. 안드로이드 USIM 소프트웨어 구조 = 332
  4.3.1. 모뎀 = 333
  4.3.2. RIL = 333
  4.3.3. 텔레포니 프레임워크 = 34
  4.3.4. 안드로이드 애플리케이션 = 338
 4.4. 안드로이드 USIM 초기화 및 동작 = 340
  4.4.1. UICC 초기화와 UICC 관련 객체 생성 = 340
  4.4.2. 시스템 부팅 후 모뎀 전원 인가 = 347
  4.4.3. SIM_READY 상태로의 진입 = 356
  4.4.4. USIM 상태 확인 및 EF 읽기 실행 = 360
  4.4.5. 텔레포니 프레임워크의 EF 읽기 분석 = 363
 4.5. 안드로이드 USAT 초기화 및 동작 = 374
  4.5.1. USAT 초기화 = 375
  4.5.2. Display Text를 통한 Proactive Command 분석 = 380
  4.5.3. 안드로이드의 Proactive Command 처리 = 388
05장 안드로이드 파워 매니지먼트 = 397
 5.1. 파워 매니지먼트의 개요 = 400
  5.1.1. 파워란 무엇인가? = 400
  5.1.2. 배터리의 이해 = 401
  5.1.3. 기본적인 파워 상태 = 402
  5.1.4. 안드로이드 파워 매니지먼트의 역할 = 404
 5.2. 안드로이드 파워 매니지먼트의 구조 = 406
  5.2.1. 안드로이드 파워 매니지먼트의 계층 구조 = 407
  5.2.2. 파워 매니저 = 409
  5.2.3. 파워 매니저 서비스 = 410
  5.2.4. 네이티브 영역 = 412
  5.2.5. 커널 영역 = 415
  5.2.6. 안드로이드 파워 매니지먼트의 주요 메서드 호출 과정 = 417
 5.3. 파워 매니저 서비스의 초기화 = 418
  5.3.1. 파워 매니저 서비스의 클래스 구조 및 메서드 = 418
  5.3.2. 파워 매니저 서비스 생성 및 등록 = 421
  5.3.3. 파워 매니저 서비스 초기화 : init() 메서드 = 426
  5.3.4. 파워 매니저 서비스 초기화 : systemReady() 메서드 = 444
 5.4. 파워 매니저 서비스의 주요 동작 = 447
  5.4.1. 파워 매니저 서비스 상태 = 447
  5.4.2. 파워 매니저 서비스 상태의 결정 = 452
  5.4.3. 화면 밝기 시간의 구성 = 462
  5.4.4. 화면 밝기 시간에 의한 화면 밝기 제어 = 467
  5.4.5. 화면 밝기 전환의 구성 요소 = 470
  5.4.6. 화면 밝기 전환 동작 = 471
  5.4.7. Wake Lock 플래그와 태그 = 482
  5.4.8. Wake Lock 생성 = 485
  5.4.9. Wake Lock 획득 = 491
  5.4.10. Wake Lock 해제 = 504
 5.5. 파워 매니저 서비스의 간접 이용 = 505
  5.5.1. 파워 매니저 클래스가 제공하는 메서드 = 505
  5.5.2. 파워 매니저 클래스의 객체화 및 획득 = 507
  5.5.3. Wake Lock 획득 : PARTIAL_WAKE_LOCK = 509
  5.5.4. Wake Lock 획득 예제 : PARTIAL_WAKE_LOCK = 511
  5.5.5. Wake Lock 획득 : 화면 밝기 제어 플래그 = 514
  5.5.6. Wake Lock 획득 예제 : FULL_WAKE_LOCK = 516
  5.5.7. Wake Lock 획득 : ACQUIRE_CAUSES_WAKEUP = 518
  5.5.8. Wake Lock 해제 : PARTIAL_WAKE_LOCK = 522
  5.5.9. Wake Lock 해제 : 화면 밝기 제어 플래그 = 525
  5.5.10. Wake Lock 해제 : ON_AFTER_RELEASE = 527
 5.6. 파워 매니저 서비스 직접 이용 = 529
  5.6.1. 화면 밝기 설정 = 530
  5.6.2. Poke Lock = 531
 5.7. 파워 매니저 서비스를 이용하지 않는 Wake Lock = 533
06장 안드로이드 커널 파워 매니지먼트 = 537
 6.1. 리눅스 커널 파워 매니지먼트 = 540
  6.1.1. APM과 ACPI = 540
  6.1.2. 디바이스 파워 매니지먼트 = 544
 6.2. 안드로이드 커널 파워 매니지먼트 = 545
  6.2.1. 안드로이드 커널 수정 내용 = 545
  6.2.2. kobject와 sysfs 파일 시스템 = 546
  6.2.3. 파워 매니지먼트를 위한 sysfs 파일 생성 = 550
 6.3. 파워 매니지먼트 초기화 = 553
 6.4. Early Suspend = 558
  6.4.1. Early Suspend 구조체와 등록 = 559
  6.4.2. Early Suspend 동작 = 563
 6.5. Wake Lock = 566
  6.5.1. Wake Lock 구조 = 567
  6.5.2. Wake Lock 생성 = 570
  6.5.3. Wake Lock 활성화 = 572
  6.5.4. Wake Lock 비활성화 = 575
 6.6. Suspend = 576
  6.6.1. Suspend 실행 = 577
  6.6.2. Suspend 준비 = 579
  6.6.3. Suspend 진입 = 580
 6.7. Resume = 584
  6.7.1. Early Resume = 585
  6.7.2. 디바이스 Resume = 587
  6.7.3. Resume 완료 = 588
 6.8. Late Resume = 589
 6.9. 서피스 플링어와 커널 사이의 상호 동작 = 592
  6.9.1. 스크린 On 상태에서 Off 상태로의 변경 = 594
  6.9.2. 스크린 Off 상태에서 On 상태로의 변경 = 598

New Arrivals Books in Related Fields

Ramamurthy, Bina (2021)
윤관식 (2020)