프로세스 & 스레드

기술노트
Admin (토론 | 기여)님의 2025년 9월 6일 (토) 05:54 판 (Gemini 벌크 업로더로 자동 업로드)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

⚙️ 프로세스 (Process) & 스레드 (Thread)

프로세스스레드는 운영체제에서 프로그램을 실행하는 데 사용되는 핵심 개념입니다. 둘 다 작업을 수행하는 실행 단위이지만, 자원 공유 방식에서 큰 차이를 보입니다.


🧱 프로세스 (Process)

프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영체제로부터 독립적인 메모리 공간(Code, Data, Heap, Stack)과 자원(파일 핸들, 네트워크 연결 등)을 할당받아 실행됩니다. 각 프로세스는 다른 프로세스와 독립적으로 동작합니다.

  • 독립적인 메모리 공간 : 다른 프로세스의 메모리 영역을 침범할 수 없습니다.
  • 무거운 생성/소멸 : 프로세스를 생성하고 제거하는 데 많은 자원과 시간이 소요됩니다.
  • 프로세스 간 통신 (IPC) : 프로세스 간에 데이터를 주고받으려면 별도의 IPC(Inter-Process Communication) 메커니즘(파이프, 소켓, 공유 메모리 등)을 사용해야 합니다.

🧵 스레드 (Thread)

스레드는 프로세스 내에서 실행되는 작업의 최소 단위입니다. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있으며, 각 스레드는 독립적인 실행 흐름을 가집니다.

  • 메모리 공유 : 같은 프로세스 내의 다른 스레드와 Code, Data, Heap 영역을 공유합니다. 각 스레드는 자신만의 독립적인 Stack과 프로그램 카운터(PC) 레지스터를 가집니다.
  • 가벼운 생성/소멸 : 프로세스보다 생성 및 소멸이 훨씬 가볍고 빠릅니다.
  • 스레드 간 통신 : 메모리를 공유하므로, 별도의 통신 메커니즘 없이 직접 데이터를 주고받을 수 있어 효율적입니다.

💡 정보처리기사 핵심 Point

  • 정보처리기사 시험에서는 프로세스와 스레드의 개념, 그리고 자원 공유 방식의 차이점을 묻는 문제가 자주 출제됩니다.
  • 멀티태스킹(Multitasking)은 여러 프로세스를 동시에 실행하는 것이고, 멀티스레딩(Multithreading)은 하나의 프로세스 내에서 여러 스레드를 동시에 실행하는 것입니다.
  • 스레드 간의 메모리 공유는 효율적이지만, 여러 스레드가 공유 자원에 동시에 접근할 때 동기화 문제(경쟁 상태, 교착 상태)가 발생할 수 있습니다. 이를 해결하기 위한 동기화 기법(뮤텍스, 세마포어 등)에 대한 이해가 중요합니다.