메모리 관리(운영 체제)
Memory management (operating systems)운영 체제에서 메모리 관리는 컴퓨터의 기본 메모리를 관리하는 기능이다.[1]: 105–208
메모리 관리 기능은 할당된 메모리 또는 사용 가능한 메모리 위치의 상태를 추적한다.그것은 경쟁하는 프로세스들 사이에 메모리가 어떻게 할당되는지, 어떤 것이 메모리를 얻는지를 결정하고, 언제 그것을 받을 수 있는지, 그리고 얼마나 많은 메모리를 허용하는지 결정한다.메모리를 할당할 때 할당될 메모리 위치를 결정한다.메모리가 비어 있거나 할당되지 않은 시기를 추적하고 상태를 업데이트한다.
이는 운영체제가 할당된 메모리를 관리하는 프로세스인 애플리케이션 메모리 관리와는 구별된다.
메모리 관리 기술
단일연속할당
단일 할당은 가장 간단한 메모리 관리 기법이다.운영체제용으로 예약된 소량을 제외한 모든 컴퓨터의 메모리는 단일 애플리케이션에서 사용할 수 있다.MS-DOS는 이런 방식으로 메모리를 할당하는 시스템의 예다.단일 애플리케이션을 실행하는 내장형 시스템도 이 기법을 사용할 수 있다.
단일 연속 할당을 사용하는 시스템은 사용자 간에 전환하기 위해 메모리의 내용을 스와핑하여 여전히 멀티태스킹할 수 있다.MUSIC 운영체제의 초기 버전은 이 기술을 사용했다.
분할할당
분할할당은 기본 메모리를 여러 개의 메모리 파티션으로 나누는데, 일반적으로 연속적인 메모리 영역이다.각 파티션에는 특정 작업 또는 태스크에 대한 모든 정보가 포함될 수 있다.메모리 관리는 시작할 때 파티션을 작업에 할당하고 작업이 종료될 때 파티션을 할당 해제하는 것으로 구성된다.
분할할당은 일반적으로 작업이 서로 또는 운영 체제에 간섭하는 것을 방지하기 위해 일부 하드웨어 지원을 필요로 한다.IBM System/360은 잠금 및 키 기술을 사용했다.다른 시스템에서는 파티션의 제한과 플래그가 지정된 유효하지 않은 액세스가 포함된 기본 및 경계 레지스터를 사용했다.UNIVAC 1108 스토리지 제한 레지스터에는 지침과 데이터에 대한 별도의 베이스/바운드가 있었다.이 시스템은 메모리 인터리빙을 이용하여 i bank와 d bank라고 불리던 것을 별도의 메모리 모듈에 배치했다.[2]
파티션은 정적, IPL(초기 프로그램 로드) 또는 부팅 시간에 정의되거나 컴퓨터 운영자에 의해 정의되거나 특정 작업에 대해 자동으로 생성되는 동적 파티션일 수 있다.고정된 작업 수(MFT)를 사용한 IBM System/360 Operating System Multiprogramming은 정적 파티셔닝의 예이며, 가변 작업 수(MVT)를 사용한 다중 프로그래밍은 동적(dynamic)의 예다.MVT와 후계자는 동적 파티션을 다른 시스템의 정적 파티션과 구별하기 위해 영역이라는 용어를 사용한다.[3]
파티션은 Burroughs Corporation B5500과 같은 하드웨어 형식 메모리 또는 PDP-10 또는 GE-635와 같은 기본 및 경계 레지스터를 사용하여 다시 연결할 수 있다.다시 연결 가능한 파티션은 연속적인 물리적 메모리의 더 큰 덩어리를 제공하도록 압축될 수 있다.압축은 더 큰 연속적인 자유 영역을 만들기 위해 "사용 중" 메모리 영역을 이동하여 프로세스 종료로 인한 "구멍" 또는 사용되지 않는 메모리 영역을 제거한다.[4]
일부 시스템은 추가 메모리를 확보하기 위해 파티션을 보조 스토리지로 스왑 아웃할 수 있도록 허용한다.IBM의 TSO(Time Sharing Option)의 초기 버전은 사용자들을 시간 공유 파티션으로 교환했다.[5][a]
페이징 메모리 관리
페이징 할당은 컴퓨터의 기본 메모리를 페이지 프레임이라고 하는 고정 크기 단위로, 프로그램의 가상 주소 공간을 같은 크기의 페이지로 나눈다.하드웨어 메모리 관리 장치는 페이지를 프레임에 매핑한다.실제 메모리는 주소 공간이 연속적으로 나타나는 동안 페이지 단위로 할당할 수 있다.
보통 페이징된 메모리 관리를 통해 각 작업은 자신의 주소 공간에서 실행된다.그러나 넓은 주소 공간 내에서 모든 프로세스를 실행하는 IBM i, 모든 작업을 단일 16MiB 가상 주소 공간에서 실행하는 IBM OS/VS(SVS) 등 단일 주소 공간 내에서 모든 프로세스를 실행하는 단일 주소 공간 운영체제가 있다.
페이징 메모리는 시스템이 기본 메모리와 보조 메모리 사이에서 필요에 따라 페이지를 이동할 수 있을 때 요구 페이징될 수 있다.
세그먼트 메모리 관리
세그먼트 메모리는 사용자의 프로그램에 "선형적이고 연속적인 주소 공간"을 제공하지 않는 유일한 메모리 관리 기법이다.[1]: 165 세그먼트는 일반적으로 코드 절차나 데이터 배열과 같은 정보의 논리적 그룹화에 해당하는 메모리 영역이다.세그먼트는 일반적으로 세그먼트의 물리적 주소, 크기 및 액세스 보호 비트 및 상태와 같은 기타 데이터(스왑 인, 스왑 아웃 등)를 포함하는 세그먼트 테이블 형태의 하드웨어 지원이 필요하다.
메모리 참조는 특정 세그먼트에 상대적이며 하드웨어는 해당 세그먼트에 대해 정의되지 않은 메모리를 응용 프로그램이 참조하는 것을 허용하지 않기 때문에 분할은 다른 구성보다 더 나은 액세스 보호를 허용한다.
페이징 여부와 관계없이 분할 구현이 가능하다.페이징 지지대가 없는 세그먼트는 필요한 경우 물리적 단위가 메모리 내부 및 메모리 외부로 스왑된다.페이징 지원을 통해 페이지는 대개 스와핑의 단위로서 분할은 보안의 추가 수준만을 추가한다.
세그먼트 시스템의 주소는 대개 세그먼트 ID와 세그먼트 기준 주소에 상대적인 오프셋으로 구성되며 오프셋 0으로 정의된다.
Intel IA-32 (x86) 아키텍처는 프로세스가 각각 최대 4GiB의 최대 16,383개의 세그먼트를 가질 수 있도록 허용한다.IA-32 세그먼트는 페이징 하드웨어가 제공하는 가상 주소 공간인 컴퓨터의 선형 주소 공간의 세분화다.[6]
Multics 운영 체제는 아마도 분할된 메모리를 구현하는 가장 잘 알려진 시스템일 것이다.멀티픽스 세그먼트는 컴퓨터의 물리적 메모리가 256페이지까지 세분화되어 있으며, 각 페이지는 크기가 1K 36비트 워드로 되어 있어, 최대 세그먼트 크기는 1MiB(9비트 바이트, 멀티픽스에서 사용되는 것)가 된다.공정은 최대 4046개의 세그먼트를 가질 수 있다.[7]
롤아웃/롤린
RO/Rollin(RO/Rollin)은 공유되지 않는 코드와 실행 중인 프로그램의 전체 데이터를 보조 메모리(디스크 또는 드럼)로 교환하여 다른 작업에 대한 주 저장 공간을 확보하는 컴퓨터 운영 체제 메모리 관리 기법이다.프로그램은 "요청 종료 또는 긴 이벤트를 기다릴 때" 롤아웃될 수 있다.[8] 롤아웃/롤린은 사용자의 "생각 시간"[9]이 스왑을 하는 시간에 비해 상대적으로 길었던 시간 공유 시스템에서 일반적으로 사용되었다.
가상 스토리지(페이징 또는 분할)와 달리 롤아웃/롤린은 특별한 메모리 관리 하드웨어를 필요로 하지 않지만 시스템에 메모리 맵이나 기본 및 경계 레지스터와 같은 재배치 하드웨어가 없는 한 프로그램을 원래 메모리 위치로 롤백해야 한다.롤아웃/롤린은 대부분 가상 메모리로 대체되었다.
롤아웃/롤린은 다양한 태스크 수(MVT)를 사용하는 OS/360 멀티프로그래밍의 선택적 기능이었다.
롤아웃/롤린은 원래 지정된 영역을 넘어 특정 작업의 일시적이고 동적인 확장을 허용한다.작업에 더 많은 공간이 필요한 경우 롤아웃/롤린은 작업 사용을 위해 할당되지 않은 저장소를 얻으려고 시도한다.할당되지 않은 저장소가 없을 경우, 다른 작업(즉, 보조 저장소로 이전됨)이 롤아웃되어 첫 번째 작업에서 해당 영역을 사용할 수 있다.첫 번째 작업에서 해제하면 (1) 원본인 경우 할당되지 않은 저장소로 이 추가 저장소를 다시 사용할 수 있고, (2) 주 저장소로 다시 전송할 작업을 받을 수 있다(롤 인).[10]
OS/360에서는 롤아웃/롤린이 배치 작업에만 사용되었으며, 지역을 빌리는 작업 단계가 종료될 때까지 롤링이 발생하지 않는다.
참고 항목
메모들
- ^ TSO 영역으로 알려져 있음
참조
- ^ a b Madnick, Stuart; Donovan, John (1974). Operating Systems. McGraw-Hill Book Company. ISBN 0-07-039455-5.
- ^ Sperry Rand (1970). UNIVAC 1108 Multi-processor System: System Description (PDF). p. 3-3.
- ^ IBM Corporation (1970). IBM System/360 Operating System: Concepts and Facilities (PDF). p. 73.
- ^ Samanta, D. (2004). Classic Data Structures. PHI Learning Pvt. Ltd. p. 94. ISBN 8120318749.
- ^ IBM Corporation (1972). IBM System/360 Operating System Time Sharing Option Guide (PDF). p. 10.(GC28-6698-5)
- ^ Intel Corporation. IA-32 Intel Architecture Software Developer's Manual Volume 1: Basic Architecture.
- ^ Green, Paul. "Multics Virtual Memory – Tutorial and Reflections". Archived from the original on 2001-03-05. Retrieved May 9, 2012.
- ^ Walraet, Bob (2014). Programming, The Impossible Challenge. Elsevier. p. 124. ISBN 978-0-444-87128-2. Retrieved Aug 24, 2018.
- ^ "rollin/rollout" International Symposium on Computer Performance Modeling, Measurement, and Evaluation. Association for Computing Machinery. March 29–31, 1976. p. 137. Retrieved Aug 24, 2018.
- ^ IBM Corporation (June 1970). IBM System/360 Operating System: .Concepts and Facilities (PDF). p. 55. Retrieved Aug 24, 2018.