Apple🍎/Cocurrency
-
GCD vs async/await 제대로 알기Apple🍎/Cocurrency 2025. 3. 26. 22:49
Swift에서는 비동기를 처리하는 방법은 크게GCD(Grand Central Dispatch)를 이용하는 방식과 새로 도입된 async/await를 이용하는 법이 있습니다. 하지만 각 방식에 대한 설명들이 너무 추상적이거나 모호하고 중간 과정들이 생략된 경우가 많아서명확한 동작에 대한 이해가 어려웠습니다. 그래서 직접 각 방법들의 과정들을 자세하게 분석해서 비동기 처리에 대한 껄끄러운 느낌을 없애보도록 하겠습니다. GCD 방식 GCD 방식에서는 비동기 동작을 위해서 DispatchQueue에 async 방식으로 작업을 예약합니다. 네트워크 요청이나 파일 IO등 처리 시간이 오래 걸리는 작업들을 global 큐에 넘겨버림으로써메인 쓰레드의 계속된 작동을 보장하기 위해 주로 사용합니다. ( 화면 드로잉 싸..
-
테스크는 뭘까?Apple🍎/Cocurrency 2025. 2. 7. 21:06
카페 체인점을 차려보자프로그램 ( Program ) 가장 먼저, 프로그램은 카페 체인점의 운영 메뉴얼이라고 생각할 수 있습니다. 실제로 점포를 내고 운영중인 상태는 아니지만 새로운 체인점을 차리게 된다면 필요한 목록과 밟아야하는 절차에 대해서 명시해놓은 책자입니다. 아직 실행되지 않아 메모리 위에 올라오지 않고 디스크에만 저장된 정적인 상태입니다. 메뉴얼에는 다음과 같은 내용이 있을 수 있습니다. 카페를 어떻게 운영할지에 대한 전체 계획 ( = 시스템 아키텍쳐 )필요한 장비와 재료 목록 ( = 하드웨어 자원 , 데이터 )직원들이 따라야할 절차와 규칙 ( = 비즈니스 로직 )메뉴 레시피 및 제조 방법 ( = 함수, 메서드 )프로세스 ( Process ) 프로세스는 위 메뉴얼을 바탕으로 실제로 오픈한 ..
-
쓰레드는 뭘까?Apple🍎/Cocurrency 2025. 1. 27. 21:36
프로세스의 도입으로 하나의 CPU 코어를 여러 프로그램이 시분할(time-sharing) 방식으로 공유할 수 있게 되었습니다. 운영체제는 각 프로세스에 CPU 시간을 조금씩 할당하여 마치 여러 프로그램이 동시에 실행되는 것처럼 보이게 합니다. 메모장, 웹브라우저, 유튜브를 동시에 실행하는 상황을 예로 들어보겠습니다. 메모장에서 파일 저장과 같은 I/O 작업이 발생하면, 해당 프로세스는 I/O 작업이 완료되기를 기다리는 'blocked' 상태로 전환됩니다. 이때 운영체제는 CPU 자원을 웹브라우저나 유튜브와 같은 다른 실행 가능한('ready') 상태의 프로세스들에게만 할당합니다. 그렇지만 메모장 프로그램이 파일을 디스크에 저장하는 동안에도 사용자는 계속해서 텍스트를 입력하거나, 맞춤법 검사 결과를 확인하..
-
프로세스는 뭘까?Apple🍎/Cocurrency 2025. 1. 27. 00:15
프로그램은 컴퓨터가 특정 작업을 수행하기 위해 작성된 명령어들의 집합입니다. 쉽게 말해 우리가 하드디스크에 저장해둔 실행 파일이라고 할 수 있죠. 예를 들어 워드나 크롬 브라우저 같은 응용프로그램 파일들이 이에 해당합니다. 프로그램은 실행되기 전까지는 그저 디스크에 저장된 정적인 상태로 존재합니다. 반면 프로세스는 실행 중인 프로그램을 의미합니다. 프로그램이 실행되면 운영체제는 해당 프로그램을 메모리에 로드하고, CPU 시간과 같은 시스템 자원을 할당합니다. 이렇게 실행되어 메모리에서 동작하는 상태가 바로 프로세스입니다. 초기 컴퓨터 시스템에서는 한번에 하나의 프로그램만 실행할 수 있었습니다. 프로그램은 CPU, 메모리와 같은 컴퓨터의 모든 자원을 독점적으로 사용했기 때문에 자원 관리는 비교적 단순했습..
-
동시성 이해를 위한 컴퓨터 기본 구조Apple🍎/Cocurrency 2025. 1. 26. 20:01
컴퓨터란 데이터들을 정해진 규칙에 따라 연산을 수행하는 장치 입니다. 요리에 한번 비유를 해볼까요? 데이터: 요리의 재료들이 데이터에 해당합니다. 예를 들어 계란, 설탕, 밀가루와 같은 실제 재료들은 컴퓨터가 처리하는 원시 데이터와 같습니다.재료들은 그 자체로는 아무 의미가 없지만, 정해진 규칙에 따라 처리되면 의미 있는 결과물이 됩니다. 정해진 규칙: 레시피가 바로 정해진 규칙에 해당합니다. 레시피는 "계란을 3개 넣고, 설탕 2스푼을 넣은 뒤 섞는다"와 같이 재료를 어떤 순서로, 어떻게 처리해야 하는지 정확히 명시합니다. 이는 컴퓨터 프로그램이 데이터를 어떻게 처리할지 정의하는 것과 같습니다. 연산: 실제 요리 과정이 연산에 해당합니다.재료를 섞고, 반죽하고, 굽는 등의 물리적 행위들은 컴퓨터가 수행..