Subject : Memory ManageMent Concept 및 용어해설

Description :

. 참고문헌

 UNIX SYSTEM ARCHITECTURE 
 Prentice-Hall Inc, Prabhat K.Andleigh
                                      

. UNIX system 은 virtual memory system 으로 동작 하기위해 pages
 라는 concept을 사용한다.
 Physical memory는 같은 size의 segments로 나누어진다.
 예를들어 각각 1K Bytes씩 segments 를 pages 라 부르자.
 이같은 mapping과 함께 memory 의 모든 page 는 page number에 
 의해 addressed 되어 질 수 있다.
 어떤 주어진 시간에 시스템에서 많은 수의 processes 가 존재하여
 제한된 숫자의 프로세스 만이 유효한 physical memory에 상주할 수 
 있다면, 나머지는 disk로 swap out 될 것이다.
 프로세스는 full 또는 부분적인 image로 disk로 저장된다.
 AT&T UNIX version 7 부터 System V 에서 소개된 Swapping scheme,
 4.2BSD에서 추가된 demand paging, AT&T UNIX system V 에선
 demand paging과 swapping 의 향상된 조합을 준비하고 있다.

. Physical & Virtual Memory Organization

 physical memory의 addressing과 Organization의 기초적인 concept
 과 연관된 data구조는 memory management scheme에 크게 의존한다.

 1) Physical memory manage를 위한 data구조가 준비해야될 능력

   @ large Physical memory space를 위한 addressing(32M bytes 이상)
   @ Physical memory의 빠른 allocation & deallocation
   @ Large virtual memory( gigabyte range ) 의 사용
   @ 개별적 process memory 만큼의 kernel 의 보호

   UNIX system 은 전형적으로 많은 수의 users 를 지원한다.
   이러한 users 에 의해 요구된 memory 는 일반적으로
   physical memory 보다 크다.
   실행되도록 스케쥴되지 않은 프로세스는 disk 상의 swap device라
   불리는 특별한 장소로 일시적으로 저장된다.
   swap device 는 memory 와 유사하게 다루어지는 디스크 상의
   configurable 파티션 이다.
   process 안에서 실행되는 program은 memory address range에 대한
   위와같은 가정 의 기초에서  compile 되고 linked 된다.

 2) 커널의 task

   @ free physical memory의 빠른 탐지
   @ Allocation & deallocation of physical memory
   @ virtual memory 공간에서 physical memory 로의 mapping 절차
   @ Allocation & deallocation of swap memory(on swap device)
   @ virtual address space에서 swap memory로의 mapping 절차

   어떻게 virtual memory를 physical memory와 swap memory로 
   mapping하고 data 구조는 그것과 연관되어 있는지 알아보자.
   이같은 mapping에서 page table은 중요한 database이다.
   Page table은 virtual memory page를 physical memory pages로
   mapping 에 사용한다.
   Page table은 page table entries로 불리는 data구조의 연속적인
   list를 담고있다.
   Page table은 process 의 region이라 불리는 text,data,stack 
   segment를 위한 virtual memory 공간을 묘사한다.

   UNIX process 는 user code 또는 system call 을 setup 하기위한
   runtime library 로 부터의 code 를 실행하는 동안 user mode에
   있다고 말해진다.
   trap 을 수행하는 동안 user mode 에서 kernel mode 로 바뀐다.
   kernel service routine 를 위한 code 를 kernel code 라 한다.
   process 가 kernel code 로 수행될 때 그것은 보호되어진다.
   user mode 프로세스는 kernel안에서 어떤 code도 직접적으로
   활동할 수 없으며 kernel안의 어떤 data 도 access 할 수 없다.
   kernel 은 user mode process 로 부터 data 를 access할 수 있다.
   이같은 user와 kernel의 구별은 kernel page table의 커널에 대한
   grouping page table과 user mode page tables에서의 user에 대한
   grouping page tables에 의해 다루어진다.
 
 3) Data Structures

   UNIX system 은 전체 physical memory 를 pages라 불리는 동등한
   size의 segment 로 나누는 것에 기초하여 memory 관리를 한다.
   pages의 전형적 size는 구현에 따라 512byte에서 16K bytes의 
   영역에 있다.
   page table entry는 메모리 pages 의 사용법을 명시한다.

   @page table entry의 구성요소

    - page frame number.
    - Age.
    - page modified bit.
    - page protection.

     a. kernel mode readable only
     b. kernel mode writable only
     c. user mode writable
     d. kernel mode writable, user mode readable
     e. user & kernel mode readable only.

    - page valid bit.

   page frame number 는 physical memory page를 고수한다.
   page 가 수정되었는지 여부와 page 보호모드 그리고 그것이
   유효한 page인가를 포함한다.

   프로세스의 virtual address 공간은 text,data,stack, 그리고
   hared memory regions 로 나누어진다.

   @virtual address structure

    - Byte Offset
    - Virtual Page Number
    - Rigion

   page table은 physical address와 virtual address 의 상호관계를
   준비한다.

 4) UNIX System memory Organization

   메모리는 일반적으로 user memory와 system memory로 알려진
   세가지 주요 시스템 구성요소에 대한 memory로 프로세스에 의해
   사용된다.

   @UNIX system memory 의 구성요소

    - Low core component

     .Interrupt vectors
     .Device handlers
     .Physical memory mapping routines.

    - Kernel code

     .Memory management
     .Process management
     .Disk management
     .I/O management
     .Interprocess communication.

    - System data

     .Process table
     .User structure
     .Kernel stacks
     .Buffer pool
     .In-core Inodes

    - In-core processes.

 5) Memory Swapping

   정의

   Swapping system은 전체적인 processes(text,data,stacks,그리고
   process들이 main memory에 있는동안 process를 관리하는데 필요한
   다른 시스템 table들)를 swap in 또는 swap out 한다.
   프로세스는 실행이 준비된 상태로 disk에 존재하며 메인 메모리에
   swap in 되면 우선순위에 의한 schedule을 얻는다.

   memory map allocation

   swap device는 본질적으로 physical memory와 같이 다루어진다.
   swap device에 대한 memory map은 swap map 이라 불린다.
   swap map은 두가지 parameter(map address,map size) 를 가진
   map structure를 갖는다.

   Malloc routines

   swap memory를 allocate하는데 사용하며 Physical memory는 
   process가 re-scheduled 될때만 allocate된다.

   Mfree Routines

   mfree루틴은 swap memory를 free up하고 swap map에 restore한다.

 6) Demand Paging

   정의

   Demand paging 구조는 요구에 따라서 disk로 부터 physical memory
   로 page를 loading하는 것이 필요된다.
   전체적인 process를 swapping하는 대신 실제적으로 필요한 부분
   만을 load 한다.(process의 다른 page를 가져오기위해 page faults
   라는 개념을 사용)
   이것의 이점은 어떤 시간에도 많은 수의 process를 실제적으로 
   swap in 되어질 수 있다는 것이다.

   page faults

   page faults mechanism은 physical memory에 요구되는 page가 
   없을때 일어나며 action은 virtual memory로부터 physical memory로 
   요구되는 page를 읽어들인다.

   page faults activities

    - Adjusting in-core page tables to accept a new page
    - Setup for a page to be read in from disk
    - Sleep until page is loaded
    - Start execution at start of new page when re-scheduled

   Cache memory

   page faults를 회피하기 위해서 CPU에 의해 요구되어지기전에 
   예상되는 page를 memory로 적재하기 위해서 채용되었다.

   Free page pool

   demand page memory 에대한 buffer pool이다.



Revision History

작성일자 : 96.06.27
작성자 : 맹윤호

수정일자 : 
수정자 :