-
메모리는 폰노이만 구조의 컴퓨터에서의 유일한 작업공간이다.
따라서 모든 프로그램은 메모리에 올라와야 작업을 수행할 수 있다.
오늘날의 시분할 시스템에서 모든 응용 프로그램이 메모리에 올라와 실행되어야 하는데,
물리적인 메모리공간의 한계가 있기 때문에 이를 관리하는 것이 매우 어려워졌다.
MMU - Memory Manage Unit
메모리 관리를 담당하는 하드웨어 유닛으로 아래와 같은 작업을 한다.
- 가져오기
프로세스와 데이터를 메모리로 가져옴.
프로세스가 필요로 하는 데이터를 언제 메모리로 가져올 지 결정하는 정책이 있다. - 배치
가져온 프로세스와 데이터를 메모리의 어떤 부분에 올릴지 정책에 따라 결정. - 재배치
꽉 차 있는 메모리에 새로운 프로세스를 가져오기 위해 정책에 따라 프로세스를 내보냄
메모리 주소
- CPU 비트
한 번에 다룰 수 있는 데이터의 최대 크기(Word)로, 32bit CPU는 1word = 32bit이다.
이 CPU 내부의 레지스터 역시 32bit의 크기를 갖고, ALU, 버스의 대역폭 역시 32bit가 된다.
그렇기에 32bit CPU를 사용하면 최대 가용한 메모리의 크기가 4GB로 한정되는 이유가,
2^32B(4GB)크기의 메모리 번지 수를 가리킬 수 있기 때문이다.
- 경계 레지스터
운영체제, 응용 프로그램 모두 같은 물리적인 메모리를 사용하는데,
사용자 영역의 데이터는 운영체제 영역의 데이터를 침범해서는 안 된다.
이를 방지하기 위해 경계 레지스터를 두어 메모리 접근마다 경계 레지스터의 값과 비교한다.
만약, 운영체제 영역을 침범하는 경우 해당 프로세스를 종료하여 운영체제의 자원을 보호한다.
사용자는 메모리에 접근할 때 항상 0부터 시작한다.
이는 사용자의 편의를 위해 운영체제가 주소의 값을 상대주소로 제공하기 때문이다.
절대주소 관점에서는 전혀 다른 주소값에 접근하게 된다.
운영체제는 재배치 레지스터를 두어 상대주소 + 재배치 레지스터 값을 통하여 절대주소를 얻어
사용자가 메모리에 접근할 수 있도록 해준다.
메모리 할당 @단일 프로그래밍 환경
물리적인 메모리보다 큰 프로그램을 메모리에 올리는 방법은 다음과 같다.
- 메모리 오버레이
프로그램에서 필요한 모듈만 메모리에 적재하는 방식으로,
프로그램 전체가 아닌 일부가 메모리에서 동작한다.
따라서 메모리 용량보다 큰 프로그램도 실행이 가능해진다.
- 스왑 (Swap)
보조 저장장치에 메모리에 있던 데이터를 보조로 저장할 수 있는 영역을 할당해서
필요할 때 마다 메모리와 스왑 영역의 데이터를 바꿔가며 사용하는 기술이다.
따라서 사용자는 실제 메모리 크기 + 스왑 영역의 크기를 전체 메모리의 크기로 인식하고 사용할 수 있다.
메모리 할당 @다중 프로그래밍 환경
프로세스가 메모리 영역에 동시에 올라오는데,
메모리 영역을 할당하는 방식에는 가변 분할 방식과 고정 분할 방식이 있다.
- 가변 분할 방식
가변 분할 방식은 프로세스를 연속된 공간에 배치할 수 있기 때문에 조각화가 일어나지 않는다는 장점이 있다.
(세그먼테이션 단위로 관리)
하지만, 프로세스가 비워지면 비어있는 공간을 하나로 합쳐야 하고,
이 과정에서 다른 프로세스의 자리도 옮겨야 하기에 메모리 관리가 매우 복잡해진다는 단점이 있다.
비어있는 공간을 없애지 않는다면, 해당 빈 공간보다 큰 프로세스는 메모리를 할당받지 못하는 문제가 생기는데
이를 외부 단편화 현상이라고 한다.
이를 해결하기 위해선 위에서 언급한 조각 모음을 하거나, 메모리 배치 방식을 신경써야 한다.
메모리 배치 방식에는 다음과 같은 방식이 존재한다.
- 최초 배치
메모리에서 적재 가능한 공간을 0번지부터 순서대로 찾다가 발견하면 배치하는 방식.
배치가 빠르다는 장점이 있음. - 최적 배치
메모리 전체를 탐색하고 가장 빈 공간이 적게 발생하는 공간에 배치하는 방식.
외부 단편화 현상이 적게 발생한다는 장점이 있음. - 최악 배치
메모리 전체를 탐색하고 가장 빈 공간이 많이 발생하는 공간에 배치하는 방식.
프로세스를 배치하고 남은 공간이 커진다는 장점이 있음.
- 고정 분할 방식
반면에 고정 분할 방식은 메모리를 일정한 크기로 나누어 관리하기 때문에 메모리 관리가 비교적 쉽다는 장점이 있다.
(페이징 단위로 관리)
하지만, 프로세스가 조각화되고, 쓸모없는 잉여 공간이 많이 생기기에 메모리 낭비가 발생할 수 있다는 단점이 있다.
메모리 조각보다 적은 양의 프로세스만 할당되는 경우 메모리의 빈 공간이 생기는데 이를 내부 단편화 현상이라고 한다.
- 버디 시스템
가변, 고정 분할 방식의 특징을 적절히 섞은 메모리 관리 기법.
프로세스 크기에 맞게 메모리를 절반으로 자르고 프로세스를 메모리에 배치하는 방식.
프로세스가 종료되면 주변의 빈 조각과 합쳐져 큰 덩어리를 만들게 되어 외부 단편화를 예방한다.
가변 분할 방식처럼 메모리가 프로세스 크기대로 나뉘지만,
고정 분할 방식처럼 하나의 구역에 다른 프로세스가 들어갈 수 없고, 내부 단편화가 발생한다.
(하지만 내부 단편화의 크기가 작다)
또한 비슷한 크기의 조각이 서로 모여, 작은 조각이 통합되어 큰 조각을 만들기 쉽다.
'대학 > 운영체제' 카테고리의 다른 글
가상 메모리 (기초) (2) 2023.06.04 교착 상태 (Deadlock) (0) 2023.06.04 프로세스 동기화 (0) 2023.06.04 CPU 스케줄링 (0) 2023.04.16 프로세스와 스레드 (0) 2023.04.16 - 가져오기