본문 바로가기

Computer Science/Operating System

<운영체제> 프로세스 메모리

 

1. 프로세스 모델

* 프로세스란

 - 프로세스란 운영체제 입장에서 하나의 작업단위이다.

 

 - 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미한다.

 

 - 프로그램의 실행은 파일 시스템에 존재하던 실행파일이 메모리에 적재된다는 의미를 가지며, CPU를 할당 받아 명령을 수행하고 있는 상태를 의미한다.

 

 - 즉 프로세스는 실행 중인 프로그램을 의미하며, 프로세스의 주소공간을 가상 메모리라고 칭한다.

 

* PCB

 - 프로세스 제어 블록(Process Control Block)은 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조이다.

 

 - 프로그램이 메모리에 올라와 이 PCB를 얻었을 때 비로소 프로세스가 된다.

 

 - 모든 프로세스는 고유의 PCB를 가지며, 프로세스 생성 시 만들어져서 종료시 폐기된다.

 

 - 프로세스는 그림에서처럼 다양한 정보들을 담고 있다. 그 중 대표적인 몇가지만 알아보자.

 

 - 포인터 : 프로세스 제어 블록을 연결하여 준비상태나 대기 상태의 큐를 구현

 - 프로세스 상태 : 프로세스의 현재 상태를 나타냄

 - 프로세스 우선순위 : CPU 스케줄러가 준비 상태에 있는 프로세스 중 실행 상태로 옮겨야 할 프로세스를 선택할 때 확인한다.

 - 메모리 관련 정보 : 프로세스의 메모리 위치 정보, 메모리 보호를 위한 경계 레지스터 값과 한계 레지스터 값 등

 

 - CPU를 차지하던 프로세스가 나가고 새로운 프로세스가 들어오는 것을 Context Switching이라고 하는데, 이 때 두 PCB의 내용이 변경된다.

 

 - Context Switching은 기본적으로 프로세스 자신에게 주어진 CPU시간을 다 사용(타임아웃)하면 발생하며, PCB에 지금까지의 결과를 저장하고 준비상태가 된다.

 

* 프로세스 구조

 - 프로세스의 주소공간은 크게 코드영역, 데이터영역, 스택영역, 힙영역으로 나누어 진다.

 

 - 각 프로세스 영역은 자신 만의 주소공간을 갖는다. 따라서 그에 상응하는 메모리를 필요로한다.

 

 - 아래 그림에서 스택은 높은 주소를 가지며, 텍스트는 낮은 주소를 갖는다.

 

2. 프로세스 영역

* 스택 영역

 - 프로그램이 자동으로 사용하는 영역으로, 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터(지역변수, 매개변수, 리턴값 등)를 임시로 저장하는 공간이다.

 

 - 프로세스가 메모리에 로드될 때 스택 사이즈는 고정되며 함수 호출 시 생성되고, 끝나면 반환된다.

 

 - 스택사이즈가 고정이므로 재귀함수가 너무 깊거나, 함수 지역변수가 메모리를 초과하면 Stack Overflow가 발생할 수 있다.

 

 - 영역이름대로 스택 자료구조를 사용하여 LIFO(후입선출)의 형식이다.

 

 - 명령 실행 시 자동으로 증가 또는 감소하기 때문에 보통 메모리의 마지막 번지를 지정한다.

 

* 힙 영역

 - 프로그래머가 필요할 때마다 사용하는 동적인 영역이다 따라서 이 영역은 런타임에서 결정된다. 동적 메모리 영역이라고도 부른다.

 

 - 이 영역은 메모리 주소 값에 의해서만 참조되고 사용된다.

 

 - 위의 스택과 같은 공간을 공유하며, 힙이 낮은 주소부터 할당되는데 각 영역이 상대공간을 침범하면 Stack Overflow, Heap Overflow가 발생한다.

 

* 데이터 영역

 - 전역변수, 정적변수, 배열과 같은 구조체 등이 저장되는 공간이다.

 

 - 데이터 영역은 초기화되지 않은 데이터가 저장되는 BSS영역과 초기화된 데이터가 저장되는 GVAR영역으로 나뉜다.

 

* 텍스트 영역

 - 코드 영역이라고도 불리며, 말그대로 코드가 저장되는 공간이다.

 

 - 사용자가 작성한 프로그램 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되어 있다.

 

 - 컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없게 Read-only로 되어있다.

 

 


참고

 

 

 

프로세스

본 내용은 학교 강의를 통해 개인적으로 공부한 내용입니다. 책은 쉽게 배우는 운영체제(한빛아카데미)를 참고했습니다. 조언은 언제든지 감사합니다 ! 프로세스가 무엇일까 ? 프로세스란 운영

bnzn2426.tistory.com

 

OS - 프로세스 메모리 구조 - kwon | kwon's Blog

프로세스란? 프로세스란 운영체제 입장에서 하나의 작업 단위이며, 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 프로그램과 프로세스 프로그램은 일반적으로 하드 디스크

kyu9341.github.io

 

프로세스 메모리

    프로세스 메모리(2021-04-15)

www.ktword.co.kr

 

 

[OS] 프로세스 메모리 구조 (코드, 데이터, 스텍, 힙)

프로세스 메모리 구조 (코드, 데이터, 스텍, 힙) 프로그램의 실행 프로그램의 실행은 두가지 중요한 의미를 가진다. 파일 시스템에 존재하던 실행파일이 메모리에 적재된다는 의미 프로그램이 CP

zangzangs.tistory.com