본문 바로가기
Computer Science/Operating System

Memory Space Utilization

by Gofo 2021. 6. 20.

Memory Space Utilization

  • 과거
    • dynamic loading
    • overlay
    • dynamic linking
    • swapping
  • 요즘
    • demand paging

 


과거의 Memory Space Utilization

배경

과거에는 프로그램의 실행을 위해서 전체 프로그램과 데이터가 physical memory에 올라왔어야 한다.

따라서 프로세스의 크기는 physical memory의 크기보다 작아야 했다.

 

때문에 큰 프로레스나 많은 프로세스를 동작하기 위해서 프로세스가 당장 필요한 메모리만 할당하고 더 필요하면 이후에 추가로 할당하였다.

 

기법

  • dynamic loading : OS support O
  • overlay : OS support X
  • dynamic linking : OS support O
  • swapping

 

Dynamic Loading

동적으로 프로그램을 메모리에 로딩한다.

당장 프로그램을 실행하는데 필요한 공간만 메모리에 할당을 한다.

이를 통해 메모리를 최소한으로 사용한다.

 

프로그램이 main routine와 subroutine으로 구성되어있다고 하자.

프로그램을 실행하는데 당장 subroutine이 필요하지 않다면, main routine만 메모리에 할당한다.

이후에 subroutine이 실제로 호출되어 할당이 필요할 때 할당한다.

 

Overlay

dynamic loading과 개념적으로 유사하다.

Dynamic loading은 운영체제가 프로그램이 필요한 메모리를 할당해주는 방식이다.

 

Overlay는 프로그램 개발자가 dynamic loading 처럼 동작하도록 구현한다.

운영체제의 special support를 필요로 하지 않는다.

 

Dynamic Linking

컴파일 시에 library를 합치지 않고 linking 작업을 보류하였다가 프로그램 실행 시 합친다.

linking은 execution time까지 연기된다.

주로 sahred library에서 사용하는 기법이다.

 

Dynamic linking은 운영체제의 도움이 필요하다.

운영체제는 프로세스가 필요한 routine이 다른 프로세스의 메모리 공간에 있지 않은지 확인해야 한다.

또한, 여러 프로세스가 같은 메모리 공간에 access 하는 것을 허락할지 결정해야 한다.

 

Swapping

메모리가 부족해지면 active 하지 않은 프로그램을 중단하고 그 프로세스의 이미지(code + data)를 backing store에 저장한다.

 

Backing store는 프로세스의 모든 memory image를 담을 수 있을정도로 큰 fast disk이다.

반드시 memory image에 direct access 하는 것을 제공해야 한다.

Disk의 file system과 분리된 공간에 존재한다.

 

Swap Out/In

swap out과 in을 반복하면서 제한된 메모리 공간을 효율적으로 운용한다.

 

메모리에서 disk로 내보내는 것을 swap out이라 한다.

나중에 실행할 때 disk에서 메모리로 다시 가져오는 것을 swap in이라고 한다.

 

단점

swapping이 메모리 공간의 효율성을 높여주지만, 성능에 대한 비용이 크다.

메모리의 내용을 disk로 옮기는 작업은 disk I/O 인데, disk access는 매우 느리기 때문이다.

 


Demand Paging

최근에 주로 사용하는 memory space utilization 기법이다.

 

프로그램이 필요로 하는 공간만 배정을 한다.

Paging을 이용해서 메모리 효율을 극대화하는 기법이다.

 

page는 프로세스가 필요로 하기 전까지 main memory로 load 되지 않는다.

page는 memory에서 backing store로 swap out 된다.

이후 프로세스가 필요로 할 때 메모리로 swap in 된다.

 

Page Falut

Page fault는 메모리 주소를 참조할 때 내가 원하는 내용이 main memory에 없는 현상이다.

즉, 유효하지 않는 주소에 대해 발생하는 exception이다.

 

exception은 valid-invalid bit이 invalid(0)일 때 발생한다.

최초의 valid-invalid bit은 0으로 초기화된다.

 

Page Fault Handling

page fault가 발생하면 page를 할당해준다.

그 후 trap에 빠졌던 instruction을 다시 시작한다.

 

valid-invalid bit이 0인 frame(empty frame)을 찾아서 그곳에 할당해주는 것이다.

만약 메모리에 할당할 공간이 없으면 기존의 page를 빼고 그 자리에 할당한다.

swap out과 in이 동시에 일어나는 것이다.

 

Swapping vs. Demand Paging

Swapping은 프로세스를 통채로 disk로 내보내고 가져온다.

Demand paging은 page 단위로 disk로 내보내고 가져온다.

 

Demand paging은 프로세스 전체가 swap out 되지 않기 때문에 프로세스가 중단되지 않는다.

프로세스가 필요로 하지 않는 page를 swap out 한다.

 

Demand Paging Performance

Page fault rate(P) 가 0이면 page fault가 없는 경우, 1이면 매번 page fault가 발생하는 경우를 말한다.

 

memory access time = M, page fualt handling time = F 라고 하면,

Effective access time = (1-P) * M + P * F 가 된다.

 

 

 

'Computer Science > Operating System' 카테고리의 다른 글

Memory Allocation and Trashing  (0) 2021.06.20
Page Replacement  (0) 2021.06.20
Segmentation  (0) 2021.06.20
Paging  (0) 2021.06.20
Memory Management  (0) 2021.06.20

댓글