일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 초소형머신러닝
- 딥러닝
- BFS
- 컴퓨팅사고
- dfs문제
- 삼성역테
- tinyml
- 삼성코딩테스트
- 코테
- 임베디드 딥러닝
- 영상처리
- tflite
- sort
- 다이나믹프로그래밍
- bfs문제
- MCU 딥러닝
- 포스코 ai 교육
- DP문제
- TensorFlow Lite
- DP
- 포스코 교육
- 삼성코테
- dfs
- 포스코 AI교육
- 코딩테스트
- 자료구조
- 그리디
- 알고리즘
- 삼성역량테스트
- 코테 문제
- Today
- Total
코딩뚠뚠
[OS 공부] 메모리 관리 전략 본문
OS가 메모리를 관리하는 이유 ?
- 각 프로세스들은 독립된 메모리공간을 갖고 OS 또는 다른 프로세스의 메모리 공간 접근에 제한이 걸려있다.
- OS 만이 OS 영역과 다른 프로세스의 메모리 영역의 접근에 제한이 없다.
용어 :
- Swapping : 메모리 관리에 사용되는 기법. 다중 프로그래밍 환경에서 CPU의 할당시간이 끝난 Process의 메모리를 보조기억장치로 내보내고 다른 Process의 메모리를 불러들일 수 있다.
- Fragmentation : '단편화'로 프로세스들이 메모리에 적재되고 나가는 과정이 계속되다보면 점령하지 못하는 자유공간들이 늘어나게 되는 현상. 이 공간들을 압축하여 자유공간을 확보할 수 있지만 작업효율이 좋지는 않다.
Paging :
메모리 관리기법중 하나이다.
외부 단편화와 압축의 단점을 해소하기 위해 생긴 방법론이며, 이는 하나의 Process가 사용하는 메모리 공간이 연속적이여야 한다는 제약을 없앴다.
물리 메모리는 frame 이라는 고정된 크기의 블록으로 분리되어있고 논리메모리는 Page 라는 고정 크기의 블록으로 분리되어있다.
하나의 Process가 사용하는 공간은 여러 Page로 나뉘어 관리되고 개별 Page는 순서에 상관없이 물리 메모리에 있는 Frame에 mapping 되어 저장된다.
장점 - 논리 메모리가 물리 메모리에 저장될 때 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절하게 배치되어 외부 단편화를 해결 할 수 있다.
(외부 단편화란 메모리에 남아있는 공간이 50 + 50 인데 이 공간들이 연속되지 않아서 70 짜리의 작업을 수행하지 못하는 것이다. 이를 위해 압축을 진행한다고 볼수있다.)
단점 - 내부 단편화 문제 비중이 늘어난다. 프레임이 100 의 크기로 나뉘어져 있는데 어떤 페이지가 350의 크기를 원한다면 프레임을 4개 할당해야 할 것이고 400-350 을 하여 50의 내부 단편화 가 발생할 것이다.
(내부 단편화란 50크기에 20만 수행하여 30이 남는 현상이다.)
Segmentation (세그멘테이션)
Paging 에서는 논리메모리와 물리메모리를 같은 크기의 블록으로 나눈다.
세그멘테이션에서는 서로 다른 크기인 논리적 단위인 Segment로 분할한다.
사용자가 (Segment 번호 + 변위) 의 두 개의 주소로 지정하고 Segment table 에는 각 Segment의 시작물리주소와 길이를 저장한다.
Paging 과 비교하면 차이점을 알 수 있다.
'공부 > OS 공부' 카테고리의 다른 글
[OS 공부] 캐시의 지역성 (0) | 2021.03.09 |
---|---|
[OS 공부] 가상 메모리 (0) | 2021.02.12 |
[OS 공부] 프로세스 동기화 (0) | 2021.01.27 |
[OS 공부] 동기&비동기 (0) | 2021.01.17 |
[OS 공부] CPU 스케줄러 (0) | 2021.01.13 |