Skip to content

Latest commit

 

History

History
81 lines (64 loc) · 5.36 KB

220419Concurrency_Parallelism_sync_async.md

File metadata and controls

81 lines (64 loc) · 5.36 KB

TIL 220419Concurrency_Parallelism_sync_async

🔥학습 내용

코어와 스레드

  1. 코어
  • CPU의 핵심으로 실제 일을 처리
  • 코어는 한번에 한가지 일만 처리할 수 있음
  • 싱글 코어에서 여러가지 작업을 동시에 하는 것 처럼 보이는 것은 시분할로 나누어 스레드를 번갈아 가며 처리하는 동시성 프로그래밍 덕분에 가능
  1. 스레드
  • 하드웨어에서의 스레드와 소프트웨어에서의 스레드로 구분
  • 하드웨어에서의 스레드는 논리적인 코어. 1코어 2스레드의 경우 실제로 코어는 1개이지만 코어가 2개인 것 처럼 작업을 처리
  • 소프트웨어에서의 스레드는 논리적인 스레드. 프로세스 내부에서의 작업 단위가 되는 가상의 스레드.

Concurrency Programming

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

    • 여러개의 스레드를 이용하여 동시에 여러 작업을 처리
    • 다른 작업(task)을 각각의 다른 스레드로 나눠서 번갈아 가면서 진행
    • 실제로는 동시에 처리하는 것이 아닌 여러가지 작업을 나열해두고 하나씩 번갈아가면서 작업을 처리하는 것이지만, 아주 빠르게 Context Switching을 하기 때문에 동시에 처리하는것으로 보여짐
  • 병렬성(하드웨어적)

    • CPU(코어)가 여러 개 있을 때 가능
    • 실제로 물리적으로 동시에 작업을 처리
    • 여러 개의 코어가 하나의 작업을 분담해서 처리
    • 많은 연산이 필요한 그래픽 처리나 머신 러닝에서는 적극적으로 사용
  • 결론적으로 개발자는 동시성 프로그래밍을 고려해야 한다.

  1. 동시성 프로그래밍, 병렬 프로그래밍, 동기(synchronous)와 비동기(asynchronous)의 개념은 어떤 상관관계를 가질까?
  • 동기
    • 해당 task가 끝날 때까지 기다리는 것, 작업의 흐름이 끊긴다.
  • 비동기
    • 해당 task가 끝나지 않아도 다음 task 실행, 작업의 흐름이 끊기지 않는다.
  • 상관관계
    • 동시성은 Serial인지, Concurrent인가는 스레드가 단일 스레드인지, 다중 스레드인지의 구분
    • 동기/비동기는 스레드의 수와는 무관하게 작업이 끝나기를 기다리냐, 기다리지 않느냐의 구분
    • 따라서 완전히 다른 문제로 보아야 함.
  1. 애플이 동시성 프로그래밍 또는 병렬 프로그래밍을 지원하기 위해 사용하는 기술엔 무엇무엇이 있을까?
  • GCD(Grand Central Dispatch ) : GCD takes care of creating the needed threads and of scheduling your tasks to run on those threads. : 쓰레드 만들고 관리하는 기술
  • operation queue = Cocoa operations : GCD와 유사하지만 더 빠르고 효율적으로 실행시킨다. an object-oriented way to encapsulate work that you want to perform asynchronously 객체 지향적인 방식
  1. 프로그래밍에서 Thread는 무엇이고 iOS 환경에서 이를 다루기 위한 방법에는 무엇무엇이 있으며 그 차이는 무엇일까?
  • thread : 작업 흐름의 단위, 하나의 프로세스 내에서 실행되는 흐름의 단위
  • GCD : Dispatch 프레임워크 이용
  • operation : Foundation 프레임워크 안의 NSOperationQueue class 이용

Process, Processor

  1. Windows 운영체제는 32bit 버전, 64bit 버전, ARM 버전 등 다양한 버전이 존재합니다. 이 버전은 어떤 것을 의미하며 왜 이렇게 다양한 버전이 존재해야 할까요?
  • 버전의 의미: 사용하는 CPU 프로세서의 차이이며, 32비트는 컴퓨터 CPU(중앙 처리 장치)가 데이터를 처리할 때 사용하는 ‘레지스터’의 크기를 말한다. 레지스터는 극히 소량의 데이터나 처리 중인 중간 결과를 일시적으로 기억해 두는 고속의 전용 영역을 말한다.
  • 기술의 발전으로 여러 버전이 생겼다.
  • 사용하는 사람이 아직 존재해서 여러 버전을 지원한다.
  1. 내 매킨토시의 프로세서는 무엇인가요?
  • 2.3 GHz 8코어 Intel Core i9
  1. 애플이 새로 출시한 매킨토시 컴퓨터에서 iOS의 애플리케이션을 실행할 수 있는 이유는 무엇일까요?
  • M1 칩과 ARM chip의 구조와 유사해서 실행 가능
  1. 이전의 매킨토시 컴퓨터에서는 불가능했던 이유는 무엇일까요?
  • 인텔의 CPU를 사용해서 내부 구조가 달라서 불가능했다.
  1. 프로세서를 위한 프로세스 스케쥴링 방식에는 어떤 것이 있는지 간략히 알아봅시다.
  • 비선점 : FCFS, SJF, HRN, DeadLIne
  • 선점 : RR,SRT, Multilevel Feedback Queue
  1. 운영체제 입장에서 다양한 프로세스를 스케쥴링하는 규칙을 만들어봅시다.
  • 우선순위가 높은 것 실행?
  1. 앞으로 iOS와 macOS는 통합될까요?
  • 될 것 같다. 이유 : 앱을 컴퓨터에서 실행할 수 있어서, 시도를 계속할 것 같다.(합치면 돈 적게 들 것 같아서)
  • 어려울 것 같다. 이유 : 맥과 폰의 구조를 완벽히 맞추기 힘들 것 같다. 따로 만드는 것이 더 쉬울 것 같다.