이해하고 시작하기 !
프로그램 (Program)
보조기억장치에 저장된 실행코드 -> 생명이 없는 상태
프로세스 (Process)
하나의 프로그램이 메모리에서 실행되는 작업 단위
프로세스 관리는 운영체제에서 담당
스레드 (Thread)
하나의 프로세스 내에서 실행되는 작업흐름의 단위
보통 하나의 프로세스는 하나의 스레드를 가지고 있지만, 여러 스레드를 가지고 있기도 함 : 멀티스레딩
메인 스레드 : 프로그램이 실행될 때부터 동작하는 스레드
비동기(Asynchronous) 프로그래밍
작업 진행 중, 특정 작업에서 오랜 시간이 걸린다면 이를 기다리지 않고 바로 다음 작업을 실행할 수 있게 하는 방식
많은 시간이 필요한 작업은 별도의 공간에서 진행하도록 하고 메인 스레드에서는 바로 다음 코드를 실행
➡️ 병렬 처리 방식
동시성(Concurrency) 프로그래밍
실제로 동시에 실행되는 것은 아니지만, 동시에 실행되는 것처럼 보이도록 하는 방식
싱글 코어(멀티 코어에서도 가능)에서 멀티 스레드를 동작시키기 위한 방식으로, 시간을 쪼개서 번갈아 가며 실행됨
각 스레드들이 각자 병렬적으로 실행되는 것처럼 보이지만, 실제로는 번갈아 가며 실행되고 있는 방식
병렬성 프로그래밍
동시성 프로그래밍과 다르게, 물리적으로 동시에 실행되는 방식
멀티 코어에서 멀티 스레드를 동작시키는 방식으로, 데이터 병렬성과 작업 병렬성으로 구분됨
데이터 병렬성 : 전체 데이터를 나누어 서브 데이터들로 만든 뒤, 서브 데이터들을 병렬 처리해서 작업을 빠르게 수행하는 방법
작업 병렬성 : 서로 다른 작업을 병렬 처리하는 것
'iOS' 카테고리의 다른 글
[iOS] DispatchQueue로 비동기 프로그래밍 (0) | 2020.06.08 |
---|---|
[iOS] 서버에 데이터 요청하기 : URLSessionDataTask (0) | 2020.06.08 |
[iOS] URLSession과 URLSessionDataTask (0) | 2020.06.08 |
[iOS] Grand Central Dispatch (GCD) (0) | 2020.06.08 |
[iOS] OperationQueue로 비동기 프로그래밍 (0) | 2020.06.08 |