Process, Thread 개념 정리

BY Jung·2022년 4월 8일
1

중요 키워드

  1. 실행단위
    CPU core에 한 순간에 하나씩(one at a time) 적재되어 실행되는 단위
    Process와 Thread를 모두 포괄한다

  2. 프로세스
    하나의 스레드만 갖고 있다면 단일 스레드 프로세스

  3. 동시성
    한 순간에 여러가지 X
    짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것

프로세스

프로그램은 단순히 코드가 구현된 파일일 뿐이다.(= 피자 레시피)
피자 레시피로 피자를 만들듯이 프로그램을 실행해 사용할 수 있도록 메모리에 적재된 것이 프로세스이다.

프로그램이 프로세스가 되는 과정

  1. 프로세스가 필요로 하는 자원이 메모리에 올라간다.
    메모리에는 code, data, heap, stack 영역이 있다.

  2. 프로세스 정보를 담고 있는 PCB 블럭이 프로세스 생성과 함께 만들어진다.

여러가지 프로그램을 동시에 실행하면 일어나는 일

코드 치려고 VSCode 실행,
코드 치면서 음악 들으려고 Youtube Music 실행,
메신저로 Slack 실행,..... 어떻게 동작하는지??

컨텍스트 스위칭

2개의 프로세스를 예시로 든 컨텍스트 스위칭의 예시

각 프로세스가 짧은 전환주기를 갖고 실행, 준비 상태를 오가며 메모리 적재, 보관을 반복한다
이렇게 동작하는 프로세스를 경량화한 것이 스레드이다.

스레드

한 프로세스 내에서 구분지어진 실행단위이다.

한 개의 프로세스 안에 다수의 스레드가 있을 때,
스레드는 code, data, heap 영역을 공통된 자원으로 사용한다.
공유되는 자원이 있기 때문에 컨텍스트 스위칭에서도 모든 것을 넣고 뺄 필요가 사라진다.

<예시>
악기 연주실을 대여해 이용한 후 다음 팀을 위해 자리를 비워줄 때,
컨텍스트 스위칭은 모든 악기와 장비를 다 빼내고 다음 팀이 다시 모든 악기와 장비를 들여오는 식이다.
하지만 스레드의 경우 설치된 악기와 장비는 그대로 두고, 직접 휴대하는 악기(기타)만 가지고 들어와 연결해 사용하는 식

Multi-process, Multi-thread

두 가지 모두 한 어플리케이션에 대한 처리방식의 일종이다.

멀티 프로세스는 두 사람이 각기 다른 공간에서 작업하는 것과 같다.

  • 독립적으로 분리되어 있어 동기화가 필요없지만, 서로 대화하려면 각자 있던 회의실에서 나와서 대화(IPC)해야하므로 소모적이다.
  • 구글 크롬의 멀티탭 기능은 heavy하지만, 한 탭이 문제가 생겨도 다른 탭들이 영향을 받지 않는 등 강력한 기능을 제공한다.

멀티 스레드는 두 사람이 같은 공간에서 작업하는 것과 같다.

  • 통신이 용이하여 비용이 절감되지만, 긴밀하게 연결되어 있으므로 공유되는 자원 관리가 필요하다.
  • 인터넷 익스플로어의 멀티탭 기능은 한 탭이 문제가 생기면 모든 탭이 종료된다.(지금은 안써서 모르겠지만 예전에는 그랬다..)

Multi-core

멀티코어는 멀티 프로세스, 멀티 스레드와 달리 하드웨어 측면에 가깝다.

동시성(Concurrency)

짧은 시간에 cpu의 시간을 분할해 여러 실행단위를 번갈아 실행하면서 마치 동시에 실행되는 것처럼 보이게 하는 것

병렬처리(Parallelism)

물리적으로 여러 코어를 두고 다수의 실행단위를 동시에 처리할 수 있게 하는 것

Reference

우아한테크코스 테코톡

profile
Slow and steady wins the race

0개의 댓글