본문 바로가기
Computer Science/Operating System

Memory Optimization

by Gofo 2021. 6. 20.

Memory Optimization

메모리 관리에 있어서 최적화를 해야 한다.

 

Optimization Techniques

  • Copy-on-write : fork 할 때 처음에 copy를 하지 않고 공유하도록 한다.
  • Memory-mapped files : file을 메모리에 올려서 I/O가 메모리에서 일어나도록 한다.
  • Modify bit : dirty bit을 사용해서 swap out 될 때 dirty 만 write 한다.
  • Prepaging : 프로세스가 시작할 때 working set을 메모리에 불러온다.

 

Copy-on-Write

write가 발생할 때 copy를 실행한다.

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

 

처음에 child가 만들어질 때는 parent의 address space를 복사하는 것이 아니라 공유하도록 되어있다.

이후 child나 parent에서 write를 할 때 해당 page만 복제해서 수정한다.

 

처음의 child의 stack 영역에는 garbage 공간을 제공한다.

 

Data 영역은 copy-on-write를 적용하지 않고, zero-fill-on-demand 를 적용한다.

Data 영역은 0으로 초기화해서 별도의 공간을 배정한다.

 

Memory-Mapped Files

file I/O를 줄여서 I/O에 대한 비용을 줄이는 기법이다.

 

disk에 저장되어있는 file을 메모리에 다 올린 후, file에 대한 access를 메모리에서 수행한다.

따라서 모든 I/O 작업이 메모리에서 진행된다.

 

disk보다 memory access time이 더 빠르기 때문에 더 효율적이다.

 

메모리에서 disk에 반영하기 전에 중단되면 손실이 발생한다.

따라서 중간중간에 동기화(sync)하는 것이 필요하다.

 

일반적으로 중간에 저장하지 않으면 file을 close 할 때 disk에 반영이 된다.

 

Modify Bit

swap out 되는 비용을 줄일 수 있다.

 

page table에 추가적인 bit(dirty bit)을 사용한다.

dirty bit이 swap out 될 때 1이면 disk에 write를 하고, 0이면 write 하지 않고 그냥 out 시킨다.

 

Prepaging

 프로세스가 실행될 때의 비용을 줄일 수 있다.

 

순수하게 demand paging을 하면 초반에 page faults가 많이 발생하게 된다.

프로세스를 중단할 때 working set을 기억하고, 다시 시작되면 전체 working set을 메모리에 가져온다.

 

 

 

 

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

I/O Devices  (0) 2021.06.20
성능에 미치는 요인들  (0) 2021.06.20
Memory Allocation and Trashing  (0) 2021.06.20
Page Replacement  (0) 2021.06.20
Memory Space Utilization  (0) 2021.06.20

댓글