Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 구현
- 로봇 청소기
- 2021 KAKAO BLIND RECRUITMENT
- 플로이드 와샬
- SWEA
- 트라이
- 다익스트라
- GIT
- 크루스칼
- 플로이드와샬
- 브루트포스
- 비트마스킹
- 2020 KAKAO BLIND RECRUITMENT
- 이분탐색
- Spring
- 프로그래머스
- 2019 KAKAO BLIND RECRUITMENT
- 파이썬
- BFS
- 우선순위큐
- 조합
- 백트래킹
- 2018 KAKAO BLIND RECRUITMENT
- 백준
- 최소 신장 트리
- 투 포인터
- 시뮬레이션
- 2020 카카오 인턴십
- 스택
- 투포인터
Archives
- Today
- Total
개발조아
메모리 관리 본문
728x90
- 가상 메모리
- 보조 기억장치 일부를 주기억장치(메인메모리)처럼 사용하는 것
- 실제 메모리보다 큰 공간을 사용할 수 있다.(보조기억 장치 공간 사용)
- 프로세스 실행 시 필요한 부분(요구페이지)만 가상 메모리에 올리고, 그중 일부분만 물리 메모리에서 실행한다.
- 이후 CPU가 논리주소로 가상 메모리에 접근하여 실제 메모리에 필요한 부분을 적재한다.
- 이때 논리주소를 실제 물리 주소로 바꾸는게 과정이 필요한데 이것을 MMU(Memory Management Unit)가 수행한다.
- 메모리 할당
- 연속 할당(Continuous Allocattion)
- 프로그램을 연속인 메모리 공간에 배치
- 충분히 큰 연속된 메모리가 없으면 할당 불가
- 구현 단순
- 고정 분할 기법 : 메모리를 고정된 크기로 분할, 내부단편화 발생
- 동적 분할 기법 : 메모리를 필요한 공간만큼 할당, 외부단편화 발생
- 불연속 할당(Non-Continuous Allocattion)
- 프로그램을 여러 조각(페이징, 세그먼트)으로 분할
- 각 조각을 메모리에 임으로 배치
- 많은 프로세스가 메모리에 적재 가능
- 페이징 기법 : 메모리를 같은 크기의 frame으로, 프로그램을 frame과 같은 크기의 페이지로 분할
- 세그먼테이션 기법 : 서로 다른 크기의 세그먼트로 나누어 할당
- 연속 할당(Continuous Allocattion)
- 스와핑(Swapping)
- 프로세스를 일시적으로 보조기억장치로 이동시켰다가 다시 실행이 필요할 경우 메모리에 적재
- CPU 스케쥴링에 의해 CPU를 선점 당했을 때 다른 프로세스를 위해 보조 기억장치로 이동, 다시 CPU를 받았을 때 메모리에 적재
- 적은 메모리 공간에서 여러 프로세스 실행 가능
- 단편화
- 프로세스가 메모리에 적재되고 제거되는 과정에서 프로세스들이 차지하는 메모리 틈 사이의 사용하지 못할 만큼 작은 크기의 빈 공간
- 외부 단편화
- 메모리 공간 중 사용하지 못하게 되는 일부분
- 메모리 사이사이에 공간들을 합치면 충분한 공간이 되는 부분들이 분산되어 발생
- 압축
- 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간을 한쪽으로 몰아 공간을 확보
- 작업효율이 좋지 않음
- 내부 단편화
- 메모리의 고정된 크기 안에 남는 공간
- 메모리가 100B로 나뉘어져있고, 프로세스가 90B라면 내부단편화는 10B 이다.
- 불연속 할당 방식
- 가상 메모리의 공간은 연속적이지만 실제 물리 메모리 공간은 연속적일 필요가 없다.
- CPU가 가상 메모리의 공간을 참조하여 실제 메모리을 사용하기 때문이다.
- 페이징
- 물리 메모리는 Frame이라는 고정 크기로 분할, 가상 메모리는 Page라는 고정 크기로 분할, frame과 page의 크기는 같다
- 논리 주소를 물리 메모리 주소 변환을 위해 페이지 맵 테이블이 필요함
- 내부 단편화 문제 발생
- 세그먼테이션
- 가상 메모리와 물리 메모리를 다양한 크기의 세그먼트로 분할
- 논리 주소를 물리 메모리 주소로 변환을 위해 세그먼트 맵 테이블이 필요함
- 외부 단편화 문제 발생
Comments