프로세스와 쓰레드

Shin Yeongjae·2023년 7월 5일
0

TIL

목록 보기
18/21

이전 블로그에서 글 옮김

프로세스

프로세스는 운영체제 위에서 연속적으로 실행되고 있는 프로그램이다. 지금 내가 글을 쓰고 있는 웹스톰도 하나의 프로세스
이 글을 읽을 수 있는 크롬도 하나의 프로세스 이다. 현재 실행중인 프로그램 모두 프로세스를 가지고 있다.

각 프로세스는 메모리 위에서 독립적으로 실행된다. 프로세스는 격리된 실행 개체이며 데이터 및 정보를 공유하지 않는다.
따라서 어떤 프로세스에서 문제가 발생한다면 해당 프로세스만 죽게된다.

프로세스는 통신을 위해 IPC(Inter-Process Communication) 메커니즘을 사용한다.

프로세스에는 프로그램을 위해 작성된 Code가 있고, 그 안에 함수들이 어떤 순서로 실행되어야 하는지 함수가 끝나면 어디로 돌아가야하는지 에 대한 정보가 있는 Stack이 있다.
그리고 우리가 오브젝트를 생성하거나 데이터를 만들 때 데이터들이 저장되는 공간인 Heap이 있다. Heap에는 동적으로 할당된 변수가 저장되고, Data에는 전역 변수나 스태틱 변수들이 할당된다.

쓰레드

쓰레드는 프로세스의 일부인 실행 단위이다. 프로세스는 동시에 실행되는 여러 개의 쓰레드를 가질 수 있다. 쓰레드는 각각 해야하는 업무를 배정 받는다.
이 쓰레드는 자기들이 수행해야하는 함수의 호출을 기억해야 하기 때문에 쓰레드마다 스택이 할당되어 있다.
하지만 프로세스 안에서 동작하는 쓰레드들은 결국 한 프로그램을 위해 일하기 때문에 프로세스에 지정된 코드와 데이터, 힙들에 접근해서 공통적으로 업데이트가 가능하다.

쉽게 말하면 크롬에서 유튜브를 통해 음악을 들으면서 블로그를 읽을 수 있는 것은 음악을 재생하는 쓰레드 하나, 블로그 글을 읽는 쓰레드 하나가 존재하기 때문이다라고 할 수 있다.

프로세스 vs 쓰레드

프로세스쓰레드
정의프로세스는 프로그램이 실행 중임을 의미함쓰레드는 프로세스의 한 부분을 의미함
무게프로세스는 무거움쓰레드는 가벼움
종료까지 걸리는 시간프로세스는 더 많은 시간이 걸림쓰레드는 비교적 덜 걸림
생성 시간프로세스는 더 많은 시간이 걸림쓰레드는 비교적 덜 걸림
통신프로세스간의 통신은 쓰레드보다 더 많은 시간이 걸림쓰레드간의 통신은 프로세스에 비해 덜 걸림
리소스프로세스가 더 많은 리소스를 소비함쓰레드는 더 적은 리소스를 소비함
메모리 공유프로세스는 격리되어 있음쓰레드는 서로 메모리를 공유함
데이터 공유프로세스는 공유하지 않음쓰레드는 서로 데이터를 공유함
profile
문과생의 개발자 도전기

0개의 댓글