[CS] 프로그램, 프로세스, 스레드

REASON·2022년 10월 16일
0

CS

목록 보기
4/7

프로그램과 프로세스 차이

프로그램은 하드 디스크에 저장되어 있는 실행 파일로 실행하기 전까지 하드 디스크에 남아 있는 파일을 의미한다.

프로세스는 프로그램을 실행한 상태를 의미하며, 하드디스크에서 메인 메모리로 코드와 데이터를 가져와 실행중인 상태를 의미한다. 프로세스는 동시에 독립적으로 여러개가 존재할 수 있다.
예를 들면, 특정 실행 파일을 여러번 실행시켰을 때 해당 프로그램이 여러개 실행되는 것을 의미한다. (프로세스를 여러개 동시에 실행할 수 있는 것은 멀티 프로세스 기반이기 때문이다.)
독립적이기 때문에 사용하는 메모리 공간도 다르다는 특징이 있다.
프로세스마다 부여된 ID가 있기 때문에 운영체제에서는 이 ID를 보고 구분 한다.
프로세스는 코드, 데이터, 힙, 스택 영역으로 이루어져있다.

터미널에 tasklist 명령어를 입력하면 현재 실행 중인 프로세스를 확인할 수 있다.
PID가 해당 프로세스의 ID를 의미한다.

동일한 이름의 크롬창이 여러개 있지만 PID가 다르기 때문에 구분이 가능하다!

프로세스를 실행할 때는 메모리 공간, CPU가 필요하다.

스레드는 프로세스 안에서 실행 흐름 단위로 스케줄러에 의해 CPU를 할당받을 수 있는 인스트럭션의 나열이다. 프로세스는 하나 이상의 스레드로 구성되어 있다.

스케줄러 : 어떤 프로세스에게 자원을 할당할지 결정하는 운영체제 커널의 모듈을 지칭한다.
인스트럭션 : 컴퓨터에게 일을 시키는 단위, 컴퓨터가 알아들을 수 있는 기계어로 이루어진 명령어

프로세스와 스레드의 차이

프로세스가 단일 스레드인 경우 프로세스와 스레드의 차이가 없기 때문에
프로세스와 스레드의 차이를 알려면 멀티 프로세스, 멀티 스레드를 비교해보아야 한다.

멀티 프로세싱은 2개 이상의 프로세서, 코어를 활용하는 시스템이다.

멀티 프로세스 : 프로세스를 여러개 동시에 실행하는 것을 의미한다.
멀티 스레드 : 스레드를 여러개 만들어서 동시에 실행하는 것을 의미한다. (하나의 프로세스를 동시에 여러 작업 실행)

프로세스는 서로 독립적인 메모리 공간을 가지기 때문에 데이터를 공유할 수 없다는 특징이 있으나,
멀티 스레드로 구현한다면 데이터를 쉽게 공유할 수 있게 된다.
여러 스레드가 스택만 다른 공간을 갖고 코드, 데이터, 힙 영역은 공유할 수 있기 때문이다.

공유할 데이터가 있다면, 멀티스레드로 구현하는 것이 좋다.

참고 자료
컴퓨터 사이언스 부트캠프 with 파이썬
운영체제 프로세스 스케줄러
해시넷 인스트럭션

0개의 댓글