전체 글 34

안드로이드에서 Zygote가 실행되는 순서 1

안녕하세요 개발자 도도입니다 이번엔 Zygote 실행 순서에 대해서 알아볼까 합니다 저도 공부하면서 쓰는 내용이다 보니 틀린 내용이나 잘못 알고 있는 부분이 있을 수 있으니 댓글이나 쪽지로 알려주시면 수정하도록 하겠습니다 ㅎ 먼저, 안드로이드 운영체제는 리눅스 운영체제 기반위에서 동작을 하게 됩니다 따라서 리눅스와 동일하게 어플리케이션의 실행은 프로세스로 관리가 되지만 안드로이드에서는 좀 더 빠르게 어플리케이션을 실행 하기 위해 Zygote라는 것을 사용합니다 그럼 먼저 Zygote가 어디서 시작이 되는지 부터 알아봅시다 (init 부분에 대한 분석은 추후 하고 여기서는 init.zygote.rc 파일에서 그냥 README 문법 부분 설명대로 시작을 합니다) Init.zygote32.rc or Init...

1. 튜링기계와 폰 노이만 구조

안녕하세요 개발자 도도 입니다 개발자로 현업에서 재직하며 기본기가 중요하다는 걸 늘 느끼고 있습니다 물론 이런 지식이 없어도 '코딩'을 하는 데에는 아무 문제가 없겠지만 더 나은 개발자가 되기 위해 집에 굴러다니던 컴퓨터 구조 서적을 한 챕터씩 공부해서 정리해보고자 합니다 ㅎㅎ 혹시나 틀린 개념이 있거나 잘못된 설명이 있다면 댓글 남겨주시면 참고 수정 하도록 하겠습니다 저도 공부하는 입장이라 언제든지 틀릴 수 있거든요 ㅠㅠ 오늘은 그 첫 시간인 튜링기계와 폰노이만 구조에 대해서 알아보려고 합니다 우리가 컴퓨터라는 용어를 사용하기 전의 시대에는 컴퓨터는 단순히 계산기 역할이었습니다 1) 과거의 컴퓨터 형태 input -> 계산기 -> output 이런 형태로 input(입력)을 넣었을 때 처리과정을 통해 ..

컴퓨터 구조 2022.05.10

Android framework StartActivity 호출 순서

안녕하세요, 개발자 도도 입니다 먼저, 저는 현재 안드로이드 프레임워크 개발자로 재직 중 입니다 사실 안드로이드 앱 개발자 입장으로선 프레임워크 코드들은 당연히 되어야 하는 부분이기 때문에 굳이 안 알아도 되는 부분이기도 합니다 하지만 개발 중 동작 문제가 발생했을 때 logcat을 통해 로그를 보기 위해서라도, 혹은 좀 더 깊이 있는 안드로이드 개발자가 되기 위해서는 Android aosp 코드 부분에 대해서도 알고 있는 것이 좋을 것이라는 생각이 듭니다 따라서 처음 시작은 우리가 안드로이드 4대 component 중 하나인 activity를 실행할 때 앱 개발자로선 단순히startActivity를 호출해주면 되지만 그로 인해 동작이 어떤 순서로 어떻게 일어나는지에 대해 학습을 좀 해보고자 합니다 대충..

StartActivity 호출 시 코드 진행 순서 3

이번에는 activity 관점에서 한 번 보려고 한다 2번 포스팅에서 시작했던 ActivityStarter를 다시 한 번 보도록 하자 바쁘신 분들을 위해 sequence diagram 첨부합니다 먼저 시작점은 startActivityUnchecked를 할 때 doResume 파라미터에 true를 넣어주고 있다 mLastStartActivityResult = startActivityUnchecked(r, sourceRecord, voiceSession, request.voiceInteractor, startFlags, true /* doResume */, checkedOptions, inTask, inTaskFragment, restrictedBgActivity, intentGrants); Activity..

StartActivity 호출 시 코드 진행 순서 2

지난 번 포스팅에 이어서, executeRequest 메서드 안도 매우 복잡하지만 startActivity가 이루어지는 부분을 보려면 startActivityUnchecked 부분을 파보도록 하겠습니다 ActivityStarter.java #startActivityUnchecked ... /** * Start an activity while most of preliminary checks has been done and caller has been * confirmed that holds necessary permissions to do so. * Here also ensures that the starting activity is removed if the start wasn't successful. ..