본문 바로가기

전체 글571

인사이드 안드로이드 07 바인더 IPC (2) 7.3 안드로이드 바인더 드라이버 분석 바인더 드라이버를 통한 RPC 과정보다는 바인더 드라이버의 실제 역할인 IPC 과정에 초점. 서비스 클라이언트가 서비스 서버의 서비스를 사용하기까지의 IPC과정을 각각 '서비스 등록', '서비스 검색', '서비스 사용' 3단계로 나누고,이를 서비스 사용 과정이라고 하겠음 7.3.1 프로세스 관점에서의 서비스 사용 1. 서비스 등록(서비스 서버와 컨텍스트 매니저 사이의 아피씨) 2. 서비스 검색(서비스 클라이언트와 컨테스트 매니저 사이의 아피씨) 3. 서비스 사용(서비스 클라이언트와 서비스 서버 사이의 아피씨) 1. 바인더 드라이버 열기 2. IPC 데이터 수신 퍼버 3. 아피씨 데이터 수신을 위한 대기 상태 진입 4. 바인더 드라이버 열기 5. 아피씨 응답 데이터 .. 2021. 5. 17.
인사이드 안드로이드 07 바인더 IPC (1) 안드로이드 바인더 IPC 구글로 옮겨간 핵복은 안드로이드의 프로세스를 관리하기 위해 오픈 바인더를 수정한 안드로이드 바인더(이하 바인더)를 개발함. 바인더는 원래 IPC 도구이지만 안드로이드에서는 다른 프로세스에 있는 함수를 마치 현재 프로세스에 존재하는 함수처럼 사용할 수 있게 해주는 RPC를 지원하는 데 주로 이용됨. 7.1 리눅스 메모리 공간과 바인더 드라이버 프로세스만의 고유한 가상 주소 공간에서 실행됨. 총 4GB에 달하는 가상 주소 공간은 3GB의 사용자 공간과 1GB의 커널 공간으로 나뉨. (커널 설정으로 변경 가능함). 사용자 코드와 관련 라이브러리는 사용자 공간의 코드 영역, 데이터 영역, 스택 영역에서 동작하고, 커널 공간에서 동작해야 할 코드는 커널 공간의 각 영역에서 동작함. 프로세.. 2021. 5. 17.
[피부] 20년 후 지식노동자 https://blog.naver.com/divadance/221948787134 어깨/목 통증/거북목 + 피부열감/ 홍조 + 소화불량이 같이 있다면 읽어보세요. 안녕하세요. 피부과 전문의 김지영입니다. 지금으로부터 20년 후 매일 앉아서 업무를 하는 지식노동자와 스... blog.naver.com 20년 후 매일 앉아서 업무 하는 지식 노동자, 스마트폰 미래인 모습 1. 피부의 변화(홍조, 피부트러블, 다리부종, 정맥류) 2. 체형의 변화(거북못, 솟은 어깨, 굽은 등) 특히 뻣뻣한 목과 소화가 잘 안되면서 피부트러블이 생기는 분 특히 못 부위는 교감신경이 지나가는 통로이기 때문에 뼈 변성에 의해 뼈돌기가 자라나거나, 연골이 노화되거나, 외부 트라우마나 과도한 활동 때문에 근육이 과긴장되어 있을 때 교.. 2021. 5. 17.
인사이드 안드로이드 06 서비스 개요 안드로이드 서비스 개요 서비스는 UI 없이 주기적으로 특정한 일을 수행하는 백그라운드 프로세스를 가리킴 사용자와 상호작용 없이 다양한 데이터를 백그라운드에서 처리하는 앱을 작성할 때 이러한 안드로이드 앱 서비스가 활용됨 6.1 안드로이드 서비스 동작 이해 API Demos의 AlarmService라는 샘플 예제를 통해 앱이 시스템 서비스와 앱 서비스가 어떻게 활용되는지 알아봄 6.3 안드로이드 앱 서비스 안드로이드 SDK의 Service 클래스를 확장한 클래스의 인스턴스로 UI없이 주기적으로 특정한 일을 수행하는 백그라운드 프로세스를 가리킴. 이러한 서비스는 액티비티나 브로드캐스트 리시버처럼 안드로이드 앱 컴포넌트의 일종임. 미디어 플레이어에서 음악을 실행하면 백그라운드로 음악 서비스를 시작시켜 음악을 .. 2021. 5. 15.
인사이드 안드로이드 04 JNI와 NKD 4.1 안드로이드와 JNI location manger가 제공하는 자바 API를 호출함. 이 호출은 프레임워크 내부의 GPS 라이브러리를 통해 GPS 디바이스 드라이버에 연결되어 앱에서 현재 위치 정보 값을 전달해주는 구조로 동작함 - 빠른 처리 속도를 요구하는 루틴 작성 - 하드웨어 제어 - 기존 C/C++ 프로그램의 재사용 플랫폼별로 로딩되는 C라이브러리가 있음 윈도우에서는 .dll 리눅스는 .so UnsatisfiedLinkError 오류가 발생하는 이유는 자바 가상 머신이 네이티브 메서드와 링크될 코드에서 작성한 hellojni.dll 라이브러리에서 찾지 못했기 떄문이다. 자바 가상 머신 : 함수 매핑 테이블 이런 형태로 C함수 원형을 만들어야 자바 가상 머신이 이 함수와 자바 네이티브 메서드를 .. 2021. 5. 15.
인사이드 안드로이드 03 init 프로세스 init 프로세스 3.1 init 프로세스의 실행 과정 init 프로세스는 자식 프로세스의 종료 처리뿐만 아니라 앱이 디바이스 드라이버에 접근할 떄 사용하기 위한 디바이스 노드 파일을 생성하며, 시스템 동작에 필요한 환경 변수를 저장하는 프로퍼티 서비스를 제공함. 리눅스의 프로세스들은 서로 정보를 교환하기 위해 메시지를 주고 받는데, 이러한 메시지를 시그널이라고 함. 그리고 각 프로세스는 다른 프로세스에서 발생하는 시그널을 처리하기 위한 루틴을 등록하는데 이를 시그널 핸들러라고 함. 발생한 시그널에 대한 실제 처리는 init 프로세스 동작 과정의 마지막 단계인 이벤트 처리 루프에서 이뤄짐. 모든 프로세스에서 시스템의 설정 값을 공유하기 위해 프로퍼티라는 이름의 저장소를 제공함. 공유 메모리 영역에서 생성.. 2021. 5. 15.
인사이드 안드로이드 01 안드로이드 프레임 워크 개요 저자 서문 "안드로이드 플랫폼의 필수 요소인 init 프로세스, 바인더, JNI, Zygote, 서비스 프레임워크, 핵심적인 시스템 서비스 등의 의 동작원리에 고나해 설명하고 있습니다." "에상대로 개방성을 무기로 하는 안드로이드 플랫폼은 시장의 많은 제조사들을 끌어 들였고, 점차 시장의 큰 부분을 차지해 가고 있습니다." 01 안드로이드 프레임 워크 개요 즉, 안드로이드는 모바일 디바이스용 애플리케이션을 쉽게 제작하기 위한 소프트웨어 프레임워크를 제공해 준다. hardware:안드로이드 HAL(Hardware Abstraction Layer) 소스 package:안드로이드 기본 애플리케이션, 컨텐트 프로바이더 system:안드로이드 init 프로세스, 블루투스 도구 모음 1.2 부팅 프로세스로 알아보는.. 2021. 5. 15.
퓨시아 https://www.upinews.kr/newsView/upi201807200011 구글 새로운 OS ‘퓨시아’, “안드로이드 버릴까?” “앞으로 5년 안에 구글 퓨시아 OS가 안드로이드와 크롬 OS를 대체할 수도 있다”는 외신들의 최근 소식에 관심이 쏠리고 있다. 구글이 개발 중인 www.upinews.kr 퓨시아 IoT뿐만 아니라 스마트 스피커, 스마트폰, 태블릿 노트북 PCㅔㅇ 이르기까지 모든 단말기 기반 OS 통함 움직임 디스플레이 터치 조작을 전제로 개발된 모바일 단말기용 OS인 안드로이드는 음성 지원 등이 설계 단계에서 고려된 것이 아님. 따라서 향후 스마트 인공지능 스피커나 IoT 단말 등에서 조작할 수 있는 음성 제어에 초점을 맞춘 새로운 OS로 퓨시아를 개발 OS 업데이트가 안드로이드 .. 2021. 5. 15.
알고리즘 문제 해결 전략 1권 10.탐욕법 10.1 도입 원하는 답을 재귀 호출과 똑같이 여러 개의 조각으로 쪼개고, 각 단계마다 답의 한 부분을 만들어 간다는 점에서 완전 탐색이나 동적 계획법 알고리즘과 다를 것이 없음. 그러나 모든 선택지를 고려해 보고 그 중 전체 답이 가장 좋은 것을 찾는 두 방법과는 달리, 탐욕법은 각 단계마다 지금 당장 가장 좋은 방법만을 선택함. 탐욕법은 지금의 선택이 앞으로 남은 선택들에 어떤 영향을 끼칠지는 고려하지 않습니다. 1. 탐욕법을 사용해도 항상 최적해를 구할 수 있는 문제를 만날 경우, 동적 계획법보다 수행 시간이 훨씬 빠름 2. 최적해를 찾기 너무 어렵다면 최적해 대신 적당히 괜찮은 답을 찾는 것으로 타협할 수 있음 가끔 근사해를 구하는 문제가 주어졌다 해도 탐욕적 알고리즘보다 11장에서 다루는 조합 .. 2021. 5. 14.