프로세스와 스레드

Walter Mitty·2025년 4월 2일
0

개인공부

목록 보기
43/51

프로세스

어떤 파일을 실행했을 때 프로세스가 만들어지면서 프로그램이 실행된다.

이렇게 운영체제 안에서 실행중인 프로그램으로 프로세스라 하며, 프로스세는 실행 중인 프로그램의 인스턴스다.

각 프로세스는 독립적인 메모리 공간을 가지고 있다. 각 프로세스는 별도의 메모리 공간을 가지고 있기 때문에 서로 간섭하지 않고, 서로의 메모리에 직접 접근할 수 없다.

엑셀 프로그램과 음악 프로그램을 실행했 을 때 엑셀 프로세스, 음악 프로세스는 서로 간섭 X, 서로의 메모리 직접 접근 X 이라 생각하면 된다.

따라서 어떤 하나의 프로그램의 프로세스에 충돌이 일어나도 다른 프로그램의 프로세스에는 영향을 미치지 않는다.

예)
클래스 - 프로그램
인스턴스 - 프로세스

프로세스의 메모리 구성

  • 코드 섹션 : 프로그램의 코드가 저장되는 부분
  • 데이터 섹션 : 전역 변수 및 정적 변수가 저장되는 부분(이미지상 기타에 해당)
  • 힙(Heap) : 동적으로 할당되는 메모리 영역
  • 스택(Stack) : 메서드 호출 시 생성되는 지역 변수와 반환 주소가 저장되는 영역(스레드에 포함)

스레드 (Thread)

스레드는 프로세스 내에서 실행되는 작업의 단위인데, 한 프로세스 내에서 여러 스래드가 존재할 수 있고 프로세스가 제공하는 동일한 메모리 공간을 공유한다.
스레드는 프로세스보다 단순해서 생성 및 관리가 쉽고 가볍다.
(프로세스를 실행하려면 코드, 힙, 기타, 스레드(+스택)이 떠야하는데 스레드는 스택과 만들면 끝이기 때문)
프로세스는 하나 이상의 스레드를 반드시 포함한다.

이미지 상 스레드에서 코드, 힙(메모리), 기타 영역에 접근해서 사용할 수 있다는 말이다.

메모리 구성

  • 공유 메모리 : 같은 프로세스의 코드 섹션, 데이터 섹션, 힙(메모리)은 프로세스 안의 모든 스레드가 공유!
  • 개별 스택 : 각 스레드는 자신의 스택을 갖고 있다.

프로그램이 실행된다는 건,
1. 운영 체제는 디스크에 있는 파일 덩어리인 프로그램을 메모리로 불러오면서 프로세스 생성
2. 프로세스 안에 있는 코드가 한 줄씩 실행되는 것.

여기서 누가 코드를 한 줄씩 읽어 내려갈까?
바로 Thread!

따라서 하나의 프로세스 안에는 최소 하나의 스레드가 존재한다 왜냐하면, 그래야 프로그램을 실행(코드를 한줄씩 읽어 내려감)을 할 수 있으니까!

프로세스는 실행 환경과 자원을 제공하는 컨테이너 역할을 하고,
스레드는 CPU를 사용해서 코드를 하나하나 실행한다.

멀티스레드가 필요한 이유

하나의 프로그램도 그 안에서 동시에 여러 작업이 필요하므로!

내가 자주 사용하는 애플 뮤직을 예를 들면, 음악을 들으면서 내가 좋아하는 음악 좋아요도 누르고 플레이리스트도 동시만들고...
또 유튜브에서는 영상을 시청하며 댓글을 달 수 있듯이
멀티스레드를 사용하면 하나의 프로그램에서 동시에 여러 작업을 할 수 있기 때문!
== 병렬처리 가능

0개의 댓글