CS/운영체제

[운영체제] 프로세스가 무엇일까?

mhko411 2021. 8. 31. 23:00
728x90

프로세스의 개념

프로세스는 실행 중인 프로그램을 뜻한다. 그렇다면 프로그램은 무엇일까? 프로그램은 아직 실행하기 전 상태의 실행 파일들을 의미한다. 바탕 화면에 있는 각각의 파일들이 프로그램이 되며 더블 클릭을 했을 때 프로그램이 실행 된다. 이때 프로그램이 실행 되면 CPU 메모리를 점유하게 되고 프로세스가 진행되는 것이다.

 

그렇다면 프로세스를 구성하는 것이 무엇인지 알아보자.

 

Code 영역 : 프로그램의 코드가 올라가고 프로그램을 실행 시켰을 때 실행 파일 내에 존재하는 명령어들이 올라가는 메모리 영역이다.

Data 영역 : 전역 변수와 static 변수에 할당을 위한 메모리 영역이다.

Heap 영역 : 개발자가 동적 할당할 때 필요한 메모리 영역이다.

Stack 영역 : 함수 호출 및 함수의 인자와 지역 변수를 위해 필요한 메모리 영역이다.

위와 같이 프로세스에서 메모리 영역을 나눈 이유는 최대한 데이터를 공유하면서 메모리 사용량을 줄이기 위함이다. Code 영역은 프로그램 내에서 모두 같은 내용이기 때문에 따로 관리하고 공유하며 Stack과 Data영역은 Stack이라는 자료구조의 특성과 전역 변수의 활용성을 위해 나눴다.

=> 지금까지 이해했을 때는 프로세스 내에서 스레드가 진행될 때 Code 영역은 모든 스레드가 공유해도 되며 Stack이나 Heap과 같은 것은 스레드마다 변할 수 있기 때문에 구분한 것으로 이해했다. 만약 구분되어 있지 않는다면 모든 스레드에서 Code 영역도 스레드의 수만큼 생성할텐데 나눠 놓으면 Code 영역을 하나만 생성하여 공유할 수 있다.

 

프로세스의 상태 

프로세스가 생성되고 소멸되기 까지 일련의 과정들에는 각 단계에 맞는 용어가 존재하며 컴퓨터의 자원을 효율적으로 관리하기 위해서 프로세스의 상태를 나눈다.

생성 상태 : 사용자에 의해 프로세스가 생성된 상태

준비 상태 : CPU를 할당받을 수 있는 상태

실행 상태 : 프로세스가 CPU를 할당받아 동작 중인 상태

대기 상태 : 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도하고 입출력 처리가 완료되기까지 대기하는 상태

완료 상태 : 프로세스가 CPU를 할당받아 주어진 시간 내에 수행을 완전히 종료한 상태