Process와 Thread

이강용·2024년 2월 13일
0

CS

목록 보기
17/109

Process

프로세스는 실행 중인 프로그램의 인스턴스(특정 클래스나 타입의 구체적인 실체)이다. 운영 체제에서는 프로세스를 독립적인 엔티티(Entity)로 취급하며, 각 프로세스는 자신만의 주소 공간(Address Space), 메모리, 데이터, 스택 등을 가진다. 프로세스는 최소 하나 이상의 스레드를 포함하고 있으며, 각 프로세스는 운영 체제에 의해 시스템의 다른 프로세스들과 분리되어 관리된다.

Thread

스레드는 프로세스 내에서 실행되는 제어 흐름의 단위로, 프로세스의 자원을 공유하며, 같은 프로세스 내의 다른 스레드와 코드, 데이터, 힙 영역 등을 공유한다. 하지만 스택 영역은 각 스레드마다 독립적으로 가진다. 스레드는 멀티태스킹과 병렬 처리를 가능하게 하여, 프로세스의 작업을 더 빠르게 처리할 수 있게 한다.

프로세스와 스레드의 차이

  • 자원의 공유 : 프로세스 간에는 각각 독립된 메모리 영역(주소 공간)을 가지지만, 한 프로세스 내의 스레드들은 메모리와 자원을 공유한다. 이는 스레드 간의 통신이 프로세스 간의 통신보다 훨씬 효율적이라는 것을 의미한다.
  • 생성과 관리 비용 : 프로세스를 생성하고 관리하는 비용이 스레드를 생성하고 관리하는 비용보다 훨씬 크다. 프로세스는 완전히 독립적인 메모리 영역을 가지기 때문에, 프로세스 간의 전환(Context Switching)에 더 많은 비용이 든다.
  • 통신 방법 : 프로세스 간 통신(IPC, Inter-Process Communication)은 상대적으로 복잡하고 비용이 많이 든다. 반면, 스레드 간의 통신은 같은 메모리 공간을 공유하기 때문에 데이터를 공유하기 쉽다.
  • 독립성 : 프로세스는 운영 체제로부터 독립된 주소 공간을 할당받아 완전히 독립적으로 실행된다. 스레드는 프로세스 내에서 독립적으로 실행되지만, 프로세스 내의 다른 스레드와 자원을 공유한다.

Process와 Thread의 특성을 이해 하기 쉬운 예시

가구(Process)

  • 프로세스를 한 가구로 생각할 수있다. 이 가구에는 자신만의 집(프로세스의 가상 메모리 공간, Vertual Memory)이 있으며, 이 집은 행정구역(운영 체제,OS)에 의해 관리 되고 할당된다. 집은 독립적이며, 다른 가구와는 구분되는 자신만의 공간과 주소를 가진다.

세대원(Thread)

  • 가구(프로세스)내의 세대원들은 스레드에 해당한다. 철수, 영희, 길동이 이 집에서 함께 생활하는 가족원(스레드)다. 각 세대원들은 자신만의 방(Thread Local Storage, 주로 스택 영역에 해당)을 사용하여 개인적인 물건이나 데이터를 보관한다. 이 방은 다른 세대원(스레드)과 공유되지 않는 개인 공간이다.

공용 공간(Heap)

  • 거실, 부엌, 화장실과 같은 공용 공간은 프로세스 내에서 공유되는 메모리 영역(Heap)에 해당한다. 이 공간은 집안의 모든 세대원(스레드)이 접근하고 사용할 수 있는 공유 자원이다.

집(Vertual Memory, 가상 메모리)

  • 전체 집은 프로세스의 가상 메모리 공간(VM)을 타나낸다. 가상 메모리는 프로세스가 사용하는 메모리 공간을 추상화한 것으로, 실제 물리 메모리보다 더 큰 메모리 공간을 프로세스에게 제공할 수 있다. 이는 프로세스가 자신만의 독립된 주소 공간을 가지며, 다른 프로세스의 공간과 격리되어 있음을 의미한다.
profile
HW + SW = 1

0개의 댓글