공부 일지/CS공부

프로세스와 스레드

Joshbla 2023. 1. 27. 21:55

프로세스와 스레드

프로세스(Process)란

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

 

어떤 프로그램이 실행되면 운영체제가 해당 프로그램에게 메모리를 할당해주며 프로그램이 실행된다.

이 때 메모리에 올라와 실행되고있는 프로그램의 인스턴스를 프로세스라고 한다.

 

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

프로세스는 데이터, 컴퓨터자원(시스템자원), 스레드로 구성된다.

스레드가 한 개인 프로세스를 싱글 스레드 프로세스, 여러개인 프로세스를 멀티 스레드 프로세스라고 한다.

 

스레드(Thread)란

스레드는 프로세스 내에서 프로그램이 할당받은 자원과 데이터를 통해 코드를 실행하는 하나의 작업흐름이다.

하나의 프로세스가 멀티스레드를 지원하면 동시에 여러 작업을 할 수 있다.

 

프로세스와 스레드의 차이

프로세스는 다른 프로세스와 각각 독립된 메모리 영역을 할당받기 때문에 서로 다른 프로세스의 변수나 자료에 접근할 수 없다.

그러나 스레드는 메모리를 공유할 수 있다.

 

여러 프로세스를 동시에 실행하는 멀티 태스킹과 여러 스레드를 동시에 실행하는 멀티 스레드를 비교해보면

앞에서 얘기한 메모리 공유차이로 인해

멀티 스레드는 메모리자원을 더 아낄 수 있고 응답시간이 더 빠르다는 장점이 있지만

메모리를 공유하기 때문에 다른 스레드와 동기화 문제가 발생하여 충돌이 일어나면

모든 프로세스가 종료될 수 있는 단점도 있다.