일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LeetCode
- 프로그래머스
- Database
- 안드로이드
- 백준
- git
- Javascript
- CS
- BFS
- network
- Algorithm
- frontend
- Redux
- Graph
- Data Structure
- 다이나믹 프로그래밍
- DP
- 동적 계획법
- 자바
- VIM
- react
- java
- 알고리즘
- DFS
- Python
- db
- TypeScript
- vscode
- 리트코드
- 그레이들
- Today
- Total
늘 겸손하게
CS - Operating System - 메모리 할당 본문
메모리 할당
프로그램을 실행시키기 위해서는 메모리를 할당합니다. 메모리 할당은 연속 할당과 불연속 할당으로 나뉩니다.
연속 할당
메모리에 '연속적으로' 공간을 할당하는 것.
프로세스 A, B, C를 나열하듯이 순차적으로 할당하는 방식입니다. 이는 메모리를 미리 나누어 관리하는 고정 분할 방식과 매 시점 프로그램의 크기에 맞게 메모리를 분할하여 사용하는 가변 분할 방식이 있습니다.
고정 분할 방식 (fixed partition allocation)
메모리를 미리 나누어 관리하는 방식이며, 메모리가 미리 나뉘어 있기 때문에 융통성이 없습니다. 또한 내부 단편화가 발생합니다.
가변 분할 방식 (variable partition allocation)
매 시점 프로그램 크기에 맞게 동적으로 메모리를 나눠 사용합니다. 외부 단편화가 발생할 수 있습니다.
이는 최초적합(first fit), 최적적합(best fit), 최악적합(worst fit)이 있습니다.
이름 | 설명 |
최초적합 | 위쪽이나 아래쪽부터 시작해서 홀을 찾으면 바로 할당 |
최적적합 | 프로세스의 크기 이상인 공간 중 가장 작은 홀부터 할당 |
최악적합 | 프로세스의 크기와 가장 많이 차이 나는 홀에 할당 |
내부 단편화 (internal fragmentation)
메모리를 나눈 크기보다 프로그램이 작아서 남아도는 공간이 너무 많이 발생 -> 들어갈 공간이 없음
외부 단편화 (external fragmentation)
메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상, 예로 100MB를 55MB, 45MB로 나눴지만 프로그램의 크기는 70MB일 때 들어가지 못하는 것.
불연속 할당
현대 운영체제에서 쓰는 방법으로 불연속 할당인 페이징 기법이 있습니다.
메모리를 동일한 크기의 페이지(보통 4KB)로 나누고 프로그램마다 페이지 테이블을 두어 이를 통해 메모리에 프로그램을 할당하는 것.
페이징 기법 말고도 세그멘테이션, 페이지드 세그멘테이션이 있습니다.
페이징 (paging)
동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당합니다. 홀의 크기가 균일하지 않은 문제가 없어지지만 주소 변환이 복잡해집니다.
세그멘테이션 (segmentation)
페이지 단위가 아닌 의미 단위인 세그먼트(segment)로 나누는 방식. 프로세스는 코드, 데이터, 스택, 힙 등으로 이루어지는데, 코드와 데이터 등 이를 기반으로 나눌 수도 있으며 함수 단위로 나눌 수도 있음을 의미합니다. 공유와 보안 측면에서 좋으며 홀 크기가 균일하지 않은 문제가 발생됩니다.
페이지드 세그멘테이션 (paged segmentation)
공유나 보안을 의미 단위의 세그먼트로 나누고, 물리적 메모리는 페이지로 나누는 것을 말합니다.
'Computer Science > Operating System' 카테고리의 다른 글
CS - Operating System - 프로세스 컴파일 과정 (0) | 2023.04.22 |
---|---|
CS - Operating System - 페이지 교체 알고리즘 (0) | 2023.04.22 |
CS - Operating System - 메모리 관리 (0) | 2023.04.16 |
CS - Operating System - 캐시 (cache) (0) | 2023.04.16 |
CS - Operating System - 메모리 계층 (0) | 2023.04.14 |