GCD에 관하여 - 1
2023. 3. 8. 23:41ㆍIOS
반응형
하드웨어
코어
- CPU는 코어라는 것을 가지고 있다.
- 이 코어의 개수에 따라 싱글코어, 듀얼코어, 쿼드코어 등등으로 불리게 되는데, 코어란 무엇일까?
- 코어는 모든 연산을 처리한다. 여기서 싱글코어와 듀얼코어를 비교하면 속도는 같지만, 한번에 하나의 일, 듀얼코어는 두개의 일을 처리한다.
- 한가지의 일에 대해서는 싱글코어와 듀얼코어의 속도는 같으며 이 속도는
클럭
이라고 표현한다, 다만 한번에 몇가지의 일을 처리할 수 있느냐가 코어의 수에 따라 큰 차이가 난다.
쓰레드
- 쓰레드란 실질적으로 일을 하는 단위이다.
하이퍼쓰레딩
이라는 기술로 1코어에 2개의 쓰레드를 만들 수 있으며, 일반적으로는 1개의 코어가 1개의 쓰레드를 가진다- 하이퍼쓰레딩을 통해 4개의 코어를 가지고 있다면 8개의 쓰레드를 가지고 2개의 코어를 가지고 있으면 4개의 쓰레드를 가진다.
Context Switching
- 만약 컴퓨터가 싱글코어라면 엑셀, 유튜브 이런것을 한꺼번에 할 수 없는걸까?
- 그것은 아니다. 실제로 Context Switching이라는 것을 통해서 사용자가 인지를 할 수 없을 정도로 스위칭을 하며 멀티태스킹을 한다.
- 싱글코어에 싱글쓰레드인데도 이게 어떻게 가능한 걸까?
- 프로세스(=실행 중인 프로그램)는 하나 이상의 쓰레드에서 동작을 하는데, CPU 스케쥴링을 통해 하나의 CPU가 여러 작업들의 공유 시간을 나누어 작업을 수행한다.
- A와 B 프로세스가 있다면 B를 실행하기 위해서는 A를 중단시키고 B로 스위칭을 한다.
- 이를 Process Context Switching이라고 한다.
소프트웨어
쓰레드
- 소프트웨어 쓰레드는 하드웨어 쓰레드에 비해 더 많은 쓰레드를 생성 가능하다.
- 2코어 4쓰레드를 가진 기기를 사용중이어도 실제 소프트웨어 쓰레드는 10개 혹은 20개 혹은 그 이상을 만들수도 있다.
- 프로그램의 작업을 처리하는 것을 의미하며, 하나의 작업을 여러 쓰레드를 통해 실행시켜 실행시간을 단축 시킬 수 있다.
병렬 프로그래밍
- 병렬 프로그래밍은 여러 개의 CPU코어가 하나의
작업
을 처리하는 것이다. - 이는 속도 제한이 있는 CPU에서 오래걸리는 작업의 시간을 단축 시키기 위하여 사용한다.
- 이는 iOS내에서 운영체제가 직접 해주기 때문에 크게 신경 쓰지 않아도 된다.
- 위와 같이 자동차조립이라는 작업이 있다면 이를 위해 자동차 문, 트렁크, 시트 조립 등을 서로 다른 코어에서 실행하는 것을 병렬 프로그래밍이라고 할 수 있다.
동시성(Concurrency) 프로그래밍
- 동시성 프로그래밍은 하나의 코어가 여러 작업을 동시에 처리하는 것이다.
- 이는 위에서 설명한
Context Switching
을 사용하여 실제로는 하나씩 번갈아가며 실행 되지만 사람이 인지하지 못할 정도로 빠르게 일어나기 때문에 동시에 일어나는 것처럼 보여진다.
- 위와 같이 하나의 코어가 여러 쓰레드를 거치면서 작업을 실행한다.
Serial 프로그래밍
- 동시성과 반대되는 개념이다.
- 동시성은 여러개의 쓰레드를 사용한다면 직렬프로그래밍은 하나의 쓰레드만을 이용한다.
- 위와 같이 하나의 쓰레드만을 이용해 작업을 처리하고 순서대로 해당 작업을 처리한다.
반응형
'IOS' 카테고리의 다른 글
GCD에 관하여 - 3 (0) | 2023.03.12 |
---|---|
GCD에 관하여 - 2 (0) | 2023.03.10 |
TableView Section 글자가 대문자로 변해요~ (0) | 2023.02.25 |
Json Decoding 어떤 문제로 실패한걸까?? (0) | 2023.02.25 |
NotificationCenter addObserver의 object활용 (0) | 2023.02.13 |