기어가더라도 제대로

0. 동시성 프로그래밍의 필요성 본문

CS/동시성

0. 동시성 프로그래밍의 필요성

Damagucci-juice 2022. 8. 31. 17:18

필요성

동시성이 없다면 버벅일 수 있다.

동시성이 있다면 버벅이지 않는다.

-> 성능, 반응성 은 최적화

‏‏‎ ‎

스레드는 무엇이고, 코어는 무엇인가?

‏‏‎ ‎

  • CPU core
    • 싱글 코어는 한번에 하나의 일만 할 수 있다.
    • 프로세스 중에 전환이 아주 빨라 사람이 보기엔 동시에 작업되는 것처럼 보임

동시성 프로그래밍의 필요성 image

  • 2004년도에 클럭의 한계 상한에 도달했다.
  • 싱글코어는 더이상 발전이 어렵다.
    • 멀티 코어 체제로 가자
    • 코어 끼리의 통신이 중요 포인트

‏‏‎ ‎

스레드

  • 4코어 8 스레드는 뭔가요?
  • 여기서 용어 정리가 필요한데,
    • 제조사에서 말하는 스레드
    • 소프트웨어 적인 스레드
  • 이 둘이 다르다.

‏‏‎ ‎

하이퍼 스레딩(2002)

  • 하나의 코어를 두개의 스레드로 용도를 나누어서 마치 물리적인 두개의 코어가 있는 것처럼 보이게 하는 기술
  • OS 조차도 CPU가 2개로 보인다.

‏‏‎ ‎

변천사

  • 1코어 2스레드
  • 2코어 2스레드
  • 4코어 8스레드
  • 6코어 12스레드

‏‏‎ ‎

요약

  1. 코어
    1. 물리적인 CPU의 프로세서
    2. 일을 하는 녀석
  2. 스레드
    1. 실제로는 하나의 코어지만, 두개의 코어 처럼 보여지는 논리적인 CPU
    2. 하이퍼 스레딩(Intel), SMT(AMD)

‏‏‎ ‎

버벅였던 이유를 자세하게

  • 싱글 스레드 환경

동시성 프로그래밍의 필요성 image

  • 단순히 `print()` 정도의 작업은 그렇게 많은 자원을 소모하지 않아서 여러번 실행하더라도 버벅이지 않음
  • 이미지 가져오는 작업같은 경우
    • 1. 압축파일 다운로드
    • 2. 압축을 풀고
    • 3. 이미지 파일을 변형(블러처리)
    • 4. 셀에 이미지 표시
  • 총 네단계로 구성되기에 버벅여 보임
  • iOS는 16ms 마다 화면을 업데이트 하는데 이 과정에서 버벅이는 것 처럼 느껴짐

‏‏‎ ‎

‏‏‎ ‎

어떻게 분산 시킬 수 있을까?

동시성 프로그래밍의 필요성 image

이것이 이 수업의 목적

  • 작업을 어떻게 다른 스레드에서 동싱에 일을 수행하게 할 수 있을까?
    • 작업을 대기행렬에만 보내면 된다.
    • 대기열은 선입선출로 동작한다.
    • 다시 반복하면, 작업을 큐로 보내자

동시성 프로그래밍의 필요성 image

‏‏‎ ‎

동시성 프로그래밍의 필요성 image

‏‏‎ ‎

결론

작업(Task)을 큐(Queue)로 보내자

‏‏‎ ‎

'CS > 동시성' 카테고리의 다른 글

5. GCD 사용시 주의해야할 사항  (0) 2022.09.26
4. 디스패치 큐의 종류  (0) 2022.09.26
3. 직렬과 동시  (0) 2022.08.31
2. 동기(Synchronous) VS Asynchronous(비동기)  (0) 2022.08.31
1. GCD 와 Operation  (0) 2022.08.31
Comments