본문 바로가기
OS/os 공부

8.Main memory management(1)_용어와 개념리마인드

by Success T.H.I.E.F 2021. 12. 30.

메모리 관련 글

 

메모리시스템

메모리는 cpu가 프로그램을 실행하거나 데이터를 참조하기위 해 필요한 정보를 불러오는 공간이다. 메모리 계층 구조란 메모리를 필요에 따라 여러가지 종류로 나누어 둔 것으로 위에서부터 CPU

younsw.tistory.com

 

 

메모리(기억장치)의 종류

피라미드의 위쪽으로 갈수록 메모리 용량은 작아지고 비싸며 빠르고 아래로 갈수록 용량은 크고 저렴하지만 느리다.

 

캐시 레지스터는 HW(CPU)가 관리하고 메인 메모리, 보 조거 억장 치는 SW(OS)가 다룬다.

 

메모리를 배우기 전 백그라운드 용어 정리

 

Block 

보조기억 장치에서 주기억 장치로 올리는 데이터의 최소 단위이며 OS에 따라 보통 1~4KB이다.

우리가 1bit을 가 필요하더라도 블록단위로 올라온다

word

word는 주기억장치와 레지스터 사이의 데이터 전송 단위이다.

우리가 보통 CPU가 32bit다 64bit 다 이렇게 말할 때 기준을 word라고 봐도 좋다.

 

Address Binding

이게 무슨 말이냐 하면

컴퓨터 공간에 변수를 선언하면 이는 논리적 주소이고 실제 메모리에는 변수형에 맞는 데이터 크기만큼 물리적 메모리에 저장되고 이 두 사이를 묶어주는 것을 Address Binding이라고 한다. 

프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑(mapping)하는 작업이다.

 

Binding 시점에 따라 

• Compile time binding • Load time binding • Run time binding으로 나뉜다.

Compile time binding 특징

> 프로세스가 메모리에 적재될 위치를 컴파일러가 완벽하게 이해하고 있어야 하며 적재되는 위치는 변하지 않는다.

또한 프로그램 전체가 메모리에 올라가야 한다.

 

Load time binding 특징 

> 프로그램이 메모리상 어디에 적재될지 모른다면 대체 가능한 상대 주소를 생성하여 적재한다.  실제 메모리에 올리는 적재 시점에 시작 주소를 반영하여 사용자 코드 상의 주소를 절대 주소로 재설정하는 것이 로드 타임 바인딩이며 컴파일 타임 바인딩과 마찬가지로 프로그램 전체가 메모리에 올라가야 한다는 특징이 있다.

Run time binding

> 실행시간에 주소를 할당하는 것으로 프로세스가 레디에서 러닝으로 될 때 주소를 정해주겠다는 것이다.

프로세스가 수행 도중 다른 메모리 위치로 이동할 수도 있고 HW인 MMU의 도움을 받아 가능하다. 

대부분의 OS가 Run time binding을 사용한다

Dynamic Loading

모든 루틴(기능)을 교체 가능한 형태로 디스크에 저장한다. 실제로 프로세스가 기능을 호출하기 전에는 루틴을 적재하지 않고 호출을 해야 메모리를 적재한다. 

 

장점은 우리가 필요한 것만 메모리에 오르니 메모리 공간을 효율적으로 사용 가능하다.

 

Swapping

Swap-out > 프로세서 할당이 끝나고 수행 완료된 프로세스는 Swap-device로 보내는 것

Swap-in > 새롭게/다시 시작하는 프로세스를 메모리에 적재하는 것