What is Process ??

컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램

메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)

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

각각의 독립된 메모리 영역(Code, Data, Stack, Heap)를 각자 할당 받습니다.

또한 CPU, 주소 공간도 할당 받는다.

C86A3EF3-EE77-48CA-AF0B-E8FE1F259835.jpeg

C86A3EF3-EE77-48CA-AF0B-E8FE1F259835.jpeg

C86A3EF3-EE77-48CA-AF0B-E8FE1F259835.jpeg

C86A3EF3-EE77-48CA-AF0B-E8FE1F259835.jpeg

기본적으로 프로세스당 최소 1개의 스레드(Main)를 가지고 있다.

각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근 할 수 없다.

⚠️ 다른 프로세스의 자원에 접근 하려면 프로세스 간의 통신(IPC)을 사용한다.(파이프,파일,소켓 등)

What is Thread ??

프로세스 내에서 실행되는 여러 흐름의 단위

프로세스의 특정한 수행 경로 (프로세스가 할당 받은 자원을 이용하는 실행의 단위)

스레드는 프로세스 내에서 각각 Stack만 따로 할당 받고 Code, Data, Heap 영역은 공유한다.

또한 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드 끼리 공유하면서 실행한다.