일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SQL
- Pwnable.kr
- 네트워크
- wargame
- stack overflow
- OS
- Lord of BOF
- system hacking
- 해킹
- LOB
- webhacking
- 웹해킹
- 정보보안기사
- hacking
- 운영체제
- Spring
- BOF
- Buffer Overflow
- Spring MVC
- 정보보안기사 실기
- PWN
- 정보처리기사 실기
- System
- webhacking.kr
- pwnable
- Payload
- Operating System
- Spring Framework
- Shell code
- 워게임
- Today
- Total
DongDD's IT
Memory Management - 정의, Basic Hardware, Address Binding, MMU, Dynamic Loading, Dynamic Linking, Shared Library 본문
Memory Management - 정의, Basic Hardware, Address Binding, MMU, Dynamic Loading, Dynamic Linking, Shared Library
DongDD 2017. 11. 1. 15:37Memory Management
Memory Management
Definition : Virtual memory를 Physical memory로의 변환을 관리해주는 메커니즘
- 실질적으로 사용되는 메모리 공간은 physical 메모리 크기보다 훨씬 크다.
- 이러한 메모리 사용을 관리해주기 위해 가상 메모리라는 개념을 사용하여 메모리 관리를 한다.
Basic Hardware
- Memory Protection기법 중 가장 간단한 기법
- Base Register와 limit Register 두가지를 사용해 logical address를 정의
- Base Register : Process의 시작 주소를 담고 있음
- Limit Register : Process의 크기를 가지고 있음
- CPU Scheduler가 실행을 위한 프로세스를 선택할 때 업데이트함
- 위와 같은 형태로 정상적인 address인지 확인한다.
- base register(process의 시작주소)보다 들어온 주소가 작은 경우 올바르지 못한 address라 판단한다.
- base+limit값이 address보다 작은 경우 address는 프로세스의 마지막 주소보다 큰 것이기 때문에 잘못된 address라고 판단한다.
-> Basic Hardware는 따로 메모리 접근없이 Register 두개를 사용해 빠르게 메모리 주소를 파악할 수 있다.
Address Binding
- Disk내에 저장되어있는 binary 형태의 프로그램(소스 코드)의 변수나 함수 등을 절대 주소로 변환해주는 것을 의미한다.
- Symbolic address(소스 코드 내 주소) -> relocatable address(재배치 주소, 컴파일러) -> absolute address(절대적 메모리 주소, Linkage editor)의 과정으로 변환한다.
- Address binding은 세 가지 과정에서 수행할 수 있다
1) Compile time : 메모리 주소를 미리 알아 컴파일 때 address binding을 한다면 시작 주소가 바뀔 경우 재컴파일 해야된다.
2) Load time : 컴파일 때 주소가 결정되지 않았다면 Loader에 의해 Loading될 때 재배치 주소가 결정된다.
3) Execution time : 프로세스가 실행되는 동안 메모리 세그먼트 사이의 이동이 있을 경우 실행 시간까지 address binding이 지연된다. -> MMU(Memory Management Unit)나 Address mapping table 필요
Logical address & Physical address
1) Logical address
- 가상의 주소공간으로 CPU에 의해 결정된다.
2) Physical address
- 실제 메모리에 존재하는 주소를 의미한다.
- Logical address와 Physical address는 Complie,Load time에는 같은 address binding 기술이 사용되지만 Execution time에는 다르다.
- Execution time에는 Memory Mapping table을 이용하여 Logical address로 인해 Physical address가 바뀌게 된다.
Memory Management Unit(MMU)
Definition : 가상 주소를 물리 주소로 바꿔주는 하드웨어 장치를 의미한다.
- Mapping method
1) Simple method
- relocation register가 가지고 있는 프로그램의 시작 주소에 logical address를 더해 physical address를 찾아내는 방법
- Logical address가 300이고 Relocation Register가 가지고 있는 시작 주소가 1000이라면 Physical address는 logical address(300)+relocation register(1000)으로 1300이라는 주소를 갖게 된다.
- 실제 user program에서는 logical address만 다룰 수 있다.
Dynamic Loading
- 함수들이 호출되기 전까지 load되지 않는다. -> 메모리 공간 이용률을 증가시킬 수 있다. (사용되지 않는 함수들은 Load되지 않음)
- error 처리 함수와 같이 방대한 코드에서 자주 사용되지 않는 함수가 있을 때 사용하면 좋다.
- OS가 관여하지 않고 Library에서 제공된다.
Dynamic Linking
- Linking을 Execution Time까지 미루는 방법
- 프로그램이 실행되는 도중에 다른 모듈이 필요할 때 프로그램 제어 기능에 의해 연결할 수 있게 해준다.
- 다른 프로세스로의 메모리 접근이나 동일한 주소에 여러 프로세스가 접근하는 것을 관리하기 위해 OS의 관여가 필요하다.
- Library 수정 시 재컴파일할 필요가 없다는 장점이 있다.
- Stub이라는 공간을 만들어 Shared Library나 특정 Library를 어떻게 Linking할 것인지에 대한 routine을 만든다.
- Stub은 routine의 주소로 대체되고, 그 routine을 실행한다.
Static Library & Shared Library
1) Static Library
- 미리 만들고 컴파일, 링킹한 Library를 의미한다.
- 사용시 Library호출을 하면 되고 만약 Library가 수정될 경우 재컴파일하고 링킹을 다시 해줘야 된다는 단점이 있다.
2) Shared Library
- 여러 프로세스에서 공동 이용 가능한 Library를 의미한다.
- Dynamic Linking을 통해 접근하므로 프로세스마다 메모리에 Library를 적재할 필요가 없어진다.
- Library 수정 시 재컴파일이 필요없다는 장점이 있다.