공부 일지/CS공부
프로세스와 스레드
Joshbla
2023. 1. 27. 21:55
프로세스와 스레드
프로세스(Process)란
컴퓨터에서 연속적으로 실행되고있는 컴퓨터 프로그램.
어떤 프로그램이 실행되면 운영체제가 해당 프로그램에게 메모리를 할당해주며 프로그램이 실행된다.
이 때 메모리에 올라와 실행되고있는 프로그램의 인스턴스를 프로세스라고 한다.
운영체제로부터 시스템 자원을 할당받는 작업의 단위이다.
프로세스는 데이터, 컴퓨터자원(시스템자원), 스레드로 구성된다.
스레드가 한 개인 프로세스를 싱글 스레드 프로세스, 여러개인 프로세스를 멀티 스레드 프로세스라고 한다.
스레드(Thread)란
스레드는 프로세스 내에서 프로그램이 할당받은 자원과 데이터를 통해 코드를 실행하는 하나의 작업흐름이다.
하나의 프로세스가 멀티스레드를 지원하면 동시에 여러 작업을 할 수 있다.
프로세스와 스레드의 차이
프로세스는 다른 프로세스와 각각 독립된 메모리 영역을 할당받기 때문에 서로 다른 프로세스의 변수나 자료에 접근할 수 없다.
그러나 스레드는 메모리를 공유할 수 있다.
여러 프로세스를 동시에 실행하는 멀티 태스킹과 여러 스레드를 동시에 실행하는 멀티 스레드를 비교해보면
앞에서 얘기한 메모리 공유차이로 인해
멀티 스레드는 메모리자원을 더 아낄 수 있고 응답시간이 더 빠르다는 장점이 있지만
메모리를 공유하기 때문에 다른 스레드와 동기화 문제가 발생하여 충돌이 일어나면
모든 프로세스가 종료될 수 있는 단점도 있다.