메모리 오버레이와 스왑
- RAM이 작을 때 여러 프로세스를 쌓아서 실행
- 연산이 필요한 프로세스는 RAM에 적재하고 상대적으로 필요하지 않는 프로세스는 보조기억장치의 스왑영역에 저장 ex) 절전 모드로 전환할 때, RAM에서의 프로세스 상태를 보조기억장치에 저장(스왑인)
메모리 분할 방식
- 가변 분할 방식 : 프로세스의 크기대로 쌓음, 빈 공간 관리가 힘듦 -> 프로세스가 종료되면 외부 단편화 발생 가능
- 고정 분할 방식 : 일정 크기의 페이지 단위로 프로세스를 분할해서 쌓음, 페이지 단위가 프로세스와 차이가 크면 낭비 공간이 큼 -> 내부 단편화 발생 가능
가상 메모리
- 한정적인 메모리 공간을 사용자에게 더 많이 제공하기 위해 가상 주소 사용
- 메모리 관리 장치는 테이블을 이용해 가상 주소를 실제 데이터가 담겨 있는 주소로 변환
- 다중 프로그래밍을 실현하기 위함
- 메모리 관리 측면에서 용이
- 메모리 관리 최소 단위는 1byte
- 32bit 관리 체계의 경우 주소의 길이는 429억바이트(4GB)
- 응용 S/W를 실행할 때 가상 메모리 공간(VMS)을 반으로 나눠 2GB는 User모드(OS 영역 포함), 다른 2GB는 Kernel모드
페이징
- 프로세스(가상 메모리)를 일정한 크기의 페이지로 분할해서 메모리에 적재하는 방식
- 물리 메모리는 프레임이라는 고정 크기의 블록으로 나누어짐
- 페이지 테이블 : 페이지와 프레임을 매핑
- 불연속 메모리 관리 기법 -> 외부 단편화 해결
세그멘테이션
- 가상 메모리를 서로 크기가 다른 논리적 단위(세그먼트)로 분할한 것
- 미리 분할 x(가변)
- 불연속 메모리 관리 기법 -> 내부 단편화 해결
접근 권한
- Stack, Heap은 RW
- Data에서 전역변수는 RW, 문자열 상수는 R
- Code는 RX
- 페이지 테이블에 권한 비트가 존재(rwx)