티스토리 뷰

반응형

🚀 프로세스와 스레드의 차이, 왜 이런 구조가 필요했을까?

컴퓨터 공부를 하다 보면 반드시 마주치는 질문이 있습니다.
"프로세스와 스레드는 뭐가 다른가요?"
그리고 대부분의 설명은 이렇게 끝납니다.

"프로세스는 독립된 실행 단위고, 스레드는 프로세스 내 작업 흐름 단위입니다."

하지만 이런 정의만으로는 사실상 왜 이런 구조가 만들어졌는지,
언제, 어떤 상황에서 각각이 필요한지 이해하기 어렵습니다.

그래서 오늘은
프로세스와 스레드가 왜 생겨났고, 무엇이 다른지, 구조적으로 왜 그렇게 설계되었는지
맥락부터 차근차근 풀어보겠습니다.


1️⃣ 왜 프로세스와 스레드가 필요한가?

🔍 프로그램 하나만 실행되던 시절

초기 컴퓨터는 한 번에 하나의 프로그램만 실행할 수 있었습니다.
파일 복사를 시작하면 복사가 끝날 때까지 다른 프로그램은 실행할 수 없었죠.

하지만 사용자는 점점 더 많은 것을 원했습니다.

"파일 복사하는 동안 음악도 듣고, 문서도 작성하고 싶어."

그렇게 운영체제는 여러 프로그램을 동시에 실행할 수 있도록
프로세스(Process)라는 개념을 도입했습니다.
프로세스는 실행 중인 프로그램 하나하나를 독립된 실행 단위로 관리합니다.


⚠️ 프로세스 구조의 한계

프로세스를 사용하면 여러 프로그램을 동시에 실행할 수 있지만
문제가 또 생깁니다.

예를 들어, 웹 브라우저를 실행했다고 가정해 봅시다.
그 안에서 우리는

  • 탭을 여러 개 열고
  • 동영상을 보고
  • 광고도 로딩하고
  • 채팅도 합니다.

이 모든 작업을 프로세스 기반으로 처리하려면
탭마다, 광고마다, 동영상마다 프로세스를 새로 만들어야 합니다.
그러면 어떻게 될까요?

메모리 사용량 폭증
프로세스 간 통신 비용 증가
관리 복잡도 증가

그래서 운영체제는 고민했습니다.

"같은 프로그램 내에서 여러 작업을 동시에 처리하고 싶을 때,
굳이 독립된 프로세스를 만들어야 할까?"

이 질문에서 출발해 탄생한 개념이 바로
스레드(Thread)입니다.


2️⃣ 스레드의 등장 – 효율적인 작업 흐름

스레드는 하나의 프로세스 내에서
여러 작업 흐름을 독립적으로 실행할 수 있게 해주는 구조입니다.

쉽게 말해,
프로세스는 프로그램 단위의 실행 흐름,
스레드는 프로그램 내 작업 단위의 실행 흐름
이라고 할 수 있습니다.

스레드는 프로세스가 가진 자원(코드, 데이터, 힙)을 공유하면서
실행 흐름만 따로 나누기 때문에
자원 소모가 적고
통신이 빠르며
동시에 여러 작업을 효율적으로 수행할 수 있습니다.


3️⃣ 메모리 구조 – 왜 이렇게 설계됐을까?

프로세스와 스레드의 가장 큰 차이는 메모리 구조에서 드러납니다.

📌 프로세스의 메모리 구조

프로세스는

  • 코드 영역
  • 데이터 영역
  • 힙 영역 (동적 메모리)
  • 스택 영역 (함수 호출, 지역 변수 저장)

모든 메모리 공간을 독립적으로 가집니다.
다른 프로세스와 메모리를 공유하지 않기 때문에
통신하려면 Inter-Process Communication (IPC)이라는 복잡한 절차가 필요합니다.


📌 스레드의 메모리 구조

스레드는 같은 프로세스의 자원을 공유합니다.
즉,

  • 코드, 데이터, 힙 영역은 공유
  • 스택 영역은 스레드마다 별도로 존재

❗️ 왜 스택은 공유하지 않을까?

스택에는 함수 호출 정보, 지역 변수가 저장됩니다.
스레드마다 다른 작업을 수행하므로
스택을 공유하면 실행 흐름이 뒤섞여 프로그램이 망가집니다.
따라서 스택은 스레드별로 독립되어야 합니다.

반면, 코드, 데이터, 힙 영역은
프로세스 내 모든 스레드가 같은 프로그램의 일부이기 때문에
공유하는 것이 자원 효율성 측면에서 합리적입니다.


4️⃣ 쉽게 이해하는 비유

프로세스와 스레드의 차이를
건물과 직원에 비유해봅시다.

  • 프로세스는 독립된 건물
    건물마다 수도, 전기, 출입 카드 시스템이 다르고
    서로 연락하려면 전화나 문서를 주고받아야 합니다.

  • 스레드는 같은 건물 안의 여러 부서, 직원
    같은 건물의 전기, 수도, 인터넷, 회의실을 공유하고
    바로 옆 부서에 가서 협업할 수 있습니다.
    그러나 각자의 노트북, 업무 메모장(스택)은 따로 가지고 있어야
    업무가 꼬이지 않습니다.


5️⃣ 실행 측면 차이 – 언제 무엇을 쓰는가?

정리하자면,

  • 프로세스는 서로 다른 프로그램을 실행하기 위한 독립 단위
    (크롬, 메모장, 카카오톡 등)
  • 스레드는 하나의 프로그램 내에서 여러 작업을 효율적으로 처리하기 위한 단위
    (크롬 내 여러 탭, 게임 내 배경음악과 네트워크 통신)

프로세스는 독립성과 안정성이 장점이지만
자원 소모와 통신 비용이 큽니다.

스레드는 자원 효율성, 빠른 통신이 장점이지만
하나의 스레드가 죽으면 전체 프로세스가 위험해질 수 있는 단점이 있습니다.


✅ 마무리 – 핵심 요점

프로세스와 스레드의 구조적 차이는
그냥 기술적 구분이 아니라
컴퓨터가 여러 작업을 동시에 효율적으로 처리하기 위해 어떤 문제를 해결하고자 했는지에서 출발합니다.

  • 프로세스: 프로그램 자체를 실행하기 위한 독립된 실행 단위
  • 스레드: 같은 프로그램 내에서 여러 작업을 효율적으로 처리하기 위한 작업 흐름 단위
  • 메모리 구조:
    → 자원(코드, 데이터, 힙)은 공유해 효율성 확보
    → 스택은 실행 흐름 보호를 위해 독립 유지

✏️ 한 문장 요약

프로세스는 프로그램을 실행하기 위한 독립 공간,
스레드는 그 프로그램 내에서 여러 작업을 효율적으로 나누기 위해 만들어진 구조이며,
힙을 공유하고 스택은 독립적으로 유지하는 이유는
자원 효율성과 실행 흐름 보호라는 운영체제 설계 철학 때문이다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함
반응형