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

Process와 Thread. 컴공의 운영체제 클래스😪에서 또는
멀티태스킹에 관련한 주제에서 들을 수 있는 용어들이죠.

어려울 수 있지만, 프로그래머로서 반드시 알아야 하는 개념들이에요.

프로세서와 스레드가 무엇이고 서로 어떻게 다른지 살펴보고
자바에서의 스레드 사용도 예제를 통해 알아보기로 하겠습니다.




🎬 영상 주요 포인트

⚙️ 프로세스의 개념

여러분의 컴퓨터에서 실행할 수 있는 파일 윈도우의 경우 이름 뒤쪽에 .exe 붙어있는 그런 파일들을 '프로그램'이라고 해요. 그리고 그 프로그램이 실행돼서 돌아가가고 있는 상태, 즉 컴퓨터가 어떤 일을 하고 있는 상태를 '프로세스'라고 하죠. ... 여러 프로세스를 함께 돌리는 작업은 동시적, 병렬적, 또는 이 둘의 혼합으로 이뤄져요. ... 동시성은 프로세서 하나가 이거 조금 하고 이거 조금 하고 이거 조금 하고 이렇게 여러 작업을 돌아가면서 일부분씩 진행하는거에요. ... 이 과정이 Git똥차게 빨리 돌아가니까 사람에게는 이 프로세스들이 동시에 진행되는 것처럼 느껴지는거죠. 병렬성은 프로세서 하나에 코어 여러 개가 달려서 각각 동시에 작업들을 수행하는거에요. 듀얼코어 쿼드코어 옥타코어 이런 명칭이 붙는 멀티코어 프로세서가 달린 컴퓨터에서 할 수 있는 방식이죠. CPU의 속도가 발열 등 물리적 제약 때문에 예전만큼 빠르게 발전하지 못하자 그 대안으로, 코어를 여러 개 달아서 작업을 분담할 수 있도록 만든거에요.

🧵 스레드의 개념

한 프로세스 내에서도 여러 갈래의 작업들이 동시에 진행될 필요가 있는거에요. 이 갈래를 '스레드'라고 불러요. 이 영상에서 메모리를 조리대에 비유했죠? 프로세서는 요리사고, 대량주문이 들어오는 이 식당에서 끊임없이 만들어내는 요리 메뉴 하나하나가 프로세스에요. 컴퓨터는 프로세스마다 자원을 분할해서 할당해요. 라면 끓이는 섹션, 김밥 마는 섹션, 햄버거 만드는 섹션 이렇게 조리 공간을 나눠서 요리사 혼자서 돌아다니면서 동시적으로 하든 여럿이서 병렬적으로 하든, 이들을 섞어서 하든 이 메뉴들을 계속해서 만들어내는거죠. 햄버거를 만드는 프로세스에서는 패티를 굽는 스레드가 진행되는 동안 빵에 야채를 얹고 소스를 뿌리는 스레드도 진행될 수 있겠죠. 한 메뉴의 스레드들은 같은 조리대에서 이뤄져요. 패티는 여기서 굽고 야채는 여기서 얹는다면 같은 조리대에서 작업하는 것보다 일하기가 더 힘들겠죠. 같은 메뉴를 만들 때는 같은 공간과 장비, 즉 같은 자원을 공유하는것이 더 효율적일거에요. 프로세스들은 컴퓨터의 자원을 분할해서 쓰지만 스레드는 프로세스마다 주어진 전체 자원을 함께 사용하는거죠. 이게 속도와 효율 면에서는 낫겠지만 단점도 있어요. 프로세스 안에서 공유되는 변수에 스레드 두 개가 동시에 손을 대요. 현실세계에서는 로맨스물이 되지만 컴퓨터 세계에서는 Error물이 돼요.

⭐️ 영상에서 코드 예제와 함께 살펴보세요!


🍿 더 자세한 내용은 영상에서 보실 수 있습니다.





관련 태그의 다른 영상들

비동기 프로그래밍이 뭔가요?
동기와 비동기의 개념, 자바스크립트에서의 비동기를 알아봅니다.
# 동기
# async
# 스레드
# 콜백
# 이벤트 루프
프로세스, 스레드가 뭔가요?
컴퓨터의 멀티태스킹은 당연하지 않(았)다? 프로세스와 스레드를 알아봅니다.
# 프로세스
# 스레드
# 멀티태스킹
...
🌏 Why not change the world?