
동기 함수와 비동기 함수에 대한 딥한 이해를 하기 위해 포스팅을 하게 되었다.많은 개발자가 "비동기가 빠르다", "비동기가 효율적이다"라고 하는데 정확히 왜 빠른지, 어떤 원리로 동작하는지에 대해 모호하게 이해하고 있는 경우가 많다. 그래서 이번에 동기와 비동기 함수의 내부 동작 원리를 Thread와 Context Switching 관점에서 이해해보고, 언제 어떤 방식을 선택하는 게 효율적인지에 대해 작성해보려고 한다.📝 목차1. 동기 함수의 근본적인 문제점2. 비동기 함수 이해3. 상황에 따라 동기와 비동기 선택1. 동기 함수의 근본적인 문제점 📌 단일 Thread의 한계 동기 함수의 가장 큰 문제는 순차적 실행 방식인 것을 다들 알고 있을 것이다.한번에 하나의 작업만 처리할 수 있기 때문에 I/..

📝 목차1. 프로세스와 스레드의 차이점2. 멀티 스레딩이 필요한 이유는?3. GCD(Grand Central Dispatch) 1. 프로세스와 스레드의 차이점 프로세스: 운영체제가 자원을 할당하여 실행하는 독립적인 프로그램의 인스턴스스레드: 프로세스 내에서 실행되는 작업 흐름의 단위 1️⃣ 프로세스 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받는다.기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 독립적인 메모리 공간을 가지며, 다른 프로세스와 메모리를 직접적으로 공유하지 않는다. 2️⃣ 스레드 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 스택을 제외한 Code, Data, Heap 영역은 공유해 서로 읽고..

개발을 하다 보면 앱 성능과 안정성을 좌우하는 핵심 요소 중 하나가 바로 메모리 관리라는 사실을 알게된다. 아무리 기능이 뛰어난 코드라도 메모리 누수가 발생하면, 결국 앱의 속도 저하나 예기치 않은 종료로 이어질 수 있다. 특히 Swift나 Objective-C와 같이 참조 타입이 존재하는 언어에서는 객체의 생명주기와 메모리 해제 시점을 명확히 이해하고 관리하는 것이 필수인 것 같다. 이번 글에서는 참조 타입과 Heap, ARC의 개념, 다양한 참조 방식(strong/weak/unowned), 그리고 ARC와 GC의 차이점까지, 메모리 관리의 기본기를 차근차근 정리해보려 한다!! 📝 목차1. 참조 타입과 Heap2. ARC란?3. strong/weak/unowend 참조4. ARC와 GC의 차이점1..

앱 실행 과정과 RAM 부족 시 시스템 동작, 그리고 앱의 체감 속도에 영향을 미치는 요소에 대해 알아보자. 📝 목차1. CPU, RAM, 저장장치 역할2. 앱 실행시 구성 요소 동작 순서3. iOS에서 RAM 부족시 발생하는 시스템 동작4. 앱의 '체감 속도'에 가장 큰 영향을 미치는 요소 1. CPU, RAM, 저장장치 역할 1️⃣ CPU CPU는 컴퓨터의 핵심적인 부분으로 모든 계산과 명령어 처리를 담당한다. 프로그램 명령을 해석하고 실행하며, 연산(산술/논리 연산)과 제어(명령 실행 순서, 분기, 인터럽트 등)를 수행한다. 명령어 실행: 주어진 명령어를 해석하고 실행연산: CPU 내부의 연산 장치(ALU)를 사용하여 산술 및 논리 연산을 수행제어: 제어 장치(Control Unit)를 통해..