HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🏪
TS Store
/
🤺
프로세스 vs 쓰레드
🤺

프로세스 vs 쓰레드

Person
완료율%
상태
완료
나의 블로그
Think Sharing (TS)
🥇
프로세스 vs 쓰레드
Process vs ThreadProgram 이란?🚗  Process🛞 ThreadMulti Process vs Multi ThreadMulti Process✨  Context Switcing🧨  Multi Process의 단점은?⚡️ Multi Process의 장점은?IPC란?Multi ThreadStack Memory & PC register🧨  Multi Thread의 단점은?⚡️ Multi Process의 장점은?면접 질문🔖 참고 링크

Process vs Thread


Program 이란?

그저 실행가능한 코드가 구현된 파일
이것이 실행되기 위해서는 메모리에 적재되어야 합니다.
이렇게 메모리에 적재되어 실행되고 있는 프로그램을 프로세스(Process)라고 합니다.

🚗  Process

  • 실행파일(program)이 memory에 적재되어 CPU를 할당받아 실행되는 것을 process라고 합니다.
  • 운영체제로부터 자원을 할당 받아 실행되는 작업의 단위 입니다.
    • (메모리의 독립된 영역인 Code, Data, Stack, Heap 을 각각 할당 받습니다.)
      notion image
  • 하나의 프로세스는 다른 프로세스의 자원에 접근이 불가능 합니다.
  • 하나의 프로세스는 최소 하나 이상의 스레드(Thread)를 가집니다.

🛞 Thread

  • 프로세스 내에서 실행되는 실행 단위이고 독립적인 기능을 수행합니다.
  • 프로세스의 Code, Data, Heap을 영역을 공유하고, Stack만 따로 할당받아 실행됩니다.
    • notion image
 
💡  메모리 영역
  • Code : 실행 명령을 포함하는 코드들
  • Data : static 변수
  • Heap : 동적 메모리 영역 (Runtime에 메모리 영역 크기가 결정)
  • Stack : 지역변수, 매개변수, 반환값 등의 일시적인 데이터
 
💡
TIP! 프로세스는 자원을 공유하지 않지만, 스레드는 자원을 공유한다.

Multi Process vs Multi Thread


Multi Process

🤔 2개의 Process가 실행된다면? (슬랙, 크롬)
Slack 실행 → Slack 멈춤 → Chrome 실행 → Chrome 멈춤 → Slack 실행...
→ CPU는 한번에 하나의 프로세스만 실행가능!
→ 이렇게 반복하지만 사용자 입장에서는 동시에 실행하는 것처럼 보임.
→ 이렇게 여러 프로세스가 돌아가면서 작업을 처리하는 것을 Context Switcing 이라고 합니다.

✨  Context Switcing

  • Context란?
    • 이전에 어디까지 명령을 수행했고, register에는 어떤 값이 저장되어 있었는지 정보가 필요합니다. process가 현재 어떤 상태로 수행되고 있었는지에 대한 총체적인 정보가 바로 context입니다. context 정보는 PCB(Process Control Block)에 저장을 합니다.
  • PCB(Process Control Block)
    • 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료 구조
    • 운영 체제(kernel : 하나의 프로세스)가 프로세스를 표현한 자료구조
    • Context Switch
      • 한 프로세스가 다른 프로세스로 CPU 제어권을 넘겨주는 것.

    🧨  Multi Process의 단점은?

    • Context Switching = 무거운 작업
      • 캐시 메모리 초기화 등으로 매우 느림!
        • (다른 프로세스를 시작 할때, 메모리영역도 완전히 달라지고 많은 것들을 교체를 해야 되서 느림!)

    ⚡️ Multi Process의 장점은?

    • 하나의 Process가 죽더라도 다른 Process에 영향을 주지 않아 안정성이 높다!
    • 메모리 구분이 필요할 때는 Multi Process가 유리하다.

    IPC란?

    Process간에 데이터를 주고 받기 위해서 IPC(Inter-Process Communication) 기법을 사용합니다.
    Process는 자신만의 독립적인 주소공간을 가지고, 다른 Process가 참조하는것을 허용하지 않습니다. (→ 다른 Process와 데이터를 주고 받을 수 없다!) 이를 해결하기 위해 IPC기법을 사용합니다.
    ⚡️ 공유 메모리(shared memory) vs 메시지 전달(message passing)
    • 공유 메모리(shared memory)
      • process가 공유 메모리를 할당을 kernal에 요청하면 process 메모리 공간을 할당해줍니다.
      • 각 process들이 할당받은 메모리 영역을 접근(read/write)할 수 있습니다.
      • 한번 할당을 받은 후에 커널의 관여 없이 통신할 수 있으므로 속도가 빠릅니다!
      • 하지만 동시에 같은 메모리 위치에 접근하면서 생기는 일관성 문제가 있습니다.
        • → process들이 직접 공유 메모리 접근에 대한 동기화 문제를 책임져야 합니다.
      • ex) POSIX
    • 메시지 전달(message passing)
      • system call을 사용되어 구현됩니다.
      • 커널을 통해 send & receive 두가지 연산을 제공받아 사용합니다.
      • 공유메모리 보다는 속도가 느리지만, 충돌을 회피할 필요가 없기 때문에 데이터 교환에 유용!
      • 구현하기가 쉽다.
      • ex) socket, pipe, message queue 등

    Multi Thread

    • 하나의 프로세스에서 여러개의 Thread로 나누어 각각 작업을 처리하도록 하는 것
    • 캐시 메모리를 초기화할 필요가 없어 빠르다!
    • 스레드 사이의 작업량이 작아서 Context Switcing이 빠르다!
    • 독립적인 Stack Memory와 PC Register가 필요하다.

    Stack Memory & PC register

    • Thread가 함수를 호출 시 전달되는 인자, Return Address, 함수 내의 지역변수 등 독립적인 Memory가 필요!
      • 즉슨, 각각의 Thread가 Process내에서 “독립적인 기능을 실행한다 == 독립적으로 함수를 호출한다” 를 의미합니다.
        나머지 Code, Data, Heap 영역은 공유하는 형태.
    • 한 프로세스 내에서도 thread끼리 Context Switch가 일어나게 되는데,
      • PC register에 code address가 저장되어 있어야 실행할 수 있기 때문!

    🧨  Multi Thread의 단점은?

    • 하나의 스레드가 문제가 생기면 전체 프로세스가 영향을 받는다! (웹에서 여러 탭이 사용 중에 하나의 탭에 문제가 생겼을 시 전부 종료된다.)
    • 동기화 문제!
      • 서로 다른 thread가 메모리 영역을 공유하기 때문에,
        여러 thread에서 동일한 자원에 동시에 접근하여 엉뚱한 값을 읽거나 수정하는 문제
    → 프로그램 설계 시 주의가 필요!

    ⚡️ Multi Process의 장점은?

    • 메모리 공간과 시스템 자원 소모가 줄어듭니다.
    • Process를 생성하고 자원을 할당하는 등 system call을 생략할 수 있기 때문에 자원을 효율성 증대
    • Context Switching 시, 캐시 메모리 초기화 필요가 없어 속도 빠름!
    • process 간의 통신(IPC)보다 통신 비용이 적음 == 오버헤드가 적다!
     

    면접 질문

    • Process의 Memory 영역 4가지에 대해서 설명하시오.
    • Process의 Context란?
    • PCB에 저장되는 것들은 무엇이 있는지?
    • Context switch에 대해 설명하시오
    • Process의 State에는 어떤 것이 있는지?
    • Thread는 왜 독립적인 Stack memory 영역이 필요할까요?
    • Process vs Thread 차이
    • Multi thread vs Multi process 장단점
    • IPC란?
     
    • Multi process/thread 환경에서의 동기화 문제는 어떻게 해결 하나요?
    • 교착상태란? 언제 발생하는지?
     
     

    🔖 참고 링크

    ✨  감명깊게 본 영상
    [10분 테코톡] 🌷 코다의 Process vs Thread
    🙋‍♀️ 우아한테크코스의 크루들이 진행하는 10분 테크토크입니다. 🙋‍♂️'10분 테코톡'이란 우아한테크코스 과정을 진행하며 크루(수강생)들이 동료들과 학습한 내용을 공유하고 이야기하는 시간입니다. 서로가 성장하기 위해 지식을 나누고 대화하며 생각해보는 시간으로 자기 주도적인...
    [10분 테코톡] 🌷 코다의 Process vs Thread
    https://www.youtube.com/watch?v=1grtWKqTn50
    [10분 테코톡] 🌷 코다의 Process vs Thread
    🚀  잘 정리된 자료 링크
    [OS] 프로세스와 스레드의 차이 - Heee's Development Blog
    Step by step goes a long way.
    [OS] 프로세스와 스레드의 차이 - Heee's Development Blog
    https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
    [OS] 프로세스와 스레드의 차이 - Heee's Development Blog
    👩‍💻 프로세스 vs 쓰레드 차이 정리
    프로세스라는 명칭은 낯설수 있는데, 프로그램은 친숙하리라 생각된다. 우리가 흔히 말하는 프로그램이 실행되면 프로세스 인스턴스가 생성된다. 인스턴스가 생성된다는 의미는 프로그램 실행에 필요한 내용이 컴퓨터 메모리(Ram)에 적재 된다는 뜻이다. 일반적으로 프로세스와 프로그램을 같은 개념으로 이야기할 때가 많다. 하지만 엄밀히 따지면 이 둘은 다른 개념이다.
    https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4#thankYou
    👩‍💻 프로세스 vs 쓰레드 차이 정리