일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Application Runner
- Application Argument
- 외부설정
- JsonSerializer
- HttpMessageConverters
- 스프링 부트
- 리소스핸들러
- application.properties
- JPA
- cors
- WebApplication Type
- 다익스트라
- @ConfigurationProperties
- rest api
- 백트래킹
- AuthenticationPrincipal
- HATEOAS
- EnableAutoConfiguration
- 정적 리소스
- 알고리즘
- 브루트포스
- 백준
- 리소스 서버
- 백기선
- OAuth2
- 스프링부트
- Spring Security
- webjar
- @Profile
- Application Event
- Today
- Total
아카이브
외부 단편화, 내부 단편화 본문
< 단편화 (fragmentation) >
- 기억 장치의 빈 공간 또는 자료가 여러 개의 조각으로 나뉘는 현상
- RAM에서 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태
< 내부 단편화 >
- 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 현상
- 예) OS가 프로세스에 4kb를 할당. 하지만 사실상 1kb만 사용하고 있을 경우 내부 단편화가 3kb만큼 발생
< 외부 단편화 >
- 메모리가 할당 및 해제 작업의 반복으로 작은 메모리가 중간중간에 존재
- 중간중간에 생긴 사용하지 않는 메모리가 존재해서 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황
- 여유 공간이 여러 조각으로 나뉘는 현상
- 예) 메모리 시작 주소부터 8mb의 프로세스가 할당되고, 바로 이어서 16mb의 프로세스가 할당된 경우
8mb의 프로세스를 종료하면 메모리 시작 주소부터 8mb의 공간이 발생
< 문제 해결 방법 >
1. 페이징 ( Paging ) 기법 - 가상 메모리 사용, 외부 단편화 해결, 내부 단편화 존재
- 보조기억장치의 블록을 페이지, RAM의 블록을 프레임이라고 칭함
- 사용하지 않는 프레임을 페이지에 옮기고, 필요한 메모리를 페이지 단위로 프레임에 옮기는 기법
- 페이지와 프레임 대응을 위해 paging table 생성
- 연속적이지 않은 공간도 활용할 수 있기에 -> 외부 단편화 해결
- 페이지 단위에 맞게 사용하지 않으므로 -> 내부 단편화 존재
- 페이지 단위를 작게하면 -> 내부 단편화 해결할 수 있지만 ? page mapping 과정이 많아지므로 효율 감소
2. 세그멘테이션 ( Segmentation ) - 가상 메모리 사용, 외부 단편화 존재, 내부 단편화 해결
- 페이징 기법은 가상 메모리를 "페이지"라는 같은 크기로 분할했지만, 이와 반대로 서로 크기가 다른 논리적 단위인 세그먼트로 분할해서 메모리를 할당
- 각 세그먼트는 연속적인 공간에 저장되어 있음
- 크기가 다르기 때문에 미리 분할해 둘 수 없고 메모리에 적재될 때 빈 공간을 찾아 할당
- segment table이 필요함 ( 각 세그먼트의 항목별 시작 주소와 길이 정보 )
- 필요한 메모리 만큼 사용하기 때문에 내부 단편화 해결 -> 그러나 프로세스가 메모리를 해제하면 생기는 외부 단편화는 존재
3. 메모리 풀 ( Memory Pool )
- 필요한 메모리 공간을 사용자가 직접 지정하여 미리 할당받아 놓고 필요할 때마다 사용하고 반납하는 기법
- 미리 공간을 할당해놓고 사용하고 반납 -> 외부 단편화 해결
- 필요한 크기만큼 할당 -> 내부 단편화 해결
- if ( 단편화로 인한 낭비량 < pool을 만들었지만 사용하지 않을 때 누수양 ) 오히려 낭비
- 메모리의 할당, 해제가 잦은 경우 효과적인 기법
- 미리 할당하기 때문에 메모리 누수가 존재
출처
https://m.blog.naver.com/s2kiess/220149980093
http://sycho-lego.tistory.com/10
'운영체제' 카테고리의 다른 글
기억장치 배치전략(최초 적합/최적 적합/최악 적합) (0) | 2018.06.02 |
---|---|
데드락, 교착상태 (0) | 2018.06.02 |
Cache 정리 (0) | 2018.05.29 |
스케줄링 알고리즘 (0) | 2018.05.29 |
동시성(Concurrency)과 병렬성(Parallelism) (0) | 2018.05.29 |