3장. 기억장치 관리(1)

    목차
728x90

1. 기억장치 관리의 개요

  • 프로그램과 데이터는 직접 실행되거나 참조되기 위해서는 주기억장치 내에 있어야 한다.
  • 기억 장치는 프로그램을 실행하는 중요한 작업 공간이다.
  • 주기억장치는 용량이 제한되어 있으며 값이 매우 비싸다는 단점이 있다.
  • 기억 장치 관리의 개념
    - 기억 장치 관리는 프로세스들을 위해서 메모리를 할당하고, 제거 , 보호하는 활동이다.
    - 기억 장치 관리자는 기억 장치와 관련된 여러 정책을 수립하고 정책에 따라 기억 장치를 관리한다.
  • 기억 장치 관리 정책
    - 적재 정책, 배치 정책, 대치 정책 등이 있다.

2. 기억장치 관리의 개요

  • 기억 장치 관리하는 방법을 알려면 기억 장치의 구조를 이해해야 한다.
    - 기억 장치는 주소들의 연속이고 주소는 프로그래머 관점의 논리적 주소와 저장 공간 관점의 물리적인 주소로 볼 수 있다.
  • 기억 장치의 주소 변환
    - 논리적 주소와 물리적 주소의 변환은 기억 장치 관리자(MMU: 메모리관리장치)가 처리
    - 주소 변환 방법은 고정 분할, 동적 분할, 페이징, 세그먼테이션 등.. 변환 방법을 사용한다.
  • 기억 장치의 주소를 바인딩
    - 프로세서는 논리적 주소에 대응하는 물리적 주소를 알아야만 프로세스를 실행함. 고로 두 주소를 연결해 주는 사상( Mapping) 작업 즉 주소 바인딩(binding)이 필요하다. 

3. 기억장치 관리의 주소 바인딩

  • 주소 바인딩( Address Binding)
    - 정의 : 프로세스를 실행하기 위해 논리적 주소(logical address)를 물리적 주소로 사상(mapping)
  • 주소 바인딩 시점
    - 컴파일 시간(Compile time) 바인딩 => 프로세스가 메모리에 적재될 위치를 컴파일 과정에서 알 수 있다면 컴파일러는 물리적인 주소를 생성 가능함 => 프로그래머에 의해 연결함(예시 : 로더의 종류 : 컴파일 즉시 로더)
    - 적재 시간(Load Time) 바인딩
    - 실행 시간(Execution Time) 바인딩

4. 기억장치 구성 정책

조건

- 프로세스의 실행에 필요한 데이터나 스택 등을 포함한 사용자 프로그램 내용 전체가 주기억장치에 연속으로 적재되어 실행되는 환경 일 때

주기억장치 구성 정책

  • 주기억장치를 동시에 할당 받을 수 있는 프로세스의 수
  • 각 프로세스에게 할당되는 주기억장치의 양
    - 다중프로그래밍 정도가 2이상인 경우 동일한 양으로 또는 다른 양으로 할당할 지의 여부
  • 주기억장치 분할 방법
    - 다중프로그래밍 정도가 2이상인 경우 분할 형태를 이후 변형여부를 설정한다.
  • 각 프로세스에게 할당된 분할영역의 교체 가능성
  • 프로세스에게 할당되는 주기억장치 영역의 연속성

5. 기억장치의 관리 기법

주기억장치 관리 기법

기억장치의 관리전략은 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재위치 등을 지정하여 한정된 주기억장치 공간을 효율적으로 사용하기 위한 것으로 인출전략, 배치전략, 교체 전략이 있다.

  • 인출 기법(fetch strategy) (적재할 시기를 결정하며, 언제 할당)
    - 요구 인출(demand fetch) 기법, 예상 인출(anticipatory fetch) 기법
  • 배치 기법(placement strategy) (공간의 위치 결정, 어떤 메모리 블록을 할당)
    - 최초 적합(first-fit), 최적 적합(best-fit) 및 최악 적합(worst-fit)
    - 주기억장치를 할당 받고자 하는 프로세스에게 할당 공간(메모리 블록)의 위치 결정
    - 단편화
  • 교체 기법(replacement strategy) (교체 대상 프로세스 결정, 어떤 프로세스와 교체)
    - 새로 들어온 프로그램이 들어갈 장소를 마련하기 위해서 어떤 프로그램 및 어떤 데이터를 제거할 것인가를 결정 함
  • 할당 기법(allocation strategy) => 주기억장치 할당향을 결정함
    - 새로 생성되는 프로세스에 대한 공간 할당량 결정 

6. 기억장치 할당 기법

  • 주기억장치 할당 기법은 프로그램이나 데이터를 실행시키기 위해서 주기억 장치에 어떻게 할당할 것인지에 대한 내용이며, 연속할당기법과 분산할당기법으로 분류한다.
  • 기억장치 할당량을 결정한다( 고정 크기 또는 필요한 만큼만 할당, 연속 또는 불연속)
  • 연속 할당 기법
    - 프로그램을 주기억장치에 연속으로 할당하는 기법이다.
    - 단일분할 할당기법 : 오버레이(Overlay) 기법, 스와핑(Swapping) 기법
    - 다중분할 할당기법 고정(정적) 분할 할당 기법, 가변(동적) 분할 할당 기법
  • 분산할당기법
    - 프로그램을 특정단위의 조각으로 나누어서 주기억장치 내에 분산하여 할당하는 기법
    - 페이징(paging)기법과 세그멘테이션(segmentation)기법 =>4장

7. 단일 분할 할당 기법(단일프로그래밍)

  • 단일 분할 할당 기법
    - 항상 시스템 내에 하나의 프로세스만 존재함
    - 단일 분할 할당 기법은 주기억장치를 운영체제 영역과 사용자 영역으로 나누어서 한 순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법이다.
    - 주기억장치 관리 기법이 매우 단순해진다. 
  • 단일 분할 할당 기법 환경에서의 문제점(1)
    - 프로그램의 크기가 주기억장치의 가용 공간보다 큰 경우
    해결법 : 1.중첩 구조(Overlay Structure)를 사용한다.  2.컴파일러 및 링커, 로더의 지원이 필요하다. 
  • 오버레이(overlay) 기법
    -
    프로그램이 실행되면서 주기억장치의 공간이 부족하면 주기억장치에 적재된 프로그램의 조각 중 불필요한 조각이 위치한 장소에 새로운 프로그램의 조각을 중첩(overlay)하여 적재한다.
    - 프로그램을 여러 개의 조각으로 분할하는 작업은 프로그래머가 수행해야 하므로 프로그래머는 시스템 구조나 프로그램 구조를 알아야만 한다.

  • 단일 분할 할당 기법 환경에서의 문제점(2)
    - 사용자 프로세스로부터 커널을 보호하는 기법이 필요함
    - 해결법: 경계 레지스터(boundary register)를 사용한다.

 

  • 단일 분할 할당 기법 환경에서의 문제점(3)
    - 시스템 자원의 낭비

    - 시스템 성능의 저하
    - 해결법: 다중 프로그래밍 기법을 사용한다, 동시에 여러개의 프로그램들을 적재되도록 한다.
  • 스와핑(Swapping) 기법
    - 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다가 필요에 따라서 다른 프로그램과 교체하는 기법을 스와핑이라고 한다.

8. 고정 분할 할당 기법
단 한줄 ( 현재는 사용되지 않는다.)

각 분할 영역마다 낭비되는 공간이 발생한다. <= 안쓰는 이유중에 하나다.

  • 단편화(fragmentation)
    - 공간이 낭비되는 현상
  • 내부 단편화(internal fragmentation)
    - 분할 영역 내에서 발생하는 공간의 낭비 현상을 말한다.
  • 외부 단편화(external fragmentation)
    - 공간 용량의 문제로 한 분할 영역 전체가 낭비되는 현상을 말한다.
728x90

'운영체제' 카테고리의 다른 글

4장. 가상 메모리 관리(1)  (0) 2023.04.26
3장. 기억장치 관리(2)  (0) 2023.04.26
2장. 프로세스 관리(3)  (0) 2023.04.26
2장.프로세스 관리(2)  (0) 2023.04.26
2장. 프로세스 관리(1), (어셈블러,링커,로더)  (0) 2023.04.24