---
# System prepended metadata

title: Concurrency Programming

---

# Concurrency Programming

### 동시성(Concurrency) 프로그래밍, 병렬(Parallelism) 프로그래밍은 어떻게 다르며, 우리가 주로 접할 iOS 환경에서는 무엇을 더 고려해봐야 할까?

쓰레드가 뭐지 = 프로세스에서 동작하는 실행의 흐름
- 동시성 프로그래밍은 여러 쓰레드를 번갈아가며 작업하는 것.

- 병렬 프로그래밍은 하드웨어적인 Thread를 사용하는 것.
    - 하드웨어적인 Thread은 물리적인 부품 Core에서 파생된 Thread이다.
    
- iOS 환경에서는 동시성을 좀 더 고려해야 한다.
    - 병렬성을 챙기게 되면 하드웨어가 바뀌었을 때 처리가 또 바뀌기 때문에

하나는 서버에서 받아오는거
하나는 ui뿌려주는거 

멀티 쓰레드 - 병렬
여러개의 작업들을 여러개의 쓰레드에서 실행시키는 것 - 동시성

하나의 작업을 여러개의 쓰레드? - 병렬

병렬 : a task를 여러개로 쪼개서 빠르게

동시성 : a, b, c Task를 다른 스레드서 각각 동시에 작업.

cpu 코어당 멀티스레드 분배 : 병렬
iOS운영체제 내에서 생성한 멀티스레드 : 동시성

동시성은 말 그대로 동시에 많은것을 처리하는 것

![img](https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fk.kakaocdn.net%2Fdn%2FbOxdLp%2FbtrnDF0SXMV%2FUS3zeG1RkRNGitKljyJbxk%2Fimg.png)

![](https://i.imgur.com/4OgIqc3.png)

커피머신 = 코어
동시성을 해봤자 속도는 그대로.
병렬은 속도는 1/n
|동시성|병렬성|
|--|--|
|동시에 실행되는 것 같이 보이는 것|실제로 동시에 여러 작업이 처리되는 것|
|싱글 코어에서 멀티 쓰레드(Multi thread)를 동작 시키는 방식|멀티 코어에서 멀티 쓰레드(Multi thread)를 동작시키는 방식|
|한번에 많은 것을 처리|한번에 많은 일을 처리|
|논리적인 개념|물리적인 개념|

### 동시성 프로그래밍, 병렬 프로그래밍, 동기(synchronous)와 비동기(asynchronous)의 개념은 어떤 상관관계를 가질까?
- 동시, 병렬
    - 
- 동기, 비동기
    - 

### 애플이 동시성 프로그래밍 또는 병렬 프로그래밍을 지원하기 위해 사용하는 기술엔 무엇무엇이 있을까?
- GCD(Grand Central Dispatch) : 멀티 코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 기술.
- 연산 대기열(Operation Queue) : 비동기적으로 실행되어야 하는 작업을 객체 지향적인 방법으로 사용
- Thread : 멀티스레드 프로그래밍을 위한 애플에서 제공하는 스레드 클래스

### 프로그래밍에서 Thread는 무엇이고 iOS 환경에서 이를 다루기 위한 방법에는 무엇무엇이 있으며 그 차이는 무엇일까?
- 

# Process, Processor

### Windows 운영체제는 32bit 버전, 64bit 버전, ARM 버전 등 다양한 버전이 존재합니다. 이 버전은 어떤 것을 의미하며 왜 이렇게 다양한 버전이 존재해야 할까요?
- CPU 레지스터 장치의 비트 폭(32bit)
- 공간을 4G 밖에 인식할 수 없어서 64bit 등장

high low 병렬을 활용해야 했던게 아닌가?

### 내 매킨토시의 프로세서는 무엇인가요?
삼텔..😭
- intel 2.3 GHz 8코어 Intel Core i9
- intel 2.9 GHz 6코어 Intel Core i9
- intel 3.6 GHz 쿼드 코어 Intel Core i3

### 애플이 새로 출시한 매킨토시 컴퓨터에서 iOS의 애플리케이션을 실행할 수 있는 이유는 무엇일까요?
- iOS와 MacOS가 같은 ARM 프로세서(m1)를 사용해서?

- ARM 아키텍처(ARM architecture, 과거 명칭: Advanced RISC Machine, 최초 명칭: Acorn RISC Machine)는 임베디드 기기에 많이 사용되는 RISC 프로세서이다. 저전력을 사용하도록 설계하여 ARM CPU는 모바일 시장 및 싱글 보드 컴퓨터로 불리는 개인용 컴퓨터에서 뚜렷한 강세를 보인다.

    - 1990년 11월에 애플과 VLSI의 조인트 벤처 형식으로 ARM(Advanced RISC Machines Ltd.)가 생김.
### 이전의 매킨토시 컴퓨터에서는 불가능했던 이유는 무엇일까요?
- 프로세서가 달라서 (intel / ARM) OS가 다름

x86 / x64  
ARM기반 m1

x86 x64 ARM

### 프로세서를 위한 프로세스 스케쥴링 방식에는 어떤 것이 있는지 간략히 알아봅시다.
- FCFS 
- SJF
- SRT : SJF + 라운드로빈 (남은 시간이 적은 것 부터)
- 우선순위 스케줄링
- 라운드 로빈

### 운영체제 입장에서 다양한 프로세스를 스케쥴링하는 규칙을 만들어봅시다.
- SRT 


# 보너스

### 앞으로 iOS와 macOS는 통합될까요?
- 될 것 같긴한데 애플맘대로
- 넵..- 아이패드에 m1이 올라갔으니 아이패드에 macOS를 올려준다면 가능할 것 같습니다.
    - 아이패드용 XCode , Final Cut Pro , Logic Pro 가 몇몇 개발자들에게 전달되었다고 하는 루머가 있던데...
- 그렇다면 iOS는 어떻게 될까?
    - 삼성Dex 같은 형태로 구현할 수 있을것 같긴 한데 애플이 풀어주느냐 마느냐의 차이지 않을까..