프로세스와 스레드의 관계

goya3014·2022년 1월 26일
0

TIL

목록 보기
4/6

프로세스와 스레드를 설명하기 전에 먼저 프로그램에 대해 알아보자.

프로그램이란?

파일이 저장 장치에 있으나 메모리에는 올라가있지 않은 정적인 상태이다.
프로그램이 실행되면 메모리에 올라가게 되고, 동적인 상태가 된다. 이 상태의 프로그램을 프로세스라고 한다.

프로세스란?

운영체제로부터 자원을 할당받는 작업의 단위이다.

스레드란?

할당 받은 자원을 이용하는 실행의 단위이다.

시간이 흐르고 프로그램이 복잡해지면서, 하나의 프로세스로만 프로그램을 실행하기 벅차게 되었다.

여러개의 프로세스를 사용할 수 있으면 좋겠지만, 운영체제는 안정성을 위해 프로세스마다 자신에게 할당된 메모리 내의 정보에만 접근할 수 있도록 제약을 두고 있고, 이를 벗어나는 정보에 접근하려면 오류가 발생하게 된다.

따라서, 프로세스보다 더 작은 실행 단위인 스레드가 필요하게 되었다.

스레드는 서로 자원을 공유할 수 있고, 프로세스 실행흐름의 일부가 될 수 있다. 또한, 스레드는 프로세스가 할당받은 메모리 영역 내에서 stack 형식을 제외하고 code, data, heap 형식으로 할당된 메모리 영역을 공유한다.
따라서 각각의 스레드는 별도의 stack 메모리가 있지만 힙 메모리는 서로 읽고 쓸 수 있게 된다.

프로세스와 스레드의 차이점

만약 프로세스를 실행하다가 오류가 생겨 강제로 종료된다면, 다른 프로세스에는 영향을 주지 않지만 메모리 영역을 공유하고 있는 스레드 중 하나에서 오류가 난 경우 모든 프로세스 내의 스레드가 강제 종료된다는 차이점이 있다.

Reference
https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4

profile
이제 막 첫걸음을 시작한 주니어 개발자입니다.

0개의 댓글