프로세스(Process)란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 실행 중인 프로그램으로, 디스크로부터 메모리에 적재되어 CPU 의 할당을 받는다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 한다.
프로세스는 프로그램이 인스턴스화된 것을 일컫는다. 프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어실행될 수 있는 파일이 되는 것을 의미하며 과정은 다음과 같다. (C언어 기준)
C 컴파일 과정 - 큰돌의 터전운영체제는 프로세스에 적절한 메모리를 할당한다.
스레드는 프로세스의 가장 작은 실행 단위이며, 프로세스는 여러 스레드를 가질 수 있다.(반드시 1개 이상을 갖는다) 한 프로세스 내에 2개 이상의 스레드를 갖는 경우 멀티 스레딩이라 한다. 코드, 데이터, 힙은 스레드끼리 서로 공유한다.
멀티스레딩은 프로세스 내 여러 작업을 멀티스레드를 처리하는 기법으로 서로 자원을 공유하므로 효율성이 높다. 웹 요청을 처리할때 새 프로세스를 생성하는 대신 스레드를 사용하는 웹 서버의 경우 훨씬 적은 리소스를 소비하며, 한 스레드가 중단(blocked)되어도 다른 스레드는 실행(running) 상태일 수 있기 때문에 중단되지 않은 빠른 처리가 가능하다. 또한, 동시성에도 큰 장점이 있다. 한 스레드에 문제가 생길 경우, 다른 스레드에도 영향을 끼칠 수 있다는 단점도 갖고 있다. 멀티스레드의 예시로는 웹 브라우저의 렌더러 프로세스를 들 수 있다.
Interview_Question_for_Beginner) OS
큰돌의터전) [CS전공지식면접] 프로세스와 스레드의 차이는?
Fast campus) CS 기술면접 단골질문! <프로세스와 스레드 차이>
널널한 개발자 TV) Process와 Thread의 차이