티스토리 뷰
앱 실행 과정과 RAM 부족 시 시스템 동작, 그리고 앱의 체감 속도에 영향을 미치는 요소에 대해 알아보자.
📝 목차
1. CPU, RAM, 저장장치 역할
2. 앱 실행시 구성 요소 동작 순서
3. iOS에서 RAM 부족시 발생하는 시스템 동작
4. 앱의 '체감 속도'에 가장 큰 영향을 미치는 요소
1. CPU, RAM, 저장장치 역할
1️⃣ CPU
CPU는 컴퓨터의 핵심적인 부분으로 모든 계산과 명령어 처리를 담당한다. 프로그램 명령을 해석하고 실행하며, 연산(산술/논리 연산)과 제어(명령 실행 순서, 분기, 인터럽트 등)를 수행한다.
- 명령어 실행: 주어진 명령어를 해석하고 실행
- 연산: CPU 내부의 연산 장치(ALU)를 사용하여 산술 및 논리 연산을 수행
- 제어: 제어 장치(Control Unit)를 통해 컴퓨터의 동작을 조절하고 관리
CPU는 RAM에서 데이터를 읽어와 처리하고, 결과를 다시 RAM이나 저장장치에 기록한다.
2️⃣ RAM
RAM은 컴퓨터가 현재 사용하는 프로그램과 데이터를 일시적으로 저장한다. CPU가 실제로 작업하는 데이터를 보관하며, CPU가 직접 접근할 수 있는 주 기억장치다. 빠른 속도로 데이터를 읽고 쓸 수 있어 컴퓨터 성능에 중요한 역할을 한다.
RAM의 용량이 클수록 한 번에 처리할 수 있는 데이터 양이 많아지므로, 여러 작업을 동시에 수행하거나 무거운 프로그램을 실행할 때 더 빠른 속도를 기대할 수 있다.
다만, RAM은 전원이 꺼지면 저장된 데이터가 모두 사라지는 휘발성 메모리라는 점에 유의해야 한다.
3️⃣ 저장장치(SSD/HDD)
저장 장치는 데이터를 영구적으로 저장하는데 사용된다. 운영체제, 앱, 사용자 데이터 등이 여기에 보관되고, 비교적 느리지만 대용량의 데이터를 보관할 수 있다. 비휘발성이라 전원이 꺼져도 데이터는 유지된다.
📌 CPU, RAM, 저장장치 상호작용 정리
1. 저장장치에 있는 프로그램과 데이터가 RAM으로 복사된다.
2. CPU는 RAM에 적재된 명령어와 데이터를 읽어 실행한다.
3. 실행 결과는 다시 RAM이나 저장장치에 저장된다.
4. 이 모든과정은 운영체제가 자원을 효율적으로 관리하며 조율한다.
2. 앱 실행시 구성 요소 동작 순서
앱을 실행할 때의 주요 흐름은 다음과 같다.
- 앱 실행 명령
사용자가 앱 아이콘을 터치하면, 운영체제(iOS)가 해당 앱의 실행 파일과 리소스를 저장장치(SSD 등)에서 찾는다. - RAM으로 로드
운영체제는 앱 실행에 필요한 코드와 데이터를 저장장치에서 RAM으로 복사한다. 실행 중인 앱의 데이터와 명령어는 RAM에 있어야 CPU가 빠르게 접근할 수 있다. - CPU가 실행
CPU는 RAM에 적재된 앱의 명령어를 읽어 해석하고 실행한다. 이 과정에서 사용자 인터페이스(화면), 네트워크 요청, 데이터 처리 등이 이루어진다. - 화면 출력
CPU가 앱의 논리를 처리하고, 필요한 데이터를 메모리에서 읽어와 화면(UI)을 그린다.
정리하면, 앱 실행 시 저장장치 → RAM → CPU 순으로 데이터와 명령이 이동하며, CPU가 실제로 앱을 동작시켜 화면에 결과를 보여준다.
3. iOS에서 RAM 부족시 발생하는 시스템 동작
RAM이 컴퓨터 성능에 중요하다고 했는데 만약 RAM이 부족하다면 어떻게 될까?
아래 Reducing your app’s memory use를 읽고 정리해보자.
https://developer.apple.com/documentation/xcode/reducing-your-app-s-memory-use/
Reducing your app’s memory use | Apple Developer Documentation
Improve your app’s performance by analyzing memory-use metrics and making changes to maximize memory efficiency.
developer.apple.com
아이폰 디바이스에서 메모리는 매우 제한적인데 디바이스 별로 RAM 크기를 찾아보니 다음과 같다.
RAM은 앱, 운영체제, 커널이 함께 사용되는 한정된 자원으로 iOS에서 RAM이 부족해지면 다음과 같이 동작한다.
🛠️ 백그라운드 앱 정리
시스템은 우선 백그라운드에 있는 앱부터 종료(또는 메모리에서 제거)하거나, 해당 앱의 데이터를 SSD로 스왑(메모리 압축 또는 저장)시켜 RAM을 확보한다.
🛠️ 메모리 경고
포그라운드 앱(현재 사용 중인 앱)이 여전히 많은 메모리를 사용하거나, 시스템 메모리가 계속 부족하면 iOS는 해당 앱에 메모리 경고(예: didReceiveMemoryWarning, EXC_RESOURCE MEMORY 등)를 보낸다.
개발자는 이 신호를 받아 불필요한 리소스를 해제하거나 캐시를 비우는 등의 처리를 해야한다.
🛠️ 강제 종료
만약 앱이 메모리 경고 이후에도 메모리 사용량을 줄이지 못하거나, 시스템의 메모리 부족 상황이 계속된다면 iOS는 해당 앱을 강제 종료(OOM, Out Of Memory)한다.
메모리 누수나 과도한 메모리 사용은 앱의 반응 속도를 저하시킬 뿐만 아니라, 갑작스러운 종료로 이어질 수 있기 때문에 개발에서 너무너무 중요한 것 같다.
Xcode Organizer와 MetricKit를 사용하면, 다음과 같이 앱의 메모리 사용량을 확인할 수 있다고 한다.
내가 만든 앱의 메모리를 분석하려고 했는데, 아직 앱 버전에 따른 데이터가 충분하지 않아서 나오지 않는 것 같다.
나중에 데이터를 많이 모아서 다시 시도해봐야겠다!
4. 앱의 '속도'에 가장 큰 영향을 미치는 요소
CPU, RAM, 저장장치에 대해서 알아봤는데, 그럼 앱의 속도에 가장 큰 영향을 미치는 요소는 무엇일까?
요소 | 속도 영향도 | 주요 영향 영역 |
RAM 용량 | 매우 큼 | 앱 유지, 멀티태스킹, reload 빈도 |
저장장치 속도 | 큼 | 앱 실행, 파일/이미지 로딩 |
CPU 속도 | 상황에 따라 다름 | 복잡한 연산, 애니메이션, 처리속도 |
- RAM 용량: RAM이 부족하면 앱이 자주 종료되거나, 백그라운드에서 리로드가 빈번하게 발생해 체감 속도가 크게 저하된다. 멀티태스킹, 앱 전환, 대용량 데이터 처리 등에서 RAM의 영향이 매우 크다.
- 저장장치 속도: 앱 실행, 이미지·파일 로딩 등 저장장치에서 데이터를 읽어와야 할 때 속도가 느리면 전체적인 체감 속도가 크게 떨어진다.
- CPU 속도: 복잡한 연산, 대량의 데이터 처리 등에서 CPU 속도가 중요하다. 하지만 일반적인 앱 사용에서는 RAM과 저장장치 속도가 더 큰 체감 차이를 만든다.
일반적인 앱 사용 환경에서는 RAM 용량과 저장장치 속도가 앱 속도에 가장 큰 영향을 미친다.
RAM이 부족하면 앱이 자주 종료되거나 느려지고, 저장장치가 느리면 앱 실행과 데이터 로딩이 지연된다. CPU 속도는 특정 연산 작업에서 중요하지만, 일상적인 앱 실행에서는 RAM과 저장장치의 영향력이 더 크다고 할 수 있다.
앱 실행 원리와 메모리에 영향을 주는 요소들을 함께 살펴보니, 앱에서 왜 메모리가 중요한지에 대한 이유를 알 수 있었다! 다음에는 꼭 메모리 분석까지 직접 해보고 싶다!
'iOS' 카테고리의 다른 글
[iOS] - 프로세스와 스레드 관리 방법 (3) | 2025.06.24 |
---|---|
[iOS] - 메모리 관리 기법: ARC, 참조, 그리고 GC 비교 (0) | 2025.06.03 |
[Swift] - API & Socket 요청 리팩토링 및 인증 처리 개선 (1) | 2025.02.16 |
[Swift] - fastlane + GitHub Actions CI 구축(3) (0) | 2025.01.20 |
[Swift] - fastlane + GitHub Actions CI 구축(2) (0) | 2024.11.25 |