프로세스랑 스레드, 그게 뭔데.

정기홍·2025년 9월 5일

CS 지식

목록 보기
1/1

Process란?

실행 중인 프로그램을 의미하는 것입니다. 운영 체제가 메모리에 프로그램을 올리고 실행하며, 그 프로그램은 하나의 프로세스가 되며, 각 프로세스는 독립적인 메모리 공간(코드, 데이터, 스택, 힙)을 할당받으며, 다른 프로세스의 메모리 영역에 직접 접근할 수 없습니다.

Process의 특징

  • 독립성 : 각 프로세스는 고유한 메모리 공간과 자원(파일 핸들, 네트워크 포트 등)을 가집니다.
  • 오버헤드 : 프로세스를 생성하거나 전환(Context Switching)할 때 상대적으로 많은 자원이 소모됩니다.
  • 예시 : 웹 브라우저, 워드 프로세서, 음악 플레이어 각각이 별도의 프로세스입니다.

그에 대한 예시로 빠르게 알아볼 수 있는 방법 중에 하나는

다음과 같이 [작업관리자] 에서 볼 수 있는 프로세스입니다. 다음 프로세스들은 각 프로세스들에게 영향을 끼치지 않으며, 컴퓨터 내에서 필요에 의해 수많은 프로세스들이 돌아갑니다.

Thread란?

프로세스 내에서 실행되는 흐름의 단위입니다. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있습니다. 스레드는 같은 프로세스에 속한 다른 스레드들과 메모리 공간과 자원(파일 핸들, 네트워크 포트 등)을 공유합니다. 스레드는 프로세스 내에서 동시에 여러 작업을 할 수 있게 해줍니다.

Thread의 특징

  • 자원 공유 : 같은 프로세스에 속한 스레드들은 코드, 데이터(힙)을 공유합니다. 또한 각 스레드는 고유한 스택(stack)과 레지스터(register)를 지닙니다.
  • 경량성 : 스레드를 생성하거나 전환할 때 프로세스보다 적은 자원이 소모됩니다. 이로 인해 효율적인 동시 작업 처리가 가능합니다.
  • 예시 : Vscode에서 자동 저장 기능과 auto formatting 기능을 사용할 때, 별도의 스레드로 구성된다는 것을 확인할 수 있습니다.

Multi-processing이란?

단어와 같이 여러 개의 프로세스를 동시에 실행해서 여러 작업을 처리하는 방식입니다.

장점

  • 한 프로세스에 오류가 발생해도 다른 프로세스에 영향을 주지 않아 시스템이 안정적임. 여러 CPU 코어를 활용해 진정한 병렬 처리가 가능합니다.

단점

  • 프로세스 간 컨텍스트 스위칭(전환)이 무겁습니다.

Multi-threading이란?

멀티 스레딩은 하나의 프로세스 내에서 여러 스레드를 동시에 실행하여 작업을 처리하는 방식입니다. 스레드들은 같은 프로세스의 메모리 공간을 점유합니다.

장점

  • 스레드 간 컨텍스트 스위칭이 가볍고 빠름.

단점

  • 스레드에 오류가 발생하면 메모리를 공유하기 때문에 같은 프로세스 내의 다른 스레드와 전체 프로세스에 영향을 줄 수 있어 안정성이 낮습니다. 공유 자원에 여러 스레드가 동시에 접근할 때 동기화 문제가 발생할 수 있습니다.

궁금점

  • 여러 프로세스를 동시에 실행시키는 것인지?
    : 최신 컴퓨터가 가지고 있는 멀티 CPU를 통해 여러 프로세스를 동시에 실행시킬 수 있다. 이러한 이유 뿐만 아니라, 시분할(Time-sharing)으로 인해 빠른 속도로 전환되어 우리 눈에는 동시에 실행되는 것처럼 보이는 것이다.
profile
하나를 알고 그걸로 모든걸 관통한다.

0개의 댓글