메모리란
: 유일한 작업공간이다.
⇒ 시분할 시스템에서는 메모리에 운영체제를 포함한 여러 프로그램이 올라감.
⇒ 따라서 메모리가 관리가 매우 복잡해지는데 이 메모리관리를 (메모리 관리 시스템 MMS) 가 한다.
⇒ 프로세스 입장과/ 관리자의 입장에서의 편리함이 충돌한다.
가져오기(fetch)
: 프로세스와 데이터를 메모리로 가져오는 작업 ( 사용자의 요청이 없더라도 미리 가져오기도 한다)
배치 작업(placement)
: 메모리의 어떤 부분에 올려놓을지 결정
⇒ 메모리를 어떻게 자를지(분배할지)도 결정
재배치 작업(replacement)
: 메모리가 꽉찼다면 오래된 프로세스를 내보내야 한다.
가져오기 정책(fetch)
: 프로세스가 필요로하는 데이터를 언제 메모리에 가져올지 결정하는 정책
⇒ 필요하다고 예상되는 데이터를 미리가져오는 방법도 있다.(prefetch)
배치 정책(placement)
: 가져온 프로세스를 어떤 위치에 올려놓을지 결정하는 정책(어떻게 자를지도)
재배치 정책(replacement)
: 메모리가 꽉찼을 때 메모리 내에 어떤 프로세스를 내보낼지 결정하는 정책
⇒ 앞으로 사용하지 않을 프로세스를 찾아 내보내는 것 (교체 알고리즘)
: 메모리에 접근할 때는 주소를 이용한다. (절대주소, 상대주소)
32bit CPU
· 표현할 수 있는 메모리 주소의 범위 0~2^32-1, 총 2^32개
· 총 크기: 2^32B == 약 4GB
64bit CPU
· 표현할 수 있는 메모리 주소의 범위 0~2^64-1, 총 2^64개
· 총 크기: 2^64B == 약 16,777,216TB
물리 주소 공간: 하드웨어 입장에서 바라본 메모리의 주소공간
논리 주소 공간: 사용자 입장에서 바라본 메모리의 주소 공간
단순 메모리 구조
· 일괄 처리 시스템에서 사용
· 운영체제 영역과 사용자 영역으로 나누어 관리
· 사용자 프로세스는 운영체제 영역을 피해 메모리에 적재
· 운영체제의 크기에 따라 적재 주소가 달라지는 번거로움
· 이를 개선해 메모리를 최상위에서 운영체제 방향으로 내려오면서 사용
· 경계 레지스터: 사용자 영역이 운영체제 영역으로 침범되지 않게하는 하드웨어적 방법
· 사용자가 작업을 요청할 때마다 경계 레지스터의 값을 벗어나는지 검사, 벗어나는 프로세스를 종료
절대주소: 실제 물리주소를 가리키는 주소, 메모리 관리자 입장에서 바라본 주소
· 물리 주소 공간: 절대 주소를 사용하는 주소 공간
상대주소: 사용자 영역이 시작되는 번지를 0번지로 변경하여 사용, 사용자 프로세스 입장에서 바라본 주소
· 논리 주소 공간: 상대 주소를 사용하는 주소 공간
메모리 오버레이
: 작은 메모리로 큰 프로그램을 실행하는 것
⇒ 오버레이 : 메모리를 적당한 크기로 잘라 가져오는 것
⇒ 어떤 모듈을 가져올지는 프로그램카운터(PC)가 결정
⇒ 프로그램 전체가 아니라 일부만 메모리에 올라와도 실행이 가능
⇒ 이는 메모리를 여러 조각으로 나누어 여러 프로세스에 할당할 수 있다는 의미이다.
스왑
1) 스왑 영역
: 사용중인 메모리를 잠시 보관하는 영역(임시 보관)
메모리가 모자라 쫒겨난 프로세스가 모이는 특별한 공간
스왑인: 메모리로 데이터를 가져오는 작업
스왑아웃: 스왑 영역으로 데이터를 내보내는 작업
사용자는 실제 메모리의 크기와 스왑 영역의 크기를 합쳐 전체 메모리로 인식하고 사용
: 메모리를 어떤 크기로 나눌 것인가는 배치정책에 해당된다.
가변 분할 방식
: 프로세스의 크기에 따라 메모리를 나눈다.
고정 분할 방식
: 프로세스의 크기에 "상관없이" 같은 크기로 나누는 것
가. 가변 분할 방식
(장점)
1. 프로세스를 한덩어리로 처리하여 연속도니 공간에 배치한다.
(단점)
1. 메모리 관리가 복잡하다 ( 부가적인 작업이 필요하기 때문)
나. 고정분할 방식
: 프로세스의 크기에 상관없이 메모리가 같은 크기로 나뉘어진다.
⇒ 한 프로세스가 분산되어 배치
( 비연속 메모리 할당)
(장점)
1. 메모리를 일정한 킈로 나누어 관리가 수월하다.
(단점)
1. 쓸모없는 공간으로 인해 메모리 낭비가 발생할 수 있다.
세그먼트 기법, 이라고도 한다.
메모리에 빈 영역이 있어도 서로 떨어져 있으면(연속이 아니라면) 프러세스를 배정하지 못한다.
⇒ 이로인해 작은 조각들이 발생하는 현상을 "단편화" 혹은 "조각화" 라고 한다.
⇒ 가변분할 방식에서 이러한 빈공간을 "외부 단편화"라고 한다.
가. 최초배치 : 메모리 중, 가장 첫번째로 발견한 공간에 배치
나. 최적 배치 : 메모리 모든 공간을 확인한 후, 적당한 크기 중 (가장 작은 공간)으로 배치
(단점) : 아주 작은 조각을 만들어 냄
다. 최악 배치 : 최적과 반대, 가장 큰 공간에 배치한다.
⇒ 배치 공간이 크기 때문에 남은 공간도 쓸모가 있음
(단점)
: 결국 나중에 조각이 생김
조각 모음 : 작은 조각을 모아 큰 덩어리로 만듬
<순서>
가변 분할 방식보다 공간을 효율적으로 관리
조각 모음을 할 필요가 없어 관리가 수월
고정 분할 방식에서 메모리 조각에 프로세스를 배치하고 공간이 남는 현상
고정 분할 방식에서는 조각 모음을 할 수 없고 다른 프로세스에 배정할 수도 없음
동일하게 분할되는 공간의 크기를 조절해 내부 단편화를 최소화
프로세스의 크기에 맞게 메모리를 1/2로 자르고 프로세스를 메모리에 배치
나뉜 메모리의 각 구역에는 프로세스가 1개만 들어감
프로세스가 종료되면 주변의 빈 조각과 합쳐서 하나의 큰 덩어리를 만듦
가변 분할 방식처럼 메모리가 프로세스 크기대로 나뉨
고정 분할 방식처럼 하나의 구역에 다른 프로세스가 들어갈 수 없음
메모리의 한 구역 내부에 조각이 생겨 내부 단편화 발생
비슷한 크기의 덩어리가 서로 모여있어 통합하기 쉬움