포도가게의 개발일지

메모리 관리 참조 : CS chapter 9 & [OS] Lec 8. Memory Management (1/3) - Backgrounds / 운영체제 강의 본문

CS

메모리 관리 참조 : CS chapter 9 & [OS] Lec 8. Memory Management (1/3) - Backgrounds / 운영체제 강의

grape.store 2021. 9. 9. 17:22
반응형

https://www.youtube.com/watch?v=es3WGii_7mc 

 

 

메모리는 크게 두 분류로 나눠 지는데

- 레지스터, 캐시메모리는 cpu 내부에 있으며 cpu 즉 hw가 관리한다.

- 메인메모리(램), ssd, hdd 같은 경우는 cpu 밖에 있으며 sw인 os가 관리한다.

-> 이번 페이지에서는 sw가 관리하는 메모리를 다루는것에 대해 작성 되었다.

 

메모리 용어 정리

block 

 - 보조기억장치(disk)와 주기억장치(ram, memory) 사이의 데이터 전송단위

 - size : 1~4kb이다

 

word

 - 주기억장치와 레지스터 사이의 데이터 전송단위

 - size : 16~64bits이다.

* 흔히들 말하는 32bit 64bit 컴퓨터는 레지스터가 한번에 읽어오는 word에 단위이다

 64bit 컴퓨터의 레지스터는 메인메모리에서 한번에 64bits의 word를 읽어들인다.

 

address binding(논리주소 -> 물리주소로 매핑)

 - 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑하는 작업

 - 바인딩 시점으로 세가지 분류(compile time, load time, run time)

compile time binding

 - 프로세스가 메모리에 적재될 위치를 컴파일러가 알 수 있는 경우

 - 적재될 위치가 변하면 안된다.

 - 프로그램 전체가 메모리에 올라가야됨

 

load time binding

 - 우리 프로그램이 메모리 어디에 적재될지 모른다.

 - 대체 가능한 상대 주소로 생성해둠

 - 실제 메모리로 올릴때 코드상의 주소를 재설정 해줌

run time binding

 - 실행시간에 주소를 할당해준다.(ready 상태에서 -> run 상태로 바뀔때)

 - hw인 MMU (Memory Management)의 도움이 필요하다

 

Dynamic Loading

 - 프로그램을 통으로 올리지않고 필요한 부분만 올리는 것

 - function a,b,c를 따로 저장해두어 프로세스가 호출할때 메모리에 올리는 형태(이때 address binding이 된다)

 

Swapping

 - 프로세서 할당이 끝나고 수행 완료된 프로세스는 swap device로 보내고(swap out)

 - 새롭게 시작하는 다른 프로세스를 메모리에 적재하는것 (swap in)

 

 

 

Comments