Olive Study Room
[CS] 동시성(Concurrency) 프로그래밍과 비동기(Asynchronous) 프로그래밍 본문
1. 프로세서, 코어, 프로그램과 프로세스, 스레드의 개념
2. 비동기 프로그래밍과 동시성 프로그래밍
3. 병렬성 프로그래밍
4. 동시성과 병렬성의 차이
https://pengcoder.tistory.com/22 -> Sync, Async, 병렬 프로그래밍, 직렬 프로그래밍에 대한 자세한 내용 확인!!
1. 프로세서, 코어, 프로그램과 프로세스, 스레드의 개념
- 프로세서 : 하드웨어적인 측면에서 컴퓨터 내의 프로그램을 수행하는 하드웨어 유닛. (ex. CPU(Central Processing Unit)) 한 컴퓨터가 여러 개의 프로세서를 갖으면 '멀티 프로세서' / 한 컴퓨터가 두 개의 프로세서를 갖으면 '듀얼 프로세서'
- 코어 : 주요 연산 회로. 싱글코어, 듀얼코어, 멀티코어
- 프로그램, 프로세스 : 프로그램은 실행코드일 뿐 생명이 없음. 프로세스는 프로그램을 구동하여 프로그램 자체와 프로그램 상태가 메모리상에서 실행되는 작업 단위. 동시에 여러 개의 프로세스를 운용하는 시분할 방식을 '멀티 태스킹'
- 스레드 : 하나의 프로세스 내에서 실행되는 작업흐름의 단위. 보통 한 프로세스는 하나의 스레드를 갖고 있지만 프로세스에 따라 둘 이상의 프로세스를 동시에 실행할 수도 있음(멀티 스레딩).
- 프로그램 실행이 시작될 때부터 동작하는 스레드는 '메인 스레드'
- 나중에 생성된 스레드는 '서브 스레드' or '세컨더리 스레드'
2. 비동기(Asynchronous) 프로그래밍과 동시성(Concurrency) 프로그래밍
- 비동기(Asynchronous) 프로그래밍 : 프로그래밍의 주 실행 흐름을 멈추어서 기다리는 부분 없이 바로 다음 작업을 실행할 수 있게 하는 방식. 코드의 실행 결과 처리를 별도의 공간에 맡겨둔 뒤 결과를 기다리지 않고 바로 다음 코드를 실행하는 병렬처리 방식. 언어 및 프레임워크 등으로 구현 가능. (ex. 순서대로 일을 해야할 때 직접 하나씩 하는 대신 전화로 A를 처리해달라고 하고, 바로 전화로 B를 처리해달라고 하는 식. 동기 프로그래밍(Synchronous)은 하나씩 처리하는 것)
- 동시성 프로그래밍 : 동시에 실행되는 것처럼 보이는 것. 싱글코어(또는 멀티 코어)에서 멀티 스레드를 동작시키기 위한 방식. 멀티 태스킹을 위해 여러 개의 스레드를 번갈아가며 실행하는 것. 동시성을 이용한 싱글 코어의 멀티 태스킹은 각 스레드들이 병렬적으로 실행되는 것처럼 보이지만 사실 번갈아가면서 실행되고 있는 방식.
3. 병렬성(Parallelism) 프로그래밍
물리적으로 정확히 동시에 실행되는 것. 멀티 코어에서 멀티 스레드를 동작시키는 방식. 데이터 병렬성(Data Parallelism), 작업 병렬성(Task Parallelelism)으로 구분.
데이터 병렬성 : 전체 데이터를 나누어 서브 데이터들로 만든 뒤, 서브 데이터들을 병렬 처리해서 작업을 빠르게 수행하는 방법.
작업 병렬성 : 서로 다른 작업을 병렬처리하는 것
4. 동시성(Concurrency)과 병렬성(Parallelism) 차이
둘 다 비동기 동작을 구현할 수 있지만 원리가 다름.
-> 동시성은 싱글코어 및 멀티코어에서 모두 구현할 수 있지만, 병렬성은 멀티 코어에서만 구현 가능
+ iOS 환경 동시성 프로그래밍 지원 종류
- Grand Central Dispatch (GCD) : 멀티 코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 기술
- 연산 대기열 (Operation Queue) : 비동기적으로 실행되어야 하는 작업을 객체 지향적인 방법으로 사용
- Thread : 멀티스레드 프로그래밍을 위한 애플에서 제공하는 스레드 클래스
더보기
자료 출처 : www.boostcourse.org/mo326
'cs' 카테고리의 다른 글
[CS] OOP(Object Oriented Programming)란? (0) | 2021.06.06 |
---|---|
[CS] HTTP 프로토콜(HyperText Transfer Protocol), URL (1) | 2021.05.17 |
Comments