꾸준히 안타치기

프로세스와 스레드 본문

CS

프로세스와 스레드

글자줍기 2022. 6. 8. 16:38
반응형

프로세스 :  컴퓨터가 어떤일을 하고 있는 상태

동시성

병렬성

더보기

비동기(Asynchronous) 프로그래밍

기다리지 않고 바로 다음 작업을 실행 . 병렬적 

동기란? 비동기란? 

https://bluedogs.tistory.com/143

동시성(Concurrency) 프로그래밍 /  비동기

동시에 실행되는 것 처럼 보이는 것. 여러 쓰레드가 번갈아가면서 실행되는 방식

병렬성(Parallelism) 프로그래밍 / 비동기

물리적으로 정확히 동시에 실행되는 것. 

물리적으로 동시에 정확히 동시에 실행되는 것을 말합니다. 멀티 코어에서 멀티 스레드를 동작시키는 방식으로 데이터 병렬성(Data Parallelism)과 작업 병렬성(Task Parallelism)으로 구분됩니다.

  • 데이터 병렬성 : 전체 데이터를 나누어 서브 데이터들로 만든 뒤, 서브 데이터들을 병렬 처리해서 작업을 빠르게 수행하는 방법입니다.
  • 작업 병렬성 : 서로 다른 작업을 병렬 처리하는 것을 말합니다.

 

 

동시성(Concurrecny)과 병렬성(Parallelism) 차이

동시성 프로그래밍과 병렬성 프로그래밍 모두 비동기(Asynchronous) 동작을 구현할 수 있지만, 그 동작 원리가 다릅니다. 아래 그림처럼 비유해 볼 수 있습니다.

  • 동시성(Concurrecny) : 통장을 만들러 온 N개의 대기열과 한 명 이상의 은행직원
  • 병렬성(Parallelism) : 통장을 만들러 온 N개의 대기열과 N명의 은행직원
 
즉, 동시성은 싱글코어 및 멀티코어에서 모두 구현할 수 있지만, 병렬성은 멀티 코어에서만 구현할 수 있습니다.

 

iOS 환경 동시성 프로그래밍 지원 종류

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

https://www.boostcourse.org/mo326/lecture/16866/?isDesc=false 

 

컴퓨터는 여러개의 프로세스를 돌릴 수 있게 됨

한 프로세스 내에서도 여러갈래의 작업들이 동시에 진행될 필요가 있는데 이 하나하나의 작업을 스레드라고 한다.

프로세스는 요리사 / 끊임없이 만들어내는 각각의 메뉴들은 스레드라고 비유할 수 있다.

스레드 :  하나의 프로세스 내에서 실행되는 작업흐름의 단위

쓰레드란, 동시작업을 위한 하나의 독립적인 실행단위입니다.

쓰레드는 하나의 프로세스안에서 동시에 수행되어야 하는 작업을 위해서 필요합니다.

 

컴퓨터는 프로세스마다 자원을 분할해서 할당한다.

프로세스는 컴퓨터의 자원을 분할해서 쓰지만 스레드는 프로세스마다 주어진 전체 자원을 함께 사용한다.

  • 장점 : 속도와 효율성이 좋다.
  • 단점 : 동시에 실행했을때, 시간문제로 발생하는 문제가 생길 수 있다. 오류찾고 원인을 찾기가 까다롭다. but 이것을 안전하고 쉽게 해주는 도구와 프로그래밍 방식들이 존재한다.(  closure, FunctionalProgramming, Lambda, Actor ..)

https://youtu.be/iks_Xb9DtTM  얄코

 


프로세서

프로세서는 하드웨어적인 측면에서 컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛입니다. 대표적으로 중앙처리장치(Central Processing Unit - CPU)가 이에 속합니다. 한 컴퓨터가 여러 개의 프로세서를 갖는다면 멀티 프로세서라고 말합니다. 듀얼 프로세서라고 한다면 한 컴퓨터에 두 개의 프로세서가 운용된다고 할 수 있습니다.

 

코어

프로세서에서 코어는 주요 연산회로입니다. 싱글코어는 말 그대로 하나의 연산회로가 내장되어있는 것이고 듀얼코어는 두 개의 연산회로가 내장된 것을 뜻합니다. 또, 여러 개의 코어를 가진 프로세서를 멀티 프로세서라고 합니다.

 

프로그램(Program)과 프로세스(Process)

프로그램은 일반적으로 보조기억 장치에 저장된 실행코드 즉, 생명이 없는 상태를 말합니다. 프로세스는 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위를 말합니다. 동시에 여러 개의 프로세스를 운용하는 시분할 방식을 멀티태스킹이라고 합니다. 이러한 프로세스 관리는 운영체제에서 담당합니다.

 

스레드(Thread)

스레드는 하나의 프로세스 내에서 실행되는 작업흐름의 단위를 말합니다. 보통 한 프로세스는 하나의 스레드를 가지고 있지만, 프로세스 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있습니다. 이러한 방식을 멀티스레딩이라고 합니다. 그리고 프로그램 실행이 시작될 때부터 동작하는 스레드를 메인 스레드라 하고 그 외에 나중에 생성된 스레드를 서브 스레드 또는 세컨더리 스레드라고 합니다.

 

https://www.boostcourse.org/mo326/lecture/16866/?isDesc=false 야곰부스트코스


https://www.youtube.com/watch?v=1grtWKqTn50 

 

반응형

'CS' 카테고리의 다른 글

면접 대비 질문정리 / iOS 면접질문 준비  (0) 2022.12.15
Restful API  (0) 2022.12.15
Message Queue  (0) 2022.04.15
CS 지식 링크  (0) 2022.03.25
API와 라이브러리, SDK  (0) 2022.01.19
Comments