본문 바로가기

Linux/Kernel

Kernel) 프로세스 VS 스레드

프로세스와 스레드의 차이 정리

시스템 프로그래밍을 하다 보면 자주 마주치는 개념이 바로 프로세스(Process)스레드(Thread) 이다. 두 개념은 모두 실행의 단위이지만, 메모리 구조와 데이터 공유 측면에서 큰 차이가 있다. 이 글에서는 이 둘의 차이를 명확히 정리한다.

1. 프로세스란?

프로세스는 실행 중인 프로그램을 의미하며, 운영체제에서 독립적인 메모리 공간을 갖는 단위이다. 각각의 프로세스는 코드 영역, 데이터 영역, 힙 영역, 스택 영역을 가지며, 이 메모리 공간은 다른 프로세스와 완전히 분리되어 있다. 이러한 격리 덕분에 하나의 프로세스에서 발생한 오류나 충돌이 다른 프로세스에 영향을 미치지 않는다.

하지만 동시에 이 말은 기본적으로 프로세스 간에는 데이터를 직접 공유할 수 없다는 뜻이기도 하다. 만약 데이터를 주고받아야 한다면, 별도의 통신 방식(IPC, Inter-Process Communication)을 사용해야 한다.

2. 스레드란?

스레드는 프로세스 내에서 실행되는 작업 흐름의 최소 단위이다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이들은 같은 프로세스의 메모리 공간을 공유한다. 구체적으로, 코드 영역, 데이터 영역, 힙 영역은 공유하지만, 스택 영역은 각 스레드가 독립적으로 가진다.

이러한 구조 덕분에 스레드 간에는 데이터를 주고받기 쉽고, 컨텍스트 스위칭 비용도 낮아 성능 측면에서 유리한 경우가 많다. 하지만 메모리를 공유하기 때문에 동기화 문제가 발생할 수 있으며, 이를 방지하기 위한 락(lock) 등의 메커니즘이 필요하다.

3. 비교 정리

항목 프로세스 스레드

메모리 공간 완전히 독립적 대부분 공유 (스택 제외)
데이터 공유 불가능 (IPC 필요) 기본적으로 가능
실행 단위 프로그램 단위 작업 흐름 단위
안정성 높음 (격리됨) 낮음 (경쟁 조건 발생 가능)
자원 소모 상대적으로 큼 상대적으로 적음

4.  임베디드 시스템에서 멀티 프로세싱의 한계

멀티프로세싱이란?

여러 개의 독립된 프로세스를 동시에 실행하는 구조를 말합니다. 일반적인 데스크탑/서버 운영체제에서는 흔한 구조지만, 임베디드 시스템에서는 제한적으로 사용되거나 아예 사용되지 않는 경우도 많습니다.

주요 이유: 자원의 제약

 1. 메모리 제한

  • 임베디드 시스템은 RAM이 수 MB, 심하면 수십 KB 수준으로 매우 적을 수 있습니다.
  • 각각의 프로세스는 고유의 메모리 공간(코드, 힙, 스택 등)을 요구하기 때문에, 여러 개의 프로세스를 동시에 운영하면 메모리 부족 문제가 쉽게 발생합니다.

 2. CPU 성능 한계

  • 싱글코어 CPU이거나, 클럭이 낮은 저전력 CPU가 대부분입니다.
  • 멀티프로세스를 운영할 만큼의 연산 여유가 없습니다.

 3. 스토리지 제약

  • 많은 임베디드 장치는 플래시 기반의 제한된 저장공간을 사용하며, 가상메모리나 스왑을 활용한 운영이 어렵습니다.

 4. 리소스 충돌과 관리 복잡성

  • 여러 프로세스가 동시에 I/O 자원(예: GPIO, SPI, UART)을 사용할 경우 충돌이 발생할 수 있고, 이를 관리하려면 커널 수준에서 복잡한 동기화가 필요합니다.

 5. RTOS 또는 단일 루프 기반 운영

  • 많은 임베디드 시스템은 멀티프로세스를 전제로 하지 않는 RTOS(실시간 운영체제)나 단일 메인 루프 구조로 설계됩니다. 이 구조는 응답성과 예측 가능성을 우선시하며, 멀티프로세싱보다는 멀티스레딩이나 상태 기반 처리로 대체됩니다.

5. 마무리

  • 프로세스는 독립적이고 안정적인 실행 단위이며, 기본적으로는 서로 데이터를 공유하지 않는다.
  • 프로세스 간 데이터를 공유하기 위해서는 IPC(Inter Proccess Communication) 방식을 사용해야 한다.
  • 스레드는 같은 프로세스 내에서 동작하는 실행 흐름 단위로, 메모리를 공유해 효율적으로 협업할 수 있지만, 동시에 동기화 문제가 생길 수 있다.
  • 실제 시스템 설계 시에는 성능과 안정성, 구현 난이도를 고려하여 프로세스와 스레드를 적절히 선택해야 한다.

이해를 돕기 위해 향후에는 실습 예제와 함께 각각을 다뤄볼 예정이다.