본문 바로가기
3-2 학기/Operating Systems

[운영체제] The Abstration : Address Space

by bona.com 2024. 10. 13.

운영체제 역사

1. Early Sytems

위 그림은 초기 운영체제의 모습이다.

이때를 "선사시대"라고 부르기도 한다.

(운영체제에서 말하는 선사시대란 가상 메모리를 사용하기 전의 시대를 의미한다.)

물리 메모리에 하나의 실행 중인 프로그램이 존재하였다.

특별히 가상화에 대한 개념은 없었다.

 

2. Multiprogramming and Time Sharing

프로세스가 여러 개 올라가는 다중 프로그래밍 프로세스에서 제일 중요한 첫 번째 목표는 "보호"이다.

본인이 가지고 있는 메모리 영역을 남들이 침범하지 않도록 하는 것이다.

 

동작 방법에 대해서 설명하자면, 여러 프로세스는 실행 준비 상태인 것이다.

이때 OS는 프로세스를 CPU에게 전환하면서 실행한다.

 

3. 주소 공간 Address Space

주소 공간이란, 운영체제가 실행 중인 프로그램에게 제공하는 개념이다.

실행 중인 프로그램이 가정하는 메모리의 모습은 메모리 가상화를 뜻한다.

 

  • code (text)
    • 반드시 메모리에 존재해야 하고 주소 공간에 존재한다.
  • Stack
    • 함수 호출 체인 상의 현재 위치, 지역 변수, 함수 인자와 반환 값 등을 저장하는데 사용한다.
  • Heap
    • 동적으로 할당되는 메모리이다.

 

메모리 관리

그렇다면 메모리를 관리해야 하는 이유가 뭘까?

물리 메모리보다 프로그램의 크기가 더 클 경우, 이를 전부 메모리에 옮겨서 실행할 수 없기 때문이다.

 

그래서 생긴 방법으로 swap 방법이 있다.

메모리에서 실행 중이던 모듈을 빼서 이를 하드디스크에 저장해두는 것이다.

 

이때 모듈이 들어가고 나가는 건, 메모리 기준으로 생각하면 된다.

즉, 모듈이 메모리에서 swap 영역으로 나가는 것을 swap out이라고 하고,

모듈이 swap 영역에서 메모리로 들어가는 것을 swap in이라고 한다.

 

* 이때 메모리와 swap영역을 합친 공간을 가상 메모리라고 부르는 것이다.

* swap을 메모리처럼 사용하기 때문에 "가상" 메모리인 것!

여기서 페이지 폴트(Page Fault)개념이 나오게 된다.

프로세스는 언제나 실행되려면 메모리에 있어야 하는데, 메모리에 없고 swap 영역에 있는 것을 페이지 폴트라고 한다.

 

그러면 IO를 통해서 읽어오면 된다.

 

 

이제부터는 한 번에 여러 프로세스가 실행되는 구조의 메모리 관리 방법에 대해 알아보자.

 

(1) 고정 분할 다중 프로그래밍

프로세스의 크기와 상관없이, 동일한 크기로 자르는 것을 고정 분할이라고 한다. (페이징이라고 부르기도 한다.)

 

만약에 큰 프로세스가 메모리에 올라오면, 고정된 크기에 따라 여러 조각으로 나뉘어 배치되는 것이다.

그래서 이를 비연속 메모리 할당이라고 부른다.

 

고정 분할의 장점은, 크기를 고정시킴으로써 관리가 수월하고, 메모리가 보호된다는 것이다.

예를 들어, 20KB 크기로 분할을 한 메모리가 있는데, 넣고자 하는 프로세스의 크기가 33KB라면 이 프로세스를 잘라 20KB, 13KB로 나누어 배치하는 것이다.

 

하지만 단점으로, 오히려 낭비되는 공간이 생기기도 한다. 

위의 상황과 반대로 고정 크기보다 작은 크기의 프로세스가 배치된다면 낭비되는 공간이 생기는 것이다.

이를 내부 단편화(Internal Fragmentation)라고 한다.

 

 

(2) 가변 분할 다중 프로그래밍

프로세스의 크기에 따라 메모리를 나누는 것을 가변 분할이라고 한다. (세그멘테이션 기법이라고도 한다.)

 

프로세스의 크기에 맞게 메모리가 분할되므로 한 프로세스가 연속된 공간에 배치되어 연속 메모리 할당이라고도 부른다.

 

가변 분할의 장점으로는 하나의 프로세스를 연속된 공간에 배치함으로써 고정 레지스터가 필요 없어진다는 것이다.

 

하지만, 단점으로는 메모리에 있는 기존 프로세스가 작동을 중지하고 나갔을 때, 새로 들어올 프로세스가 빈 공간보다 커서 들어가지 못한다는 것이다. 이때 생긴 작은 빈 공간을 외부 단편화(External Fragementation)라고 한다.