블로그 이미지
LanSaid

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Recent Post

Recent Comment

Recent Trackback

Archive

2012. 5. 4. 17:30 Study/운영체제
 * 학습 목표
  1) 메모리 관리를 위한 메모리 할당 기법과 관리에 대해 알아봄
  2) 단편화 현상의 원인과 해결 방법을 알아봄
  3) 연속 적재와 분산 적재의 장단점 이해
  4) 세그먼트 메모리 할당 기법을 이해


 * 내용
  1) 메모리 관리 개념
  2) 연속 메모리 할당
  3) 분산 메모리 할당
  4) 세그먼트 메모리 관리 기법
-------------------------------------------------------------------------

1. 메모리 관리 개념
 * 메모리 관리 기법
  1) 메인 메모리(이하 MM)은 OS를 위한 영역과 실행 중인 프로그램을 위한 영역으로 구분
   (1) 메모리 관리
    - 다중 프로그래밍 시스템에서 운영체제에 의해 동적으로 메모리의 사용자 영역을 여러 프로세스가 상주 할 수 있도록 세분화 하는 과정

  2) 반입 정책
   (1) MM에 적재할 다음 프로세스의 반입시기를 결정하는 방법
    - 요구 반입 기법
     ㄱ. OS나 시스템 프로그램, 사용자 프로그램 등의 차모요구에 따라 MM에 적재하는 방법으로 오랫동안 사용됨
    - 예상 반입 기법
     ㄱ. 시스템의 요구를 예측하여 메모리에 미리 적재하는 방법으로 최근 사용되기 시작함
     ㄴ. 요구되는 페이지 외의 다른 페이지도 함께 불러들이며, 탐색시간과 회전 지연시간을 갖는 보조기억 장치의 특성을 참조한 정책
       -> OS의 프리패치 같은 것도 이에 포함 되는가?

  3) 배치 정책
   (1) 디스크에서 반입한 프로세스를 MM 어느 위치에 저장할 것인가를 결정하는 방법
   (2) 최초 적합, 최적 적합, 최악 적합 등  -> 차이점 알아볼 것!!
    - 최초 적합
    - 최적 적합
    - 최악 적합

  4) 대치 정책
   (1) 재배치 기법으로 MM에 있는 어떤 프로세스를 제거할 것인가를 결정
   (2) 시기 및  사용빈도에 따라 결정하는 등 여러 방법이 있다.
     

 * 메모리 해석에 대한 두가지 관점
  1) 물리적 공간과 논리적 공간으로 구분
   (1) 물리적공간(물리적 주소)
    - 실제 데이터나 프로그램이 저장되는 공간
    - 메모리 칩(Chip) 또는 디스크 공간으로 생성, 사용되는 단위는 바이트(Byte)
    - 논리적 주소보다 크거나, 작거나, 같을 수 있음
   (2) 논리적 공간(논리적 주소)
    - 프로그래머가 프로그래밍에 사용하는 공간
    - 목적코드(Object Code)가 저장된 공간과 프로그램에서 사용하는 자료 구조등이 해당
    - 논리적 메모리 크기는 각 시스템에서 정의한 워드(Word)의 길이에 따라 다름

  2) 메모리 매핑(Memory Mapping)
   (1) 논리적 주소와 물리적 주소의 연결
   (2) 메모리 관리 장치(MMU : Memory Management Unit)인 하드웨어에서 실행
   (3) 메모리 관리 방식에 따라 여러 방식으로 구분됨
    -
    - 
    -
    -
    -


 * 메모리 관리 방식
  1) 크게 두가지 방법으로 구분
   (1) 연속 메모리 할당 방식
    - 프로그램(프로세스)를 적재하는 과정에서 연속적으롬 ㅔ모리를 할당
   (2) 분산 메모리 할당 ㅂㅇ식
    - 프로그램을 페이지나 세그먼트 단위로 여러 곳에 적재하여 할당

  2) 초기 컴퓨터 시스템
   (1) 연속 메모리 할당 방식 사용
    - 각 프로그램이 연속된 하나의 블록을 차지하도록 할당
    - 직접 배치, 중첩(오버레이), 분할 기법 등이 해당됨
   (2) 고정 분할 기법
    - 메모리 영역을 여러개의 고정된 크기로 분할하여 프로세스에 제공하며, 메모리의 낭비(내부 단편화)를 유발함 -> 내부 단편화란?
   (3) 동적(가변) 분할 기법
    - 각 프로세스의 크깅 따라 메모리를 분할하는 방식으로, 고정 분할 기법의 문제점을 해결하기 위해 제시됨
    - 다중 프로그래밍 기법에 적용하며, 분산 메모리 할당방식이 제시됨 -> 동적 분할기법이 분산 메모리 할당 방식으로 발전 됨
   (4) 분산 메모리 할당 방식
    - 사용자의 프로세스가 페이지나 세그멘테이션 등의 단위로 보조기억장치에 적재되어 있다가 프로세스의 요구에 의해 여러 영역에 할당되는 방식
    - 페이지, 세그멘테이션 등은 프로세서, 메모리, 보조기억장치 등에서 데이터를 처리하는 규격 혹은 단위이다.


 * 주소 바인딩(Binding)
  1) 논리적 주소를 물리적 주소로 변환하는 과정
   (1) 프로그램에 있어서의 주소를 절대 주소로 바꾸어 MM의 고정된 부분에 적재하는 것

  2) 방식에 따라 다음과 같이 단계별로 구분
   (1) 컴파일(Compile)
    - 프로세스가 메모리 내에 적재될 위치를 컴파일 과정에서 알수 있다면 컴파일러는 물리적 주소(절대주소)를 생성할 수 있음
    - 절대 재배치 : MM의 실제 주소로 변환되는 과정
   (2) 적재시간
    - 정적 재배치
     ㄱ. 프로세스가 메모리 내의 어디에 적재되어야 할 것인가를 컴파일러에 알려주지 않으면 컴파일러는 재배치 가능 상대 주소를 생성함
     ㄴ. 상대 주소는 프로그램의 시작 주소가 0으로 생성 되므로
     ㄷ.
   (4) 수행시간 (오늘날의 OS는 이를 이용
    -
    -


 * 동적 적재(Dynamic Loading)
  1) 메모리 공간 이용의 효율적 운영을 위해 제안됨
   (1) 모든 루틴은 호출될 때까지 메모리 내에 적재되지 않고 재배치 가능한 형태로 디스크에 저장
   (2) 주 프로그램은 메모리에 적재되어 수행됨
   (3) 주 프로그램(호출 루틴)이다른 루틴을 호출할 필요가 있을 때, 호출 루틴은 호출될 루틴이 메모리에 적재되어 있는지 조사
   (4) 적재되어 있지 않다면, 재배치 가능 연결적재기(로더)는 요구된 루틴을 메모리로 적재하기 위해 호출하면서 프로그램의 주소 테이블을 갱신, 변화를 반영함

  2) 장점
   (1) 사용하지 않는 루틴을 적재하지 않음 -> 적은 메모리로도 프로그램 구동 가능
   (2) 코드 양이 많이 필요한 경우 유용함
   (3) 프로그램 전체
   % 이용하기 위해서는 사용자 자신이 프로그램의 설계를 책임져야 함

 * 중첩(Overlay)
  1) 프로세스의 크기가 실제 메모리 크기로 제한되는 문제점을 해결하기 윟 사용됨
   (1) OS 영역과 메모리 공간의 일부 영역에 프로그램(작업) 실행에 반드시 필요한 명령어와 데이터를 저장
   (2) 중첩 구동기(오버레이 드라이버) 영역에는 실행기간 동안 필요한 각종 사용자 코드 등을 적재하여 필요한 시기에 해당 프로그램을 불러들여 실행
   (3) [그림7-4) 중첩 구조
    -
    -


 * 프로세스 교체
  1) 다중 프로그래밍 환경에서 프로세스는 사용자 프로그램이 끝날 때까지 MM에 저장됨

  2) 순환 할당 알고리즘이나 우선순위에 바탕을 둔 프로세서 알고리즘에서 사용하기 적합하지 않음

  3) 프로세서 할당이 끝나고 수행이 완료된 프로세스는 보조기억장치로 이동, 새롭게 시작되는 프로세스를 불러와야 함
   (1) 프로세스가 수행되기 위해 메모리 내에 위치해야 하므로, 일시적으로 보조기억장치로 이동 후 다시 메모리에 적재해야 함.

  4) 롤인(Roll-In), 롤 아웃(Roll-Out)
   (1) 더 높은 우선순위를 가진 프로세스 도착 시 메모리 관리 장치는 우선순위가 높은 프로세스를 수행하기 위해 낮은 우선순위의 프로세스와 스왑(교체) 가능
   (2) 높은 우선순위의 프로세스가 끝나면, 낮은 우선순위의 프로세스는 다시 스왑되어 계속 수행됨.

  5) 스왑 과정
   (1) 주소 바인딩 방법에 따라 다름
   (2) 바인딩이 어셈블 시간이나 적재시간에 이루어지면 프로세스는 다른 위치로 이동 불가
   (3) 수행시간에 바인딩이 이루어지면 교체 가능

  6) 교체 시간
   (1) 속도가 빠른 보조기억장치가 필요하며, 문맥교환시간이 중요함
   (2) 사용자 프로세스가 100KB이고, 보조기억장치는 초당 1MB의 전송률을 가진 디스크를 가정
   (3) 보조기억장치에서 실제 전송은 (100KB/초, 1000KB=1/10초 = 100ms(밀리초)) 와 같은 시간이 소요됨
   (4) 회전 지연 시간을 평균 8ms로 가정했을때 교체시간은 108ms임
   (5) 스왑아웃과 스왑인 모두 이루어져야 하므로 총 교체시간은 216ms
   (6) 효과적인 프로세서 사용을 위해 각 프로세스에 대한 수행시간이 교체시간보다 길어야 함

  7) 전체 전송시간은 직접적으로 교환되는 메모리 양에 비례함
   (1) MM이 1MB이고 100KB의 상주 OS를 가진 컴퓨터가 있다 가정
    - 사용자 프로세스의 최대 크기는 900KB
    - 대부분 사용자 프로세스는 다수의 프로세스를 가지므로 100KB보다 작음
    - 프로세스의 크기가 900KB이면 교체시 908ms 소요, 100KB 크기의 프로세스 일경우 9번에 걸쳐 교환

  8) 프로세스 교체시 교체시간 감소를 위한 방법 필요
   (1) 시스템에 메모리 요쳥에 대한 정보 변화를 유지
    - 동적 메모리 요청을 가진 프로세스는 변화하는 메모리 요구를 OS에 제공할 수 있는 시스템 호출(메모리요청,해제)이 필요함

  9) 실제 사용되는 프로세스를 교체하려면 완전히 유휴상태에 있음을 확인해야 함
   (1) 어떤 입출력에 대한 대기(입출력 완료를 기다리는 상태)는 중요함
   (2) 프로세스가 입출력 동작을 위해 기다리면 메모리를 회수하도록 교체 가능
   (3) 입출력 버퍼가 사용자 메모리를 비동기적으로 엑세스하면 프로세스 교체 불가
 
  10) 두가지 문제의 해결 방법
   (1) 대기입출력을 가진 프로세스는 교체를 수행하지 않고, 입출력 동작이 있는 OS의 버퍼 내에서만 교체를 수행해야 함
   (2)
   % 교체 작업은 초기 시분할 시스템에서 채택되었으며, 현재 페이지 시스템으로 발전함


 *  연속 메모리 할당 개념
  1) 초기 컴퓨터 시스템에 적용한 메모리 관리 기법
   (1) 실행될 모든 프로그램은 필요한 영역만큼 연속적인 메모리 공간을 할당 받아 메모리에 적재
   (2) 한번에 적재 불가능하면 실행이 불가능하므로, 프로그램 수정 및 작은 모듈로 구성해야 함


* 단일 사용자 연속 메모리 할당
 1) 메모리 영역을 사용자를 위한 공간과 OS상주를 위한 공간으로 구분
  (1) OS를 메모리 의 하위나 상위에 두는 것이 가능함
  (2) 메모리를 OS루틴이 들어있는 부분(모니터)과 사용자 프로그램이 들어있는 부분(사용자), 사용되지 않는 부분으로 구분
  (3) 사용자가 모든 MM에 대한 제어권을 가짐
   -
   -
  
 2) 문제점
  (1) 사용자 프로그램의 적재
   - 컴퓨터 주소공간이 0000부터 시작하더라도 사용자 프로그램의 처음 주소는 0000번지가 아니라 기준 레지스터 값 이후가 되므로,
     기준 주소가 변하면 다시 적재 해야함

 3) 해결 방법
  (1)
   -
  (2)
   -
   -
   %
   %

 4) 교체 기법
  (1) MM보다 더 큰 프로그램을 실행할 수 있으므로 제한된 MM를 확장시키는 방법으로 사용됨
  (2) 단일 사용자 연속 메모리 할당 시스템이 프로세서 중심 작업일 경우
   - 프로세서를 집중적으로 사용 가능
   - 입출력 작업이 교대로 발생하는 경우에 프로세서의 유후
  %
   -
  %
   -


*  고정 분할 다중 프로그래밍
  1) MTF(Multiprogramming with a Fixed number of Tasks) 메모리 할당 방법
   (1) IBM OS/360에서 사용 되었으나, 현재는 사용되지 않음
   (2) 고정된 크기의 분할 영역에 프로세스(작업)가 각각 할당됨
   (3) 물리주소는 분할 기준 레지스터(PBR) 값에 논리 주소를 더하여 생성됨
    - 논리주소가 분할 영역 크기보다 크면 오류 발생
    - 분할 영역보다 프로세스의 크기가 대부분 작으므로 내부 단편화가 발생(낭비 발생)
   (4) 분할의 수에 고정 분할 다중 플그래밍의 성능이 제한 받음
    - 분할 영역이 비면
    -

  2) 다중 프로그래밍의 성능 향상을 위해 다음 사항을 결정 해야 함
   (1) 분할 영역의 크기
    -
    -
   (2) 영역의 배정
    - 
    -


 * 고정 분할 다중 프로그래밍에서의 단편화
  1)
   (1)
   (2)
   (3)

  2)
   (1)
   (2)
   (3)

  3)
   (1)
   (2)
   (3)
posted by LanSaid