OS의 메모리 관리: 연속, 스와핑, 조각화

메모리 관리란 무엇입니까?

메모리 관리 컴퓨터 메모리를 제어하고 조정하는 프로세스로, 시스템의 전체 성능을 최적화하기 위해 실행 중인 다양한 프로그램에 블록이라고 알려진 부분을 할당합니다.

주 메모리를 관리하는 운영체제의 가장 중요한 기능이다. 프로세스가 주 메모리와 실행 디스크 사이를 앞뒤로 이동하는 데 도움이 됩니다. 이는 메모리가 일부 프로세스에 할당되었는지 또는 사용 가능한 상태인지에 관계없이 OS가 모든 메모리 위치를 추적하는 데 도움이 됩니다.

메모리 관리를 사용하는 이유는 무엇입니까?

메모리 관리를 사용하는 이유는 다음과 같습니다.

  • 이를 통해 어떤 프로세서가 언제 메모리를 확보해야 하는지 결정하는 프로세스에 얼마나 많은 메모리를 할당해야 하는지 확인할 수 있습니다.
  • 인벤토리가 해제되거나 할당되지 않을 때마다 추적합니다. 이에 따라 상태가 업데이트됩니다.
  • 애플리케이션 루틴에 공간을 할당합니다.
  • 또한 이러한 응용 프로그램이 서로 간섭하지 않는지 확인하십시오.
  • 서로 다른 프로세스를 보호하는 데 도움이 됩니다.
  • 메모리가 최대한 활용되도록 프로그램을 메모리에 배치합니다.

메모리 관리 기술

다음은 가장 중요한 메모리 관리 기술입니다.

단일 연속 할당

가장 쉬운 메모리 관리 기술입니다. 이 방법에서는 OS용으로 예약된 작은 부분을 제외한 모든 유형의 컴퓨터 메모리를 하나의 응용 프로그램에 사용할 수 있습니다. 예를 들어, MS-DOS 운영 체제는 이러한 방식으로 메모리를 할당합니다. 임베디드 시스템은 또한 단일 애플리케이션에서 실행됩니다.

분할 할당

기본 메모리를 다양한 메모리 파티션으로 나눕니다. 이 파티션은 대부분 인접한 메모리 영역입니다. 모든 파티션은 특정 작업이나 작업에 대한 모든 정보를 저장합니다. 이 방법은 작업이 시작될 때 작업에 파티션을 할당하고 종료될 때 할당되지 않는 것으로 구성됩니다.

페이징된 메모리 관리

이 방법은 컴퓨터의 주 메모리를 페이지 프레임이라고 하는 고정 크기 단위로 나눕니다. 이 하드웨어 메모리 관리 장치는 페이지를 페이지 단위로 할당되어야 하는 프레임으로 페이지를 매핑합니다.

세그먼트 메모리 관리

세그먼트 메모리는 사용자 프로그램에 선형 및 연속 주소 공간을 제공하지 않는 유일한 메모리 관리 방법입니다.

세그먼트는 세그먼트 테이블 형태의 하드웨어 지원이 필요합니다. 여기에는 메모리에 있는 섹션의 물리적 주소, 크기 및 액세스 보호 비트 및 상태와 같은 기타 데이터가 포함됩니다.

스와핑이란?

스와핑은 프로세스를 임시로 주 메모리에서 백업 저장소로 스와핑하는 방법입니다. 나중에 계속 실행하기 위해 메모리로 다시 가져옵니다.

백업 저장소는 모든 사용자의 모든 메모리 이미지 사본을 수용할 수 있을 만큼 충분히 커야 하는 하드 디스크 또는 기타 보조 저장 장치입니다. 또한 이러한 메모리 이미지에 대한 직접 액세스를 제공할 수도 있습니다.

교환

교환의 이점

교환의 주요 이점/장점은 다음과 같습니다.

  • 더 높은 수준의 다중 프로그래밍을 제공합니다.
  • 동적 재배치를 허용합니다. 예를 들어, 실행 시 주소 바인딩이 사용되는 경우 프로세스는 다른 위치에서 교환될 수 있습니다. 그렇지 않으면 컴파일 및 로드 시간 바인딩의 경우 프로세스를 동일한 위치로 이동해야 합니다.
  • 메모리 활용도를 높이는 데 도움이 됩니다.
  • 완료 시 CPU 시간 낭비를 최소화하여 우선순위 기반 스케줄링 방법에 쉽게 적용하여 성능을 향상시킬 수 있습니다.

메모리 할당이란 무엇입니까?

메모리 할당은 컴퓨터 프로그램에 메모리나 공간을 할당하는 프로세스입니다.

여기서 메인 메모리는 두 가지 유형의 파티션으로 구분됩니다.

  1. 메모리 부족 - 운영체제 이 유형의 메모리에 상주합니다.
  2. 높은 메모리– 사용자 프로세스는 높은 메모리에 보관됩니다.

파티션 할당

메모리는 여러 블록이나 파티션으로 나뉩니다. 각 프로세스는 요구 사항에 따라 할당됩니다. 파티션 할당은 내부 조각화를 방지하는 이상적인 방법입니다.

다음은 다양한 파티션 할당 방식입니다.

  • 퍼스트핏: 이 유형에 적합하면 주 메모리 시작 부분부터 첫 번째 충분한 블록인 파티션이 할당됩니다.
  • 최고로 잘 맞는: 사용 가능한 파티션 중 첫 번째로 작은 파티션에 프로세스를 할당합니다.
  • 최악의 적합성: 프로세스를 할당합니다. 주 메모리에서 자유롭게 사용할 수 있는 파티션 중 가장 큰 파티션입니다.
  • 다음 적합: 이는 첫 번째 Fit과 대부분 유사하지만 이 Fit은 마지막 할당 지점에서 첫 번째 충분한 파티션을 검색합니다.

페이징이란 무엇입니까?

페이징은 OS가 보조 저장소의 프로세스를 페이지 형식으로 주 메모리로 검색할 수 있도록 하는 저장소 메커니즘입니다. 페이징 방법에서 주 메모리는 프레임이라고 하는 작은 고정 크기의 물리적 메모리 블록으로 나뉩니다. 메인 메모리를 최대한 활용하고 외부 조각화를 방지하려면 프레임 크기를 페이지 크기와 동일하게 유지해야 합니다. 페이징 데이터에 더 빠르게 접근하기 위해 사용되는 논리적 개념입니다.

조각화란 무엇입니까?

프로세스가 저장되고 메모리에서 제거되어 여유 메모리 공간이 생성되는데, 이 공간은 다른 프로세스에서 사용할 수 없을 정도로 작습니다.

때로는 크기가 작고 메모리 블록이 항상 사용되지 않기 때문에 메모리 블록에 할당할 수 없는 프로세스를 조각화라고 합니다. 이러한 유형의 문제는 사용 가능한 블록이 매우 작아서 요청을 이행할 수 없는 동적 메모리 할당 시스템 중에 발생합니다.

조각화 방법에는 두 가지 유형이 있습니다.

  1. 외부 단편화
  2. 내부 단편화
  • 모든 사용 가능한 메모리를 단일 블록에 함께 배치하도록 메모리 내용을 재배열하면 외부 조각화를 줄일 수 있습니다.
  • 전체 프로세스를 수행하기에 충분한 최소 파티션을 할당하여 내부 조각화를 줄일 수 있습니다.

세분화 란 무엇입니까?

분할 방법은 페이징과 거의 유사하게 작동합니다. 둘 사이의 유일한 차이점은 세그먼트가 가변 길이인 반면, 페이징 방법에서는 페이지가 항상 고정된 크기라는 것입니다.

프로그램 세그먼트에는 프로그램의 주요 기능, 데이터 구조, 유틸리티 기능 등이 포함됩니다. OS는 모든 프로세스에 대한 세그먼트 맵 테이블을 유지 관리합니다. 또한 크기, 세그먼트 번호 및 주 메모리의 메모리 위치와 함께 사용 가능한 메모리 블록 목록도 포함됩니다. 가상 메모리.

동적 로딩이란 무엇입니까?

동적 로딩은 프로그램이 호출할 때까지 로드되지 않는 프로그램 루틴입니다. 모든 루틴은 재배치 가능한 로드 형식으로 디스크에 포함되어야 합니다. 메인 프로그램이 메모리에 로드되어 실행됩니다. 동적 로딩은 또한 더 나은 메모리 공간 활용도를 제공합니다.

동적 연결이란 무엇입니까?

링크는 OS가 다양한 코드 및 데이터 모듈을 수집하여 단일 실행 파일로 병합하는 데 도움이 되는 방법입니다. 파일을 메모리에 로드하고 실행할 수 있습니다. OS는 시스템 수준 라이브러리를 로드 시 라이브러리를 결합하는 프로그램에 연결할 수 있습니다. 동적 연결 방식에서는 실행 시 라이브러리가 연결되므로 프로그램 코드 크기를 작게 유지할 수 있습니다.

정적 하중과 동적 하중의 차이점

정적 로딩 동적 로딩
정적 로딩은 프로그램을 정적으로 로드하려는 경우에 사용됩니다. 그런 다음 컴파일 시 외부 모듈이나 프로그램 종속성이 필요 없이 전체 프로그램이 링크되고 컴파일됩니다. 동적으로 로드되는 프로그램에서는 참조가 제공되며 실행 시 로드가 수행됩니다.
로딩 시간에 전체 프로그램이 메모리에 로드되고 실행이 시작됩니다. 라이브러리의 루틴은 프로그램에서 필요할 때만 메모리에 로드됩니다.

정적 연결과 동적 연결의 차이점

정적 연결과 동적 연결의 주요 차이점은 다음과 같습니다.

정적 연결 동적 연결
정적 링크는 프로그램에 필요한 다른 모든 모듈을 단일 실행 코드로 결합하는 데 사용됩니다. 이는 OS가 런타임 종속성을 방지하는 데 도움이 됩니다. 동적 연결을 사용하면 실제 모듈이나 라이브러리를 프로그램과 연결할 필요가 없습니다. 대신 컴파일 및 링크 시 제공되는 동적 모듈에 대한 참조를 사용하세요.

요약

  • 메모리 관리는 시스템의 전반적인 성능을 최적화하기 위해 실행 중인 다양한 프로그램에 블록이라는 부분을 할당하여 컴퓨터 메모리를 제어하고 조정하는 프로세스입니다.
  • 이를 통해 어떤 프로세서가 언제 메모리를 확보해야 하는지 결정하는 프로세스에 얼마나 많은 메모리를 할당해야 하는지 확인할 수 있습니다.
  • 단일 연속 할당에서는 OS용으로 예약된 작은 부분을 제외한 모든 유형의 컴퓨터 메모리를 하나의 응용 프로그램에 사용할 수 있습니다.
  • 분할 할당 방법은 기본 메모리를 대부분 인접한 메모리 영역인 다양한 메모리 파티션으로 나눕니다.
  • 페이지 메모리 관리 방법은 컴퓨터의 주 메모리를 페이지 프레임이라는 고정 크기 단위로 나눕니다.
  • 세그먼트 메모리는 사용자 프로그램에 선형 및 연속 주소 공간을 제공하지 않는 유일한 메모리 관리 방법입니다.
  • 스와핑은 프로세스를 임시로 주 메모리에서 백업 저장소로 스와핑하는 방법입니다. 나중에 계속 실행하기 위해 메모리로 다시 가져옵니다.
  • 메모리 할당은 컴퓨터 프로그램에 메모리나 공간을 할당하는 프로세스입니다.
  • 페이징은 OS가 보조 저장소의 프로세스를 페이지 형식으로 주 메모리로 검색할 수 있도록 하는 저장소 메커니즘입니다.
  • 조각화란 파일이 여러 조각으로 나뉘어 디스크 주위에 흩어져 있는 디스크 상태를 말합니다.
  • 분할 방법은 페이징과 거의 유사하게 작동합니다. 둘 사이의 유일한 차이점은 세그먼트가 가변 길이인 반면, 페이징 방법에서는 페이지가 항상 고정된 크기라는 것입니다.
  • 동적 로딩은 프로그램이 호출할 때까지 로드되지 않는 프로그램 루틴입니다.
  • 링크는 OS가 다양한 코드 및 데이터 모듈을 수집하여 단일 실행 파일로 병합하는 데 도움이 되는 방법입니다.