메모리 관리
컴퓨터 내의 한정된 메모리를 극한으로 활용해야 하기 때문에
가상 메모리
운영체제 관련 프로세스만 몇GB가 넘을텐데, 스마트폰에 앱 하나 실행하는 것도 아닌데
물리 메모리의 크기에 한계를 극복하기 위한 기술
실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식으로 사용
Swapping
가상 메모리에는 존재하지만 RAM에는 없는 데이터나 코드에 접근할 땐 오류가 발생하게 되는데, 이때 메모리에서 지금 당장 사용하지 않은 영역을 저장공간으로 옮기고 저장공간의 일부분을 마치 메모리처럼 불러와 쓰는 것
말 그대로 메모리와 저장공간을 서로 Swap해서 쓰는 기술
메모리 할당
메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리 할당 크기를 기반으로 할당
연속 할당
그냥 프로세스를 순차적으로 메모리 공간에 할당하는데 메모리를 미리 나누어서 순차적으로 할당하는지 매 시점 프로그램 크기에 맞춰 분할하여 순차적으로 할당하는지 고정 vs 가변으로 나뉜다
- 고정 분할 방식
메모리를 미리 나눠야하기 때문에 프로세스 크기가 다 달라도 똑같이 나눠서 융통성이 없긴함
- 가변 분할 방식
매 시점 프로그램 크기에 맞게 동적으로 메모리 나눠서 사용함
불연속 할당
연속적으로 할당하지 않게 쓰는 방법이며 요즘 운영체제가 쓰는 방법이다
페이징
동일한 크기의 페이지 단위로 나누어서 메모리의 서로 다른 위치에 프로세스를 할당한다
세그멘테이션
세그먼트(Segment) 단위로 나누는 방식인데 세그먼트가 물리적인 단위가 아니라 논리적인 개념으로 묶는 것
Q. 가상 메모리가 뭔지
Q. 페이징과 세그먼테이션의 차이
'CS' 카테고리의 다른 글
[CS] HashTable & Set & Map에 대해 (0) | 2023.01.21 |
---|---|
Git Flow 전략에 대해 (0) | 2023.01.10 |
Kurento와 Openvidu에 대해 (0) | 2023.01.06 |
WSL1을 WSL2로 업데이트 하는 방법 (0) | 2023.01.05 |
Kurento Docker로 설치하기 - Window 환경 (0) | 2023.01.05 |