프로세스는 뭐고 스레드는 뭔가요?

KIM YONG GU·2023년 9월 4일

얄팍한코딩사전

목록 보기
8/23

🎬 영상 주요 포인트

⚙️ 프로세스의 개념
여러분의 컴퓨터에서 실행할 수 있는 파일
윈도우의 경우 이름 뒤쪽에 .exe 붙어있는
그런 파일들을 '프로그램'이라고 해요.

그리고 그 프로그램이 실행돼서
돌아가가고 있는 상태,

즉 컴퓨터가 어떤 일을 하고 있는 상태를
'프로세스'라고 하죠.

...

여러 프로세스를 함께 돌리는 작업은
동시적, 병렬적, 또는
이 둘의 혼합으로 이뤄져요.

...

동시성은 프로세서 하나가
이거 조금 하고 이거 조금 하고 이거 조금 하고
이렇게 여러 작업을 돌아가면서

일부분씩 진행하는거에요.

이러한 작업들은 Context Switching이라고 한다.
여기에도 다양한 방식과 알고리즘이 쓰여요

이 과정이 Git똥차게 빨리 돌아가니까
사람에게는 이 프로세스들이
동시에 진행되는 것처럼 느껴지는거죠.

병렬성은 프로세서 하나에
코어 여러 개가 달려서
각각 동시에 작업들을 수행하는거에요.

듀얼코어 쿼드코어 옥타코어
이런 명칭이 붙는 멀티코어 프로세서가 달린
컴퓨터에서 할 수 있는 방식이죠.

CPU의 속도가 발열 등 물리적 제약 때문에
예전만큼 빠르게 발전하지 못하자

그 대안으로, 코어를 여러 개 달아서
작업을 분담할 수 있도록 만든거에요.

🧵 스레드의 개념
한 프로세스 내에서도 여러 갈래의 작업들이
동시에 진행될 필요가 있는거에요.

이 갈래를 '스레드(Thread)'라고 불러요.

이 영상에서 메모리를 조리대에 비유했죠?

프로세서는 요리사고,
대량주문이 들어오는 이 식당에서
끊임없이 만들어내는 요리 메뉴
하나하나가 프로세스에요.

컴퓨터는 프로세스마다 자원을 분할해서 할당해요.
라면 끓이는 섹션, 김밥 마는 섹션, 햄버거 만드는 섹션

이렇게 조리 공간을 나눠서
요리사 혼자서 돌아다니면서 동시적으로 하든
여럿이서 병렬적으로 하든, 이들을 섞어서 하든

이 메뉴들을 계속해서 만들어내는거죠.

햄버거를 만드는 프로세스에서는
패티를 굽는 스레드가 진행되는 동안

빵에 야채를 얹고 소스를 뿌리는
스레드도 진행될 수 있겠죠.

한 메뉴의 스레드들은 같은 조리대에서 이뤄져요.

패티는 여기서 굽고 야채는 여기서 얹는다면
같은 조리대에서 작업하는 것보다
일하기가 더 힘들겠죠.

같은 메뉴를 만들 때는 같은 공간과 장비,
즉 같은 자원을 공유하는것이

더 효율적일거에요.

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

이게 속도와 효율 면에서는 낫겠지만
단점도 있어요.

프로세스 안에서 공유되는 변수에
스레드 두 개가 동시에 손을 대요.

현실세계에서는 로맨스물이 되지만
컴퓨터 세계에서는 Error물이 돼요.

여러 개의 스레드를 사용하면 시간차에 의한 에러가 발생할 수 있다.

이를 해결하기 위해서 Closure, Functional Programming, Lambda, Actor 등 다양한 프로그램이 활용된다.

자바에서 스레드를 사용할 수도 있다.

스레드 두개가 동시에 작업을 수행하면 실제로는 두 개가 진행되는데 카운트는 하나만 될 경우가 있다.

이를 방지하기 위해 자바는 synchronized 블럭이 있다.
해당 블럭에 있는 스레드는 한번에 한개의 작업만 수행할 수 있다.

sleep은 해당 스레드를 일정시간 정지하는 것이다.

profile
Engineer, Look Beyond the Code.

0개의 댓글