일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pwnable
- SQL
- System
- 정보보안기사
- Spring Framework
- Pwnable.kr
- BOF
- 정보보안기사 실기
- OS
- hacking
- Payload
- PWN
- Operating System
- Shell code
- LOB
- Buffer Overflow
- webhacking
- 정보처리기사 실기
- 웹해킹
- wargame
- Spring MVC
- stack overflow
- Spring
- 네트워크
- 운영체제
- system hacking
- 워게임
- Lord of BOF
- 해킹
- webhacking.kr
- Today
- Total
DongDD's IT
Memory Management - Swapping, Contiguous Allocation, Multiple-partition allocation, Dynamic storage allocation, Fragmentation 본문
Memory Management - Swapping, Contiguous Allocation, Multiple-partition allocation, Dynamic storage allocation, Fragmentation
DongDD 2017. 11. 3. 16:33Memory Management
Swapping
- 프로세스가 메모리에 없을 때 Disk에서 가져오거나 Memory가 가득 차서 가져올 수 없을 떄 프로세스를 Swapping한다고 말한다.
Backing Store
- 모든 메모리 이미지의 복사본이 있는 곳으로 유저에게 메모리 직접 접근을 가능하게 한다.
- 디스크에 대한 접근은 메모리 접근보다 시간이 더 걸린다.
Roll out, roll in
- Swap out, swap in과 같은 말로 스케쥴러에 의해 우선순위가 낮은 프로세스는 swap out되고 높은 프로세스는 swap in하여 수행된다.
메모리 공간이 부족하여 필요한 프로세스를 가져올 수 없을 때 backing store로 swap out(roll out)하고 필요한 프로세스를 가져올 때는 backing store로부터 swap in(roll in)하여 user space로 가져온다.
Contiguous Allocation
- 하나의 프로세스를 메모리 공간에 연속적으로 저장하는 방법이다.
- 메모리의 낮은 부분에 interrupt vector와 함께 operation system이 존재한다.
- 메모리의 높은 부분에는 User process가 존재한다.
- Relocation Register에 들어 있는 시작 주소를 이용하여 프로세스들이 서로간 영역을 침범하지 않도록 막는다.
- Limit Register에는 프로세스의 범위가 들어있다.
-> 즉, Relocation Register ~ Relocation Register+Limit Register의 메모리 공간을 사용한다고 볼 수 있다
- MMU가 Logical address를 동적으로 Physical address로 변환해준다.
Multiple-partition allocation
- Hole이라는 개념을 사용해 memory 할당이 이루어진다.
- Process가 도착하면 할당될 수 있는 충분한 크기를 가진 Hole을 찾아 할당한다. (Hole size >= Process size)
- Operationg System은 allocated partitions(할당된 부분)과 free partition(Hole)에 대한 정보를 유지해야한다.
Hole
- 사용 가능한 메모리 부분
- 다양한 사이즈의 hole이 존재한다.
Dynamic storage allocation
- 들어오는 프로세스에 따라 Memory를 동적으로 할당해주는 방법이다.
1) First-fit : 가장 처음에 나오는 프로세스가 할당될 수 있는 충분한 크기를 가진 Hole에 할당하는 방법
2) Best-fit : 프로세스가 할당될 수 있는 크기를 가진 Hole중에서 메모리 낭비가 가장 적은(만족하는 것 중에 가장 작은) Hole에 할당하는 방법
3) Worst-fit : 프로세스가 할당될 수 있는 가장 큰 크기를 가진 Hole에 할당하는 방법
Example) 4K 크기를 가지는 Process가 메모리에 할당되려 할 때
1) First-Fit : 들어갈 수 있는 공간 4K, 11K, 5K 중 가장 처음 만나는 5K에 할당하게 될 것이다.
2) Best-Fit : 들어갈 수 있는 공간 4K, 11K, 5K 중 가장 작은, 최적의 공간은 4K이기 때문에 4K에 할당한다.
3) Worst-Fit : 들어갈 수 있는 공간 4K, 11K, 5K 중 가장 큰, 최악의 공간은 11K이기 때문에 11K에 할당한다.
이 예제에서 First-Fit방식으로 할당하게 된다면 Process 4K가 들어간 5K영역 중 1K가 남아 모든 프로세스가 1K보다 크다면 1K를 사용할 방법이 없어 Internal Fragmentation이 발생할 수 있다.
Fragmentation(단편화)
1) External Fragmentation
- 전체 메모리의 빈 공간을 보면 프로세스가 할당될 수 있는 빈 공간의 크기가 있지만 연속적이지 않기 때문에 프로세스를 할당할 수 없는 경우를 의미한다.
- Compaction을 통해서 External fragmentation을 줄일 수 있다.
Compaction : 비어있는 Hole들을 합쳐 하나의 큰 Hole(Block)로 만들어주는 기법
- Compaction은 Relocation이 동적일 때와 실행 시간일때 가능하다.
2) Internal Fragmentation
- 할당된 메모리 영역이 프로세스의 크기보다 약간 큰 경우, 프로세스가 할당된 이후에 Hole에서 남는 부분들이 사용될 수 없는 경우를 의미한다.