메모리 관리 요구조건
- 재배치(relocation)
- 보호(protection)
- 공유(sharing)
- 논리적 구성(logical organization)
- 물리적 구성(physical organization)
메모리 관리 관련 용어
용어 | 설명 |
---|
프레임(Frame) | 주기억장치의 고정 길이 블록 |
페이지(Page) | 보조기억장치에 있는 데이터의 고정 길이 블록. 한 페이지의 데이터 => 한 프레임의 주기억장치에 임시로 복사될 수 있음 |
세그먼트(Segment) | 보조기억장치에 있는 데이터의 가변 길이 블록 |
재배치(Relocation)
- 주기억장치는 여러 프로세스에 의해 공유
- Swap in/Swap out
- 동일한 메모리 위치로 배치 보장 못함 => 재배치
- 프로세스의 이미지는 주기억장치의 연속된 영역이라 가정
- CPU 하드웨어 + 운영체제 소프트웨어 => 프로그램 코드의 메모리 참조 부분에서 실제 물리 주소로 변환
보호(Protection)
- 프로세스는 다른 프로세스에 의한 원치 않는 간섭(의도적 or 우연히 발생할 수 있는 간섭)으로부터 보호되어야 함
=> 다른 프로세스에 속한 프로그램들은 허가 없이 읽거나 쓰기를 위해 임의의 프로세스의 메모리 참조 금지
- 재배치할 때 주기억장치 내의 프로그램 위치 예측 불가
=> 보호 요구 조건을 까다롭게 만듦
=> 보호를 위해 컴파일 시간에 확실한 주소를 아는 것이 불가능
=> 주소 검사는 실행 시간에 동적으로 주소 계산
- 실행 시간에 다른 프로그램의 명령어로 분기 및 데이터 접근 불가능
- 이런 상황 발생 시 명령어를 중단시킬 수 있어야 함
- 메모리 보호는 운영체제(소프트웨어)가 아닌 프로세서(하드웨어)의 역할
- 운영체제가 예측이 가능하다고 하더라도 모든 메모리 참조를 예측할 수 없기 때문
- 메모리 참조의 허용 여부 판정
=> 오로지 메모리 참조 명령의 실행 시에만 가능
공유(Sharing)
- 보호 메커니즘은 주기억장치의 같은 부분을 접근하려는 여러 개의 프로세스들을 융통성있게 허용할 수 있어야 함
- ex) 여러 개의 프로세스들이 동일한 프로그램 수행중일 때
- 각 프로세스들이 프로그램의 사본을 가지기 < 프로그램 사본 하나를 모든 프로세스들이 참조
- 재배치를 허용해도 공유 기능을 지원해야 함
- 보호 기능을 침해하지 않는 범위에서 제한된 접근을 통해 메모리의 일부분 공유
논리적 구성
운영체제와 컴퓨터 하드웨어가 몇몇 형태의 모듈로 구성된 사용자 프로그램과 데이터를 효과적으로 처리할 수 있을 때 얻는 이점
- 각 모듈의 작성과 컴파일은 독립적으로 이루어질 수 있으며, 서로 다른 모듈 간에 이루어지는 참조는 수행시간에 시스템에 의해 해결됨
- 비교적 적은 추가 비용(overhead)으로 각 모듈마다 서로 다른 보호 등급(읽기전용, 수행전용)을 적용 가능
- 프로세스들 간에 모듈을 공유할 수 있는 기법 제공 가능
- 모듈 레벨의 공유 => 사용자가 문제를 보는 관점과 부합 + 그 결과 사용자가 자신이 원하는 대로 공유 명시 가능
이러한 요구들을 가장 쉽게 충족시키는 수단 => 세그먼테이션(segmentation)
물리적 구성
- 빠르고 느린 메모리들의 계층 간의 정보 흐름(주기억장치 <-> 보조기억장치)
=> 프로그래머 개인에게 전가하면 안되는 이유
- 오버레이 사용해야 함
- 메모리를 고려한 모듈 구성을 프로그래머가 해야 함
- 컴파일러가 오버레이 지원해도 인력 낭비
- 멀티프로그래밍 환경에서 프로그램 작성 시에 프로그래머는 사용가능한 공간의 양과 위치를 모름
=> 시스템이 메모리의 두 계층 사이의 정보의 흐름에 대한 책임을 가져야 함
오버레이(overlay)
컴퓨터의 메인 메모리 기억 장치보다 큰 프로그램을 실행할 수 있게끔하는 방법
메모리의 같은 영역을 차지하는 다양한 모듈들 중에서 프로그램에서 필요한 모듈만 골라 메모리에 적재하는 방식