[Week2]

정진범·2025년 3월 20일

프로세스와 쓰레드

운영체제에서 프로세스와 쓰레드는 작업을 처리하는 두 가지 주요 단위입니다. 이 글에서는 프로세스와 쓰레드에 대해 알아보려고 합니다

프로세스란 무엇인가?

프로세스는 실행 중인 프로그램의 인스턴스로, 운영체제에 의해 관리됩니다.

특징

  • 독립적인 메모리 공간(코드, 데이터, 힙, 스택)을 가집니다.

  • 시스템 자원(CPU, 메모리, 파일 등)을 사용하며, 각 프로세스는 고유한 식별자(Process ID)를 가집니다.

  • 멀티태스킹 환경에서 여러 프로세스가 동시에 실행될 수 있습니다.

프로세스의 메모리 구조

프로세스는 다음과 같은 메모리 영역으로 구성됩니다

  • 코드(Code) 영역: 프로그램 실행 코드가 저장되는 읽기 전용 공간.

  • 데이터(Data) 영역: 전역 변수와 정적 변수가 저장되는 공간.

  • 힙(Heap) 영역: 동적으로 할당된 메모리를 저장하는 공간.

  • 스택(Stack) 영역: 함수 호출 및 지역 변수 저장을 위한 공간.

쓰레드란 무엇인가?

쓰레드는 프로세스 내에서 실행되는 작업 흐름 단위로, 프로세스의 자원을 공유하면서 독립적으로 실행됩니다.

특징

  • 하나의 프로세스에 여러 쓰레드가 존재할 수 있습니다.

  • 같은 프로세스 내에서 코드, 데이터, 힙 영역을 공유하며, 독립적인 스택과 레지스터를 가집니다.

  • 멀티쓰레드를 통해 병렬 처리가 가능하며 시스템 자원을 효율적으로 활용할 수 있습니다.

쓰레드의 메모리 구조

쓰레드는 다음 두 가지 메모리 영역으로 나뉩니다:

공유 영역

  • 코드(Code), 데이터(Data), 힙(Heap) 영역을 공유하여 자원 효율성을 높임.

독립적 영역

  • 각 쓰레드는 독립적인 스택(Stack)과 프로그램 카운터(PC)를 가집니다.

TCB (Thread Control Block)

운영체제가 각 쓰레드를 관리하기 위해 사용하는 자료 구조.

해당 쓰레드가 속한 PCB 포인터

멀티쓰레딩은 하나의 프로세스 내에서 여러 쓰레드를 생성하여 병렬 작업을 수행하는 방식입니다.

장점

  • 자원 공유로 인해 메모리 효율성이 높음.

  • 컨텍스트 전환 비용이 낮아 빠른 작업 처리 가능.

  • 병렬 처리를 통해 성능 향상.

단점

  • 동기화 문제 발생 가능 (예: 임계영역 문제).

  • 하나의 쓰레드 오류가 전체 프로세스를 중단시킬 수 있음.

멀티프로세스 대신 멀티쓰레드를 사용하는 이유

  • 멀티쓰레드는 같은 메모리 공간을 공유하므로 통신이 빠르고 효율적입니다.

  • 생성 및 컨텍스트 전환 비용이 멀티프로세스보다 낮습니다.

  • 병렬 처리가 필요한 애플리케이션에서 성능 향상을 제공합니다.

Thread-Safe 설계란?

Thread-Safe는 여러 쓰레드가 동시에 접근할 때도 데이터 무결성을 유지하도록 설계된 상태를 의미합니다.

설계 방법

  • 동기화(Synchronization): Mutex나 Semaphore를 사용하여 임계영역 보호.

  • 재진입 가능(Reentrant): 함수 호출 시 전역 변수 대신 지역 변수를 사용하여 상태를 분리.

  • 불변 객체 사용: 데이터를 변경하지 않는 불변 객체를 활용하여 동기화 문제를 방지.

결론

프로세스와 쓰레드는 각각 독립성과 효율성이라는 고유한 장점을 가지고 있습니다. 멀티쓰레드는 자원 공유와 병렬 처리로 성능을 극대화할 수 있지만 동기화 문제를 신중히 고려해야 합니다. 운영체제와 애플리케이션 개발에서 이들 간의 차이를 이해하고 적절히 활용하는 것이 중요합니다.

profile
열정적인 개발자

0개의 댓글