본문 바로가기

학교공부/운영체제

Memory Management Starategies

운영체제의 기능 : hw 관리해 주는거

이전에 배운 스케줄링이나 쓰레드는 cpu에 주로 효과적인 전략

 

이번에는 메모리에서 쓰이는 전략을 알아보자구~ 

 

멀티프로그래밍 환경에서 메모리 사용시 고려할 점이 있다.

이러한 문제를 해결하는 방법이 VM

메모리에는 두 종류가 있다. physical과 virtual(logical) physical은 실제 우리가 보는 메모리이고 virtual(logical)은 프로그램 내부에서 사용되는 주소이다.

가상메모리를 이용해서

  • physical memory 고려하지 않고 프로그래밍 할 수 있어 편하다
  • 실제 메모리보다 더 큰 영역 제공가능하다 (안쓰는 프로세스 hdd로 잠시 보낸다) 전체 physical memory가 4GB라도  각 process의 주소공간의 합은 이것보다 크게 사용가능함. (32bit기준 process당 4GB 주소공간 제공한다)
  • 프로세스간 isolates 가능

    다음시간에 나온다.

 

 

 

밑의 그림(load time)으로 따지면 #98000이 virtual #198000이 pysical이라고 할 수 있다.

즉 virtual에서 pysical memory로 변환을 해주어야한다. 여러가지 방법을 배워보자.

 

 

 

 

 

Compile time에 제대로 작동할려면 data = 10이 실행될 때 int data가 0x0019800번지에 무조건 있어야한다.

그렇기 때문에 현실적으로는 불가능하다. 현재의 프로그램은 매우 복잡하게 생겼다없어졌다해서 저렇게 자리차지하고 모있음. 그래서 현재 window linux에서는 불가능. 프로그램이 정해져있는 임베디드 시스템에서는 가능하긴 함.

로딩. 실행 때 오버헤드 없어서 좋은거 같지만 위의 이유로 현실적으로 불가능.

 

 

compile time과 다르게 load될 때 알맞게 변환된다. 

실행시 오버헤드 없지만 로딩 때 생김.

 

 

 

 

compile, load는 그대로 98000으로 한다. 그러다가 실행할때는 + 100000을해서 실행중에 명령어 변경하는 방법

로딩시 오버헤드 없지만 실행 때 생김.

 

요즘엔 다 이거씀.

 

 

실행시에 주소 바꿔주는걸 cpu가 하지 않고 따로 hw가 해주는데 그게 MMU cpu안에 들어가있다

 

요 MMU가 알아서 virtual memory를 physical로 바꿔준다.

 

 

 

 

'학교공부 > 운영체제' 카테고리의 다른 글

Memory Management Strategies - 3  (0) 2020.05.25
Memory Management Starategies -2  (0) 2020.05.22
Deadlock  (0) 2020.05.15
Synchronization  (0) 2020.05.09
Process Scheduling - 2  (0) 2020.05.01