Process & Thread

임철종·2022년 7월 23일
1
post-thumbnail

Process

Process란 컴퓨터 즉, 운영체제 위에서 독립적으로 메모리 위에서 실행되고 있는 프로그램을 말합니다.

우리가 사용하는 음악 재생 프로그램이나 비디오 재생 프로그램, 게임, 브라우저 등등은 각각의 프로세스를 가지고 있습니다.

각 프로세스는 메모리 위에서 독립적으로 실행되고 있습니다.
그래서 만약 어떤 프로세스에 문제가 생겨서 멈춰버린다면, 그 프로세스만 멈추고 나머지는 실행되고 있을 것입니다.

스마트폰에서 어떤 어플리케이션을 사용하다가 먹통이 되면 그 어플리케이션만 강제종료하면 되는 것처럼 말이죠.


Resource

각각의 프로세스는 저마다 할당된 메모리, 데이터 등 자원(resource)이 정해져 있습니다.

Code

프로그램을 실행하기 위한 코드

Stack

프로세스 안에서 함수들이 어떤 순서로 실행되는지, 실행이 끝나고 나면 어디로 가야하는지에 대한 정보를 저장

Heap

오브젝트를 생성하거나 데이터를 만들 때 그 데이터들을 저장
동적으로 할당된 변수들이 저장된다.

Data

전역 변수와 정적 변수들을 저장


Thread

Thread란 각 Process 안에서 서로 다른 업무를 하는 일꾼이다.


Resource

쓰레드는 한 프로세스 안에서 여러개가 동작할 수 있다.

Stack

각각 할 일을 배정받아 수행하는데, 그 때 필요한 함수의 호출을 기억해야 하기 때문에 각 쓰레드 마다 고유의 스택이 할당된다.

Code, Heap, Data

하지만, 하나의 프로세스를 위해 동작하는 쓰레드들은 그 프로세스에 지정된 코드와 힙, 데이터들을 공통적으로 접근한다.

예를 들어서 음악을 들으며 일기를 쓸 수 있는 어플리케이션이 있다면, 음악을 재생하는 쓰레드와 일기를 작성하는 쓰레드가 각각 일을 처리하는 것이다. 물론 이렇게 간단히 두개 쓰레드로 나뉘진 않을 것이다.

쓰레드는 동시다발적으로 발생할 수 있기 때문에 프로세스가 일을 효율적으로 할 수 있도록 도와준다.

profile
🌑🌘🌗🌖🌕

0개의 댓글