Home 운영체제 - Memory
Post
Cancel

운영체제 - Memory

- 정리의 기반은 학교 강의 노트와 [Operating System Concepts]를 참고하였습니다.

22-1학기 운영체제를 들으면서 중간고사에 대비하면서 정리해놓은 개념들입니다…ㅎ 다른 핵심 내용이나 기본이라고 생각되는 내용들은 제외하고 제가 시험에서 중요하다고 생각하는 것들만 중구난방으로 정리되어있습니다.


Virtual Memory(가상 메모리)

물리 메모리 크기보다 더 큰 프로세스를 수행하기 위해 만듦

목적

  1. Transparency : 이 메모리를 내가(프로세스) 혼자 쓰는 것 같은 착각을 하도록, 프로그래밍을 위해 다른 프로그램을 실행하지 않은 것처럼 생각하도록.
  2. Effieciency : 단편화 최소화, 하드웨어 도움
  3. Protection : 프로세스 실행을 독립적으로 하기 위해
  • 각각의 프로세스는 각각의 가상 주소 공간이 있음
  • Address translation은 run time에 실행
  • 프로그램이 자신에게 필요한 메모리 공간만 할당 받도록 도와줌

Static Relocation

  • software 기반
  • os가 프로그램을 메모리 주소에 맞게 재작성하여 메모리에 옮김
  • 장점 : 하드웨어 지원이 필요 없다
  • 단점 : Protection 없음, 주소 공간 이동 불가(메모리 주소에 맞게 프로그램을 재작성하기 때문에)

Dynamic Relocation

  • hardware 기반
  • MMU가 주소 변환
  • Protection 가능
  • 활용 기술
    1. Fixed partitions
    2. Variable partitions
    3. Segmentation
    4. Paging

1. Fixed Partitions

fixed

  • Physical Memory가 똑같은 크기로 나뉜다. = partitions
  • Partition의 수 = degree of 멀티 프로그래밍
  • base register(하드웨어) 필요
  • Physical 주소 = virtual 주소 + base register
  • 장점 : 구현 쉬움, context switch 빠름
  • 단점 : 내부 단편화, partition 크기가 똑같아서 모든 프로그램을 실행할 순 없음

내부 단편화 : partition의 크기가 50MB인데 거기에 적재된 프로세스가 40MB이면, parition이 10MB만큼 남는다. 이 공간은 다른 작업이 사용하기에 작기 때문에, 그대로 낭비된다.
외부 단편화 : 나눠진 partition의 크기가 50MB인데, 적재되어야할 프로세스의 크기는 100MB이면, 메모리가 비어있음에도, 적재가 되지 못하는 것


2. Variable Partitions

variable

  • 프로세스에 필요한 만큼만 할당
  • base register + limit register(protection을 위해) 필요
  • 장점 : 구현 쉬움, 저비용, 내부 단편화 x
  • 단점 : 메모리에 순차적으로 인접하여 올라감, 외부 단편화, share 불가능


3. Segmentation

segmentation

  • 프로세스를 logical하게 나눔 -> Physical Memory에 각각의 위치에 올림
  • ex) code, data, stack, heap 등 (각각 독립적)
  • virtual address : <Segment #, offset>
  • 첫 일정 bit는 segment 구분자
  • virtual 주소를 limit register로 다른 segment를 침범하는지 확인
  • limit register를 통과하면 base register에 가상 주소를 더해서 physical memory에서 찾는다
  • 장점
    • 주소 공간 할당의 분리 가능
    • segment 보호 쉬움
    • segment 공유 쉬움
    • 각 segment의 동적 할당 지원
  • 단점
    • 각 segment는 연속 할당된다
    • segment 테이블의 크기도 적지 않게 메모리를 잡아먹는다
    • segment pointer를 공유하려면 segment 번호가 동일해야 한다.


4. Paging

page

  • logical메모리와 physical을 동일한 크기로 자른다.(page)
  • logical메모리에서의 잘라진 부분을 page, physical메모리에서의 잘라진 부분을 frame이라고 부른다. 이 둘의 크기는 같다.
  • 연속 할당 x
  • 페이지의 크기는 2^n
  • page table 필요

    os가 관리하며, 각 페이지마다 PTE(page table entry)가 한개 있다

    PTE 구성요소

    1. Valid bit : PTE가 사용 가능한지 여부 알려줌
    2. Reference bit : page에 access 되었는지 여부 알려줌
    3. Modify bit : page의 dirty 여부 알려줌
    4. Protection bit : 명령 수행 통제
    5. PFN : Frame 결정
      pte
  • virtual 주소 = <virtual page number(VPN), offset>

    ex) 32bit이고, 페이지 크기 4KB일 경우, 0x00000FFF에서 뒤에 3자리 FFF가 offset 2^32 / 2^12(페이지 크기) = 2^20(20이 페이지 개수)

  • physical 주소 = <physical frame number(PFN), offset>
  • 일반적으로, VPN >= PFN
  • 모든 프로세스가 아무 페이지에 접근할 순 없다.
  • access control이 변환 시점에 있어야한다.
  • 가상 메모리 시스템의 오늘날 두가지 기능 : address translation(물리 메모리가 무한하다는 착각), access control
This post is licensed under CC BY 4.0 by the author.