[TIL 3/3] 동시성 vs 병렬성 그리고 프로세스와 스레드

김경민·2023년 1월 10일
0

TIL

목록 보기
13/15
post-thumbnail

사전 간단 지식

  • CPU : 명령어를 해석하고 실행하는 장치
  • 프로그램 : 명령어들의 집합체
  • 메모리
    • 주메모리 : 램
    • 보조메모리 : HDD SSD
  • 운영 체제 : 컴퓨터 시스템을 운영하고 관리하는 소프트웨어
  • 시스템 버스 : 요소들을 연결해주는 역할

프로세스와 스레드

프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고
스레드는 프로세스 내에서 실행되는 여러 작업의 단위이다.

  • 예를 들어서 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문 집합체인 프로그램을 실행 했을 때, 보조 메모리에 있던 것이 주메모리에 올라와서 작업이 진행되는 것이다.
    => 프로세스가 생성된다는 의미는 프로그램이 실행된 동적인 상태가 된다는 것이다.

  • 그렇게 된다면 CPU는 프로세스가 해야할 작업을 수행하고, 작업을 수행하는 단위가 스레드인 것이다.

  • 만약 작업을 해야할 작업이 하나이면 싱글 스레드, 여러개면 멀티 스레드이다.

멀티 스레드의 장단점

  • 장점 : 멀티 스레드에서 스레드끼리 메모리 공유와 통신이 가능하다; 자원의 낭비를 막고 효율성을 향상할 수 있다.
  • 단점 : 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미친다.

동시성(병행성) vs 병렬성

동시성(concurrency)

  • 한 번에 여러 작업을 동시에 다루는 것을 의미한다(스위칭을 한다)
  • 논리적 개념이다. 싱글 스레드(asyncio), 멀티 스레드 적용이 가능하다.

병렬성(Parallelism)

  • 한 번에 여러 작업을 병렬적으로 처리하는 것을 의미한다(at the same time)
  • 멀티 코어, 멀티 스레딩
  • 파이썬에서는 스레드가 병렬성으로 구현될 수 없다. GIL(Global Interpreter Lock), 동시성으로 구현이 돼야한다.
profile
적은 대로 된다.

0개의 댓글