1 분 소요

프로세스

정의

프로세스는 컴퓨터에서 실행 중인 프로그램을 말한다. 프로그램이 메모리에 올라가면 프로세스가 되고 CPU에 의해서 프로세스가 실행된다.

특징

각 프로세스는 서로 완전히 독립적이기 때문에 메모리 영역을 다른 프로세스와 공유하지 않는다. 때문에 한 프로세스에서 오류가 발생하더라도 다른 프로세스에 영향을 주지 않는다.

상태

img1

new

프로세스가 생성된 상태

ready

프로세스가 CPU 할당을 기다리고 있는 상태

CPU만 받으면 바로 실행할 수 있는 상태이다.

running

프로세스가 CPU를 할당 받아서 명령어를 실행하고 있는 상태이다.

waiting

프로세스가 이벤트가 발생할 때까지 대기하고 있는 상태

terminated

프로세스가 종료된 상태

프로세스가 소유한 모든 자원을 반납하게 된다.

메모리 구조

img1

코드 영역 (code)

실행할 프로그램의 코드가 저장되는 영역이다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서(fetch) 실행(execution)한다.

데이터 영역 (data)

전역변수, 정적변수가 저장되는 영역으로 프로그램이 시작될 때 할당되며 프로그램이 종료할 때 소멸한다.

힙 영역 (heap)

메모리 공간이 동적으로 할당되고 헤제되는 영역이다.

낮은 주소에서 높은 주소로 채워진다.

스택 영역 (stack)

함수 호출에 따른 지역변수와 매개변수가 저장되는 영역이다. 함수가 호출될 때마다 호출될 떄의 환경 등 특정 정보가 스택에 계속 저장된다.

높은 주소에서 낮은 주소로 채워진다.

힙과 스택의 차이

img1

PCB

PCB는 프로세스 제어 블록으로 프로세스를 관리하기 위한 정보를 포함하는 운영체제 커널의 자료구조이다. 프로세스의 중요한 정보를 저장하고 있기 때문에 보호된 메모리에 저장된다.

구조

프로세스 식별자 : 프로세스 식별변호

프로세스 상태 : new, ready, running, wating, terminated 등의 상태를 저장

프로그램 카운터 (PC) : 프로세스가 다음에 실행할 명령어의 주소를 저장

CPU 레지스터 : 프로세스를 실행하기 위해 저장해야 할 레지스터 정보

CPU 스케줄링 정보 : 프로세스의 우선순위, 스케줄 큐에 대한 포인터 등

계정 정보 : 프로세스 실행에 사용된 CPU 사용량, 실행 유저 정보

메모리 관리 정보 : 페이지, 세그먼트 테이블 등과 같은 정보를 저장

I/O 상태 정보 : 프로세스에 할당된 I/O 디바이스 목록

멀티 프로세싱

정의

여러 개의 프로세스를 통해서 병렬적으로 작업을 수행하는 것을 말한다.

특징

프로세스끼리는 메모리를 공유하지 않기 때문에 하나의 프로세스에 문제가 발생하더라도 다른 프로세스에 영향을 끼치지 않는다.

하지만 멀티 스레드 방식보다 많은 양의 메모리 공간과 CPU를 차지한다는 단점이 있다.

참고

  • Operating System Concepts

  • 면접을 위한 CS 전공지식 노트