4장. 가상 메모리 관리(1)

    목차
728x90

1. 가상 메모리의 소개

  • 실행하려는 전체 프로그램의 크기가 주기억장치보다 클 때
    - 당장 실행에 필요한 부분만 주기억장치에다가 저장하고, 당장 필요하지 않은 나머지 부분은 보조기억장치에 넣어두고 실행한다.
    - 당장 실행될 부분만 주기억장치에다가 저장한다.


2. 가상기억장치 개념

  • 개념
    - 블록 단위로 나누어 사용하므로 연속 할당 방식에서 발생 할 수 있는 단편화를 해결할 수 있다.
    - 주기억장치의 이용률과 다중프로그래밍의 효율을 높일 수 있다.
    - 실행 시 필요한 블럭들만 비연속적으로 주기억장치에 적재시킨다.
    - 가상 기억장치에 저장된 프로그램을 실행하려면 가상 기억장치의 주소를 주기억장치의 주소로 바꾸는 주소 변환 작업이 필요하다. (동적 주소 변환)
  • 메모리에 프로그램의 일부만 적재 수행시에 장점
    - 중첩을 고려하여 프로그래밍할 필요가 없으므로 프로그래밍에 용이하다.
    - 프로세서의 이용률과 처리율이 향상된다.( 응답시간이나 반환시간은 늦어짐)
    - 수행 중인 프로세스를 활동 영역을 메인 메모리에 유지하면서 필요할 때는 디스크와 메모리 사이에 프로세스 코드와 데이터 저장, 다시 자동으로 전송(스와핑) 과정을 거쳐서 프로세스를 재할당한다, 디스크에 저장된 주소 공간은 캐시로 처리하여 메인 메모리를 효율적으로 사용이 가능하다.
  • 메모리에 프로그램의 일부만 적재를 수행시에 문제점
    - 메모리와 디스크 사이에 이동량을 증가, 스와핑 공간이 필요하다, 페이지 적재와 복귀할 페이징 알고리즘을 결정해야 한다.
    - 요구된 프로세스의 페이지가 없을 때(페이지 부재) 를 처리하는 방안이 필요하다. 
  • 문제점을 해결하는 방법
    - 실행중인 프로세스가 참조하는 주소와 메인 메모리에서 사용하는 물리적 주소를 분리한다.
    - 가상 주소를 물리적 주소를 변환하는 과정 : 매핑( 동적주소변환)
    - 매핑은 가능한 빨리 수행해야 한다. 그렇지 않을 시에는 시스템의 성능이 떨어지고 가상 메모리 사용 효과가 낮아진다.

3. 주소 사상 기법(주소 변환)

프로그램 전체연속으로 적재하는 경우(적재 시간 바인딩)

  • 재배치 과정을 한번 거침
    - 상대 주소(relative address) - 프로그램의 시작 지점을 0번지로 가정하는 주소임
    - 재배치(relocation) - 주기억장치 할당 후 할당 주소(allocation address)에 따라 상대 주소들을 조정하는 작업이다. 
  • 프로그램을 분할하여 그 일부만을 비연속 적재하는 경우(실행 시간 바인딩)
    - 가상메모리에서 사용하는 주소를 가상 주소(virtual address)
    - 주소 사상 함수(address mapping function) => 동적 주소 변환( Dynamic address translation)


4. 블럭 사상을 통한 가상 주소 변환

블럭 사상(block mapping) 개념

  • 블럭 사상(block mapping)
    - 프로그램을 블럭 단위로 분할하고 이렇게 분할된 블럭 단위로 주소 사상 정보를 기록하여 사용하는 기법이다.
  • 블럭 사상 테이블(block map table)
    - 각 블럭이 가상 주소와 이에 대응되는 실제 주소를 저장
    - 시스템에 존재하는 각 프로세스마다 하나씩 존재함
    - 커널 영역에서 관리함


5. 페이징 시스템

페이징 시스템 개요

  • 정의
    - 프로그램을 블럭 단위로 분할할 때 같은 크기의 블럭들로 분할하는 시스템이다.
  • 용어
    - 페이지(page) : 일정한 크기의 블록(block)
    - 페이지 프레임, 페이지 틀 : 페이지 크기와 같은 크기로 분할된다, 페이징 시스템에서의 가상 주소는 순서쌍 v=(p,d)로 표현된다.
    - 주소 변환
  • 특성
    - 프로그램 분할 시 논리적인 구분을 하지 않는다.
    - 단순(Simple)하고 효율적(efficient)이며, 많은 운영체제에서 사용된다.
  • 주소 사상 기법
    - 직접 사상(direct mapping)
    - 연관 사상(associative mapping)
    - 혼합 사상(mixed direct/ associative mapping) 

6. 주소 사상 기법

직접 사상(direct mapping) 기법

  • 블럭 사상 기법과 유사하다.
  • 가정
    - PMT가 주기억장치의 커널 공간 내에 존재한다.
    - PMT의 엔트리 크기 = entrySize
    - 한 페이지의 크기 = pageSize
  • 단점 
    - 주기억장치 접근 횟수가 2배로 증가한다. => 성능저하를 초래한다.
  • 해결법
    - PMT를 캐쉬 기억장치에다가 적재하는 기법 => 보다 빠른 주소 변환을 위하여, 속도가 매우 빠른 고속 캐시 기억장치(high speed cache memory)를 이용하여서 직접 사상의 페이지 사상 테이블을 구현한다.
    - 연관 사상 기법

페이지 부재(page fault)

  • 프로세스가 실행 중 접근하는 페이지가 주기억장치에 적재되어 있지 않는 경우에 발생한다.
  • 프로세스의 계속 진행이 불가능하다.
  • 프로세스의 실행 중에 발생하는 페이지 부재 횟수를 줄이는 기법이 필요하다.

연관 사상(associative mapping) 기법

  • PMT를 연관 기억장치에다가 적재하여 사용하는 기법이다.
  • 저장된 값을 이용하여서 데이터를 접근한다.
  • 직접 사상 기법의 단점이던 오버헤드를 줄이기 위한 기법이다.
  • 직접 사상 기법의 메커니즘과 유사하다.

연관 기억장치(associative memory)

  • 주소의 개념 없이 지정된 내용으로 데이터에 접근할 수 있도록 하드웨어적으로 구현된 기억장치(고가)

연관 사상 기법의 특징

  • PMT를 저장할 연관 기억장치를 설치하는 하드웨어적인 비용이 크다.(고가)

혼합 연관/ 직접 사상(combined direct/ associative mapping) 기법

  • 직접 사상 기법과 연관 사상 기법을 같이 사용한다.
    - 하드웨어적인 비용을 줄이면서 연관 사상 기법의 장점을 취하는 기법이다.
  • 소규머의 연관 기억장치 사용( 당연하다 고가이기 때문에 )

프로그램의 지역성(locality)

  • 프로그램중에서 한 번 접근된 부분은 계속해서 다시 접근될 가능성 많고, 한 번 접근된 부분의 인접부분이 앞으로 접근될 가능성이 많다는 성질

7.세그먼테이션 시스템

세그먼테이션 시스템(segmentation system) 개요

  • 정의
    - 프로그램을 블럭 단위로 분할할 때 논리적인 개념을 가지고 서로 다른 크기의 블럭들로 분할하는 시스템
    - 세그먼트는 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위이다.
  • 특징
    - 주기억장치 영역을 미리 분할 해 둘 수 없다.
    - 세그먼트 공유나 보호가 쉬움
    - 주소 사상 기법이나 주기억장치 관리 기법 등에서 오버헤드가 발생한다.
  • 주소 사상
    - 세그먼테이션 시스템에서의 가상 주소 v=(s,d)
    - s = 세그먼트 번호(segment number)
    - d = 해당 세그먼트 내에서의 변위(displacement) 

8. 페이징/ 세그먼테이션 혼합 기법

  • 두 가상기억장치 관리 기법의 장점을 모두 수용한 방식이다.
  • 하나의 세그먼틀르 정수 배의 페이지로 다시 분할하는 세그먼트/페이징 혼용 기법
  • 분할 
    - 우선 사용자 프로그램을 논리적인 세그먼트 단위로 분할시킨다.
    - 각 세그먼트들을 다시 페이지 단위로 분할시킨다.
  • 적재
    - 분할된 페이지 단위로 주기억장치에 적재
  • 가상 주소 v는 3차원의 요소로 구성: v=(s,p,d)
  • 시스템의 공유
    - 세그먼트의 공유는 서로 다른 프로세스의 세그먼트 사상 테이블의 항목들이 동일 페이지 사상 테이블을 공유한다.
  • 주소 사상 
    페이징/ 세그먼 테이션 혼합기법에서의 가상 주소 v=(s,p,d)
    - s = 세그먼트 번호
    - p = 해당 세그먼트에서의 페이지 번호
    - d = 해당 페이지에서의 변위
     
728x90

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

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