티스토리 뷰

https://github.com/JeaSungLEE/iOSInterviewquestions


컴퓨터 시스템에서 CPU, RAM, 저장 장치의 역할과 이들이 어떻게 상호 작용하는지 설명해주세요.

💡 힌트: 앱 실행 과정을 단계별로 생각해보세요

  • 저장 장치에서 앱 바이너리 로드
  • RAM에 코드와 초기 데이터 적재
  • CPU가 명령어 실행
  • 필요시 추가 리소스 로드
  • 앱을 실행할 때 이 구성 요소들이 어떤 순서로, 어떻게 상호작용하여 앱 화면을 보여주게 되나요?
  • RAM이 부족하면 iOS 시스템은 어떤 동작을 할까요? 이것이 앱 개발 시 왜 중요할까요?
  • CPU 속도, RAM 용량, 저장 장치 속도 중 어떤 것이 앱의 '체감 속도'에 가장 큰 영향을 미칠 수 있을까요? 이유와 함께 설명해주세요.
  • iOS의 A-시리즈 칩셋에서 CPU와 GPU가 메모리를 공유하는 Unified Memory Architecture가 앱 개발에 미치는 영향은 무엇인가요?
    • Metal 프레임워크를 사용할 때 CPU와 GPU 간의 데이터 전송을 최적화하는 방법은 무엇인가요?

CPU (Central Precessing Unit - 중앙 처리 장치)

컴퓨터 시스템에서 모든 계산과 명령어 처리를 담당하는 핵심 부품

내부 구성 요소

  1. ALU (산술 논리 연산 장치) : 산술 연산과 논리 연산을 수행
  2. CU (제어 장치) : 명령어를 해석하고 연산 수행 순서와 장치 제어를 담당
  3. 레지스터 : CPU 내부의 초고속 임시 저장 공간, 프로그램을 실행하는데 필요한 값들을 임시로 저장

역할

  1. 명령어 해석 : 메모리에 저장된 명령어를 하나씩 읽고 해석해서 어떤 연산을 할지 파악
  2. 명령어 실행 : 해석한 명령어에 따라 실제 계산(ALU)을 하거나, 다른 장치와 통신을 진행
  3. 제어 : 실행되는 과정에서 CU가 각 장치에 제어 신호를 보냄

상호작용

  • RAM : CPU는 RAM에서 명령어와 데이터를 가져와 실행하고, 결과를 다시 저장합니다.
  • 저장장치 : CPU는 저장 장치에서 명령어와 리소스를 RAM으로 불러온 후 처리합니다.

RAM (Random Access Memory - 주 기억장치)

실행 중인 프로그램의 데이터와 명령어를 임시로 저장하는 고속 메모리, 휘발성 메모리이며 CPU가 가장 자주 접근하는 메모리

내부 구성의 특징

  • 대부분 DRAM (Dynamic RAM) 기반으로 구성됨 - 레지스터는 SRAM으로 구성
  • 휘발성 : 전원이 꺼지면 저장된 내용이 모두 사라짐
  • 주소 기반 접근 : 데이터를 저장할 때 주소를 기준으로 빠르게 읽고 쓸 수 있음
  • 읽기/쓰기 : 데이터를 자유롭게 읽고 수정할 수 있음

역할

  1. 앱의 코드 및 데이터 저장 : 저장 장치에서 불러온 명령어(코드)와 앱 실행 중 생성되는 변수, 객체, 리소스 등을 RAM에 저장합니다.
  2. CPU와 데이터 교환 버퍼 : CPU는 항상 RAM에서 명령어와 데이터를 가져와 처리합니다. 처리한 연산 결과도 RAM에 다시 저장됩니다.

상호작용

  • CPU : RAM에 저장된 명령어를 읽고 실행합니다.
  • 저장장치 : 앱 실행 시 저장장치에서 프로그램을 읽어 RAM에 올립니다.

저장장치 (Storage - SSD, HDD)

컴퓨터에서 데이터를 장기적으로 보관하는 장치

역할 및 종류

  1. HDD / SSD 로 2종류가 있으며 iOS 기기는 SSD를 사용합니다.
  2. 앱실행에 필요한 모든 파일의 원본 저장소입니다. - RAM이 휘발성이므로, 앱이 종료되면 저장 장치에서 다시 불러옵니다.

상호작용

  • CPU : OS의 도움을 받아 I/O 요청을 통해 간접적으로 접근합니다.
  • RAM : 실행할 파일이나 리소스는 저장 장치에서 RAM으로 복사됩니다.

앱 실행 단계

  1. CPU는 저장 장치에서 앱 바이너리 정보를 RAM으로 불러옵니다.
    1. 앱바이너리를 통해 내부 코드 및 plist의 메타데이터를 불러오고 이후 plist를 통해 번들의 리소스 정보 등에 접근해 추가적인 리소스를 불러온다.
  2. 이후 RAM에서 명령어와 데이터를 가져와 CPU의 CU가 해석하고 ALU가 연산을 수행합니다.
  3. 연산을 수행하는 과정에서 발생한 데이터나 주소 정보는 레지스터에 임시 저장됩니다. 가상 주소의 경우, MMU가 OS의 페이지 테이블을 기반으로 물리 주소로 변환합니다.
  4. 또한 연산 수행에 필요한 추가 리소스는 저장 장치에서 RAM으로 불러와 사용합니다.
  5. 앱 실행에 필요한 명령을 전부 처리하면 앱을 화면에 출력합니다.

 

RAM이 부족하면 iOS 시스템은 어떤 동작을 할까요? 이것이 앱 개발 시 왜 중요할까요?

iOS는 앱마다 메모리 사용한도가 존재한다. 사용한도를 초과하게되면 아래와 같은 동작을 진행한다.

  1. didReceiveMemoryWarning() 호출을 통해 메모리 경고를 보냅니다.
  2. 메모리 경고를 받은 시점에서 캐시, 이미지 등 메모리를 잡아먹지만 사용하지 않는 부분을 해제해야합니다.
  3. 그럼에도 여전히 해결이 되지않으면 앱이 강제 종료 됩니다.

즉, 앱이 강제 종료되는 불상사가 발생하지 않으려면 메모리를 잘 관리해야합니다. → 메모리 누수X, 이미지 캐시 관리 등

CPU 속도, RAM 용량, 저장 장치 속도 중 어떤 것이 앱의 '체감 속도'에 가장 큰 영향을 미칠 수 있을까요? 이유와 함께 설명해주세요.

체감 속도에 가장 큰 영향을 미치는 부분은 저장장치에서 데이터를 읽고 RAM에 올리는 부분으로 저장 장치의 속도입니다. 가장 큰 이유는 SSD(저장장치)의 데이터를 읽고 쓰는 속도의 차이 입니다. HDD에 비해 그 속도가 빨라졌다고 하더라도 RAM보단 느립니다. 다음 이유는 사용자가 마주하는 컨텐츠 적인 요소를 저장 장치에서 불러오기 때문입니다. 그래서 개발자들은 비동기 처리를 통해 저장 장치에서 데이터를 불러오는 방식을 빠르게 처리하며, 이 지점을 최적화를 하면 사용자로 부터 “앱의 반응이 빠르다”라는 인상을 줄 수 있다고 생각합니다.

iOS의 A-시리즈 칩셋에서 CPU와 GPU가 메모리를 공유하는 Unified Memory Architecture가 앱 개발에 미치는 영향은 무엇인가요?

A-시리즈 칩셋

  • Apple Silicon A시리즈를 의미

UMA(Unified Memory Architecture)

  • CPU와 GPU가 동일한 물리적 메모리(RAM)를 공유하는 구조
  • 기존에는 데이터 공유를 위해 복사 비용이 발생했지만 UMA의 경우에는 같은 RAM을 사용하기 때문에 복사 비용이 발생하지 않습니다.

장점

  1. 메모리 절약 : 동일한 데이터를 두 번 저장할 필요 없습니다.
  2. 성능 향상 : 복사없이 사용하기 때문에 버퍼 전송 비용이 절감됩니다.
  3. 개발 간소화 : 복잡한 동기화를 하지않아 부담이 감소합니다.

앱 개발에 미치는 영향

  • 메모리 사용 최적화 : GPU용 VRAM이 따로 없기 때문에 전체 RAM 용량 관리가 중요합니다.
  • 개발의 편리성 : 개발 시 CPU-GPU 전환을 고려하지 않아도 됩니다.
  • 성능적 이점 : 이미지 처리, 실시간 렌더링 등에서 큰 효과를 발휘합니다.

Metal 프레임워크를 사용할 때 CPU와 GPU 간의 데이터 전송을 최적화하는 방법은 무엇인가요?

https://developer.apple.com/documentation/metal/resource-fundamentalshttps://developer.apple.com/documentation/metal/mtlstoragemode/shared에 따르면

MTLStorageMode.shared를 통해 CPU와 GPU 모두에서 공유 저장소의 리소스에 액세스할 수 있다고 나와있다. 추가로 애플실리콘환경에서는 shared가 기본값이며, 그외에는 private가 기본값이다. private 환경에서는 GPU에서만 접근이 가능하다고한다.

Metal을 사용한 GPU 렌더러 최적화하기 WWDC23

https://developer.apple.com/kr/videos/play/wwdc2023/10127/

 

 

 

참고 자료

https://hongong.hanbit.co.kr/컴퓨터의-4가지-핵심-부품cpu-메모리-보조기억장/

https://explorer89.tistory.com/114

https://velog.io/@yongheon/앱-실행-시-CPU-RAM-저장-장치의-역할

https://itpe.jackerlab.com/entry/통합-메모리-아키텍처UMA-Unified-Memory-Architecture

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함