[CS] 프로세스 vs 스레드

히수·2023년 4월 27일
0

CS

목록 보기
10/13

프로세스 vs 스레드

프로세스

프로세스는 동적으로 실행되고 있는 프로그램의 상태를 말한다. 즉 컴퓨터에서 작업 중인 프로그램을 의미한다.

프로세스는 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태이다.


스레드

스레드는 하나의 프로세스 내에서 동시에 진행되는 흐름의 단위를 의미한다.

만약 크롬 브라우저를 실행했을때, 하나의 프로세스가 생성된다.

여기서 쇼핑을 할수도, 게임을 할수도, 웹서핑을 할 수도 있다. 이렇게 하나의 프로세스 안에서 여러가지 작업을 할때에 일련의 작업 흐름들을 스레드라고 한다.


프로세스, 스레드의 메모리

프로세스의 자원 구조

프로세스는 4가지의 메모리 영역으로 구성되어 할당받는다.

  1. 코드 영역 (TEXT)
    프로그램 함수들의 코드를 CPU가 해석 가능한 기계어로 저장되어있다.

  2. 데이터 영역 (DATA)
    코드의 전역 변수나, 각종 데이터들이 모여있다.

  3. 스택영역 (STACK)
    지역 변수와 같은 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장하는 독립적 공간이다. Stack은 함수의 호출과 함께 할당되고 완료되면 소멸한다. 만약 이 영역을 초과하게 되면 stack overflow가 발생한다.

  4. 힙 영역 (HEAP)
    생성자, 인스턴스와 같이 동적으로 할당되는 데이터를 위해 존재하는 공간이다. 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.


스레드의 자원공유

스레드끼리 프로세스의 자원을 공유하면서 프로세스 실행 흐름의 일부가 되기 때문에 웹서핑을 하면서 파일 다운로드 같은 동시 작업이 가능하다.

아래 사진과 같이 하나의 프로세스 내에 여러개의 스레드가 들어있다.

스레드는 Stack 만 할당받아 복사하고 나머지 3개의 영역은 다른 스레드들과 공유한다.

따라서 스레드는 별도의 stack 을 가지고 있지만 heap 은 다같이 공유하고있으므로 서로 다른 스레드에서 가져와 읽고 쓸 수 있다.

하지만 프로세스는 프로세스끼리 다른 프로세스의 메모리에 직접 접근은 불가능하다.

profile
🔥

4개의 댓글

comment-user-thumbnail
2023년 4월 27일

항목별로 그림예시들이 추가 되어 있어 이해하기 편했습니다.

답글 달기
comment-user-thumbnail
2023년 4월 27일

다양한 사진덕분에 이해하기 좋았습니다!

답글 달기
comment-user-thumbnail
2023년 4월 27일

프로세스와 스레드는 중요한 개념 같은데 이해하기 쉽게 설명해주신것 같습니다.

답글 달기
comment-user-thumbnail
2023년 4월 27일

스레드가 상대적으로 프로세스보다 가볍겠군요. 배워갑니다.

답글 달기