프로세스

Soonwoo Kwon·2022년 5월 25일
0

바퀴달린 개발자

목록 보기
4/4

프로세스(Process)

프로세스란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 컴퓨터 프로그램은 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 집합이다.

프로그램은 하드 디스크 등에 저장되어 있는 실행 코드를 뜻한다. 즉 하드 디스크 상에 바이너리 형식의 파일로 저장된 것이고, 사용자가 실행하게 되면 메모리에 적재되어 실행된다.

root 디렉토리의 bin 디렉토리를 확인해 보면 다음과 같은 명령어 프로그램들이 바이너라 파일로 저장 되어있는 것을 볼 수 있다.

프로세스는 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위를 지칭한다.
ps 명령어를 통해 실행중인 프로세스를 확인할 수 있다.

위 이미지는 ps -ef 명령어를 통해 프로세스를 확인한 결과이다.
바이너리 파일로 저장되어 있던 프로그램인 ps가 사용자의 실행으로 인해 프로세스로 구동중인 것을 확인할 수 있다.

프로세스의 메모리 영역

프로세스는 각각 독립된 메모리 영역을 지닌다.

Code(text)

실행할 프로그램의 코드가 저장되는 영역이다. CPU가 이 공간에서 명령어를 하나씩 가져와 처리한다.

Data, BSS

전역 변수와 정적 변수가 저장되는 영역이다. 이 변수들은 프로그램이 시작될 때 할당되고 종료 시 소멸한다. BSS(Block Stated Symbol)에는 초기화되지 않은 전역 변수와 정적 변수가 저장된다. Data에는 초기화된 전역 변수와 정적 변수가 저장되는데, 이 변수들은 비휘발성 메모리인 ROM에 저장된다.
휘발성 메모리의 RAM에 비해 비용이 큰 비휘발성 메모리 ROM에 저장되는 변수들을 관리하기 위해 Data, BSS 영역을 구분한다.

Heap

사용자가 직접 관리할 수 있는 메모리 영역이다. 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.
힙 영역의 메모리는 낮은 주소에서 높은 주소의 방향으로 할당된다.

Stack

함수의 호출과 관계되는 지역 변수와 매개 변수가 저장되는 영역이다. 함수의 호출 시 스택 영역의 메모리가 할당되고, 함수의 종료 시 소멸한다.
스택 영역은 LIFO 방식으로 동작하고, 가장 늦게 push된 데이터가 가장 먼저 pop된다.
스택 영역의 메모리는 높은 주소 방향에서 낮은 주소 방향으로 할당된다.

프로세스의 상태

커널 내에는 준비 큐, 대기 큐, 실행 큐 등의 자료구조가 존재하며, 커널은 이 자료구조를 이용하여 프로세스의 상태를 관리한다.

  • 생성(create) : 프로세스가 생성되는 중이다.
  • 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.
  • 준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
  • 대기(waiting) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.
  • 종료(terminated) : 프로세스의 실행이 종료되었다.

다음 내용

  • 멀티 프로세스와 컨텍스트 스위칭
  • 스레드와 멀티스레드

0개의 댓글