프로세스와 스레드의 차이

Voler Web·2022년 8월 24일

Word

목록 보기
7/23

프로세스와 스레드를 알기전에 프로그램을 아는것이 좋을것 같아 프로그램에대해 먼저 알고가는게 좋습니다.

프로그램이란

프로그램이란 , 파일이 저장 장치에 저장 되어 있지만 메모리에는 올라와 있지 않은 정적인 상태를 말합니다.

프로그램은 프로세스의 이전단계로 아직 실행되지 않은 파일 그 자체를 가리킵니다.
윈도우의 *.exe 파일이나 MacOS의 *.dmg 파일 등 사용자가 실행하기 전의 파일을 말합니다.
프로그램은 실행되지 않은 파일 , 즉 코드 덩어리입니다.

프로세스란?

프로세스란 , 운영체제로부터 자원을 할당받는 작업의 단위입니다.

프로세스는 프로그램의 동적인 상태이며 프로세스의 정의는 그냥 실행되고 있는 컴퓨터 프로그램이라고 볼 수 있습니다 , 스케줄링 단계에서는 "작업"과 같은 단어라고 보아도 무방합니다.
프로세스는 메모리를 할당 받을 때 Code, Data, Stack, Heap의 구조로 메모리를 할당 받습니다.

스레드란?

스레드란 프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행경로입니다.

스레드는 프로세스의 자원을 공유하면서 프로세스 실행 흐름의 일부가 되는것입니다.
스레드는 코드로 비유하자면 코드 내에 선언 된 함수와 같다 볼 수 있습니다.
스레드는 프로세스 내에 여러개가 생길 수 있습니다.

프로세스와 스레드의 차이

프로세스와 스레드의 개념의 범위부터 차이가 납니다. 스레드는 프로세스 안에 포함되어 있고
운영체제가 프로세스에게 Code, Data, Stack, Heap의 구조를 메모리 영역을 할당해주고 최소 작업 단위로 삼는 반면 , 스레드는 프로세스 내에서 Stack 메모리 영역을 제외한 다른 메모리 영역을 같은 프로세스 내 다른 스레드와 공유합니다.

또한 프로세스는 다른 프로세스와 정보를 공유 하려면 IPC를 사용하는 등 번거러운 과정을 거쳐야 하지만 , 스레드는 기본 구조부터 메모리를 공유하는 구조이기에 다른 스레드와 정보공유가 쉽습니다.

출처 : reajoone

profile
공부하려 끄적이는 velog

0개의 댓글