포도가게의 개발일지
메모리 관리 참조 : CS chapter 9 & [OS] Lec 8. Memory Management (1/3) - Backgrounds / 운영체제 강의 본문
메모리 관리 참조 : CS chapter 9 & [OS] Lec 8. Memory Management (1/3) - Backgrounds / 운영체제 강의
grape.store 2021. 9. 9. 17:22https://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)