본문 바로가기
소프트웨어 공학

기억장치 관리의 개요와 주기억장치 할당의 기법별 특징

by iwuooh 2021. 12. 15.

기억장치 관리의 개요

기억장치의 관리는 복수의 프로그램을 공통으로 사용하는 기억 영역의 사용을 주기적으로 관리함으로써 사용자의 요구사항에 맞게 기억 공간을 할당하는 것이다. 보조기억장치의 데이터나 프로그램을 주기적으로 주기억장치에 넣는 위치나 시기 등을 정함으로써, 공간이 한정적인 주기억장치의 공간을 효율적으로 활용할 수 있게 된다. 보조기억장치에 담긴 데이터나 프로그램을 언제 주기억장치로 옮길 것인지를 결정하는 전략을 반입(Fetch) 전략이라 한다. 실제로 실행되고 있는 프로그램이 특정한 프로그램의 참조나 데이터를 요구할 때 저장하는 것을 요구 반입이라 하고, 실제 프로그램의 요청이 없어도 미리 예상하여 적재하는 것을 적재 반입이라 한다. 새로 생성되는 데이터나 프로그램을 주기억장치 어느 위치에 저장할 것인지에 대한 전략을 정하는 방법을 배치(Placement) 전략이라 한다. 주기억장치의 빈 공간 중에 가장 첫 번째 영역에 배치하는 것을 최초 적합(First Fit), 가장 적합한 영역에 배치하는 것을 최적 적합(Best Fit), 가장 큰 영역에 배치하는 것을 최악 적합(Worst Fit)이라 한다. 또, 주기억장치의 모든 공간이 사용 중이고 빈 여유 공간이 없을 때 새로운 데이터나 프로그램을 배치할 때는 이미 존재하는 임의의 영역을 교체하여 사용할지를 결정해야 하는데, 이를 교체(Replacement) 전략이라 한다.

주기억장치 할당 기법

데이터나 프로그램을 실행시키기 위해서는 주기억장치의 적절한 공간에 할당하는 것이 필요하다. 이를 할당하는 방법에 따라서 크게 연속 할당 기법과 분산 할당 기법으로 나뉜다. 연속 할당 기법은 연속해서 프로그램들을 주기억장치에 할당하는 것으로, 단일 분할 할당 기법과 다중 분할 할당 기법으로 또 나뉜다. 분산 할당 기법은 프로그램을 정해진 규칙에 의해 특정 단위로 조각조각 내어 분산시켜 주기억장치에 할당한다. 페이징 기법과 세그먼테이션 기법이 있다.

단일 분할 할당 기법

단일 분할 할당 기법은 운영체제 영역과 사용자 영역으로 나뉜 주기억장치를 한 명의 사용자만 해당 사용자 영역을 사용하게 하는 기법으로, 가장 단순하여 초기의 운영체제에서 많이 사용되었다. 프로그램이 사용자 영역만을 사용하여야 하고, 운영체제 영역과 사용자 영역이 확실히 구분되게 하여 운영체제 영역의 보호가 필요하므로 이를 구분하는 경계 레지스터가 사용된다. 프로그램의 크기가 작을 경우에 사용자 영역이 낭비될 수 있다는 단점이 있다. 또, 주기억장치보다 큰 프로그램은 실행될 수 없었는데 이 문제는 다음에 설명할 오버레이(Overlay) 기법을 사용하면서 해결되었다. 오버레이(Overlay) 기법이란 주기억장치보다 큰 프로그램을 실행하기 위해 구현된 기법이다. 보조기억장치에 저장된 하나의 프로그램을 특정 단위로 나눈 후에 필요한 부분만을 주기억장치에 저장하여 프로그램을 실행한다. 프로그램이 실행되는 중에 주기억장치의 공간이 부족하면 주기억장치에 있는 프로그램의 조각 중 불필요한 부분에 프로그램이 실행되는데 필요한 부분을 중첩(Overlay)하여 저장한다. 이 기법을 통해 앞선 단일 분할 할당 기법의 문제점을 해결할 수 있게 되었으나, 이 과정에서 프로그램을 적정 단위로 분할하는 작업은 전문성이 요구되므로 작업자의 프로그램과 시스템의 구조에 대한 이해가 필수적이다. 스와핑(Swapping) 기법은 조각낸 프로그램이 아니라 온전한 하나의 전체 프로그램을 주기억장치에 할당하고 필요할 때마다 다른 프로그램과 교체하는 기법이다. 기존에 주기억장치에 있던 프로그램이 보조기억 장치로 이동하는 것을 Sawap Out라고 하고, 보조기억장치에서 주기억장치로 이동하는 것을 Swap In이라고 한다. 이는 프로그램이 완료될 때까지 언제든지 교체 과정을 여러 번 수행할 수 있다.

다중 분할 할당 기법

다중 분할 할당 기법 중 하나인 정적 할당(Static Allocation) 기법은 프로그램을 주기억장치에 할당하기 전에 운영체제가 미리 주기억장치의 사용자 영역을 같은 크기로 나누고 준비상태에 있는 프로그램을 각 영역에 할당하는 기법이다. 사용자 영역을 모두 같은 크기로 분할하는데 반해, 다양한 크기의 프로그램들이 할당되므로 주기억장치의 낭비가 발생할 수 있고,이를 수행하려면 실행하고자하는 프로그램의 크기를 미리 알고 있어야 한다. 과거에는 사용했으나 현재는 사용되지 않는 기법이다. 동적 할당(Dynamic Allocation) 기법은 정적 할당 기법의 문제점을 해소하기 위해 고안된 것으로 미리 주기억장치의 사용자 영역을 나눠두지 않고 프로그램을 주기억장치에 저장하면서 그때마다 필요한 크기로 분할하는 기법이다. 이렇게 하면 주기억장치의 공간을 효율적으로 사용할 수 있고 정적 할당 기법에 비해 실행하고자 하는 프로그램의 크기에 대한 제약이 적다는 장점이 있다.

댓글