[OS] Lec 9. Virtual Memory (1/5) - Non-continuous allocation

ChoiYongHyeun·2024년 3월 27일
0

운영체제

목록 보기
14/16
post-thumbnail

Continuous memory allocation 의 한계

여태까지는 가상메모리 중 연속적인 가상 메모리를 공부했었다.

각 프로세스의 주소들을 0번부터 시작한다 생각하고 프로그래밍을 하고 (Relative address , logical address)

프로세스가 실제 메모리에 올라 갈 때 Relative location 주소들에 메모리에 적재된 시작 위치 만큼을 더해줘 실제 메모리 주소 (Real address , Physical address) 에 접근하였다.

Continuous memory allocation 의 장점과 단점이 무엇인지 생각해보고 Non-continuous llocation 에 대해 생각해보자

  • 장점 : logical address 에서 physcall address 로 맵핑되는 과정 구현이 매우 단순하다는 장점이 있다. 프로세스가 모두 메모리에 연속적으로 올라가니 그저 프로세스가 올라간 시작부분만 가상 주소에 더해주면 된다.

  • 단점 : 모든 프로세스가 연속적으로 메모리에 모두 올라가야 한다 는 단점이 존재한다. 실제 프로세스 코드는 아주 많은 양의 잘 일어나지 않는 오류 핸들링에 대한 일들도 존재한다.

    또 메모리에 용량은 한정적인데 프로세스의 용량이 커질 수록 프로세스를 메모리에 모두 올리는 것은 매우 힘든 일이다.

    물론 이를 해결하기 위해 필요한 부분만 스왑 영역에서 메모리 영역으로 옮겨서 사용하는 방법도 있긴 했다.

Un-continuous memory allocation

Un-continuous memory alloction 은 이름 그대로 알 수 있듯이 프로세스를 메모리의 모든 영역에

연속적으로 적재시키지 않고 불연속적으로 적재시키는 기법이다.

프로세스들을 특정한 단위인 block 단위로 나누고 모든 프로세스들을 swap device 에 적재해둔다.

그 후 메모리에서 프로세스를 작동 시킬 때 필요한 자료들을 swap device -> memory블록 단위로 적재한다.

이를 통해 무거운 프로세스를 모든 메모리에 적재 시킬 필요 없이 필요한 영역만 불러옴으로서

메모리의 용량은 효율적으로 사용하고 프로세스는 마치 모든 프로세스 정보가 메모리에 적재된 것으로 생각하고 가정하고 실행하는게 가능하다.

Block mapping

그럼 프로세스가 실행 될 때 가상 주소가 어떻게 실제 메모리의 주소로 변경될까 ?

Block mapping 에서는 가상 메모리 주소를 v = (b,d) 이렇게 저장한다.

  • b : block number
  • d : displacement(offset) in a block <- block 의 시작점으로부터 얼마나 떨어져있는가

가상메모리 주소를 통해 실제 주소를 찾아가는 과정을 알기 위해선

우선 필요한 자료구조를 살펴봐야 한다.

BMT (Block map table)

BMT 는 커널 공간에 프로세스 별 고유의 BMT 를 가지고 있다.

BMT 는 운영체제가 코드를 실행 할 때 코드의 가상 메모리를 실제 메모리 주소로 변경 할 때

필요한 정보를 담고 있는 자료구조이다.

BMT 를 어떻게 실제 주소를 찾아가는지 확인해보자

Block Address mapping

residence bit 는 해당 block 이 현재 메모리에 적재되어있는지를 나타내는 지표이다.

v = (b,d) 로 나타나있는 가상 주소에 접근하려 할 때 운영체제는 BMT 를 통해 접근하고자 하는 가상 주소가

현재 메모리에 적재되어있는지 residence bit 를 통해 확인한다.

만약 적재되어 있지 않다면 swap device 로 넘어가 메모리에 적재한 후 다음 과정을 진행한다.

이후 BMT 에서 실제 메모리에 해당 Block 이 적재되어있는 real address 를 확인한다.

real address 는 실제 메모리에 적재된 Block 의 시작 주소이다.

이후 real address + d 를 이용하면 v 의 주소를 실제 메모리에 적재된 주소 값으로 변환하는 것이 가 능하다.


이후 Page system , segment system , hybrid page / segment system 등에 대한 이야기가 나오는데
Block 시스템의 로직을 잘 이해한다면 이후 내용도 쉽게 이해하는 것이 가능 할 것이다.

적어도 김덕수 교수님 강의 이내에서는 말이다.

profile
빨리 가는 유일한 방법은 제대로 가는 것이다

0개의 댓글

관련 채용 정보