Virtual Memory

  • (메인 메모리 크기) < (프로세스 크기)를 위해 나왔다.
  • 필요한 부분만 메모리에 올림으로써 메인 메모리에 올라가는 프로세스의 크기를 줄인다.

  • 페이징 과정을 걸쳐 필요한 페이지만 메모리에 적재 "요구 페이징(Demand Paging)"

 

Demand Paging

  • 프로세스의 이미지를 backing store에 저장(swap device)

  • valid bit를 페이지 테이블에 추가(1 - memory에 적재 중, 0 - memory에 없음)
  • valid bit가 0인데 해당 페이지를 부르면 Page Fault 발생

  • pure demand paging : 처음부터 모든 페이지를 적재시키지 않고 CPU가 요구할 때 valid를 바꾸어 페이지를 적재
  • prepaging : 우선 필요할 것 같은 페이지를 적재시키고 필요할 때 다른 페이지를 적재

 

Page Replacement

FIFO

  • First-In First-Out
  • 메모리에 먼저 올라온 페이지를 먼저 내보낸다.
  • victim page의 대상은 가장 먼저 메모리에 올라온 페이지
  • 처음에 프로세스가 실행 될 때 최초 초기화를 시키는 역할만 진행
  • 프레임의 수가 많을수록 page fault가 감소 (Belady's Anomaly)

 

OPT

  • Optimal
  • 가장 사용하지 않을 페이지를 가장 우선적으로 내보낸다.
  • 미래를 알 수 없기 때문에 실질적으로 수행하기 어렵다.

 

LRU

  • Least-Recently-Used
  • 최근에 사용하지 않은 페이지를 가장 먼저 내보낸다.
  • 과거를 보고 판단, 실질적으로 사용 가능!

  • Global 교체 : 메모리상의 모든 프로세스 페이지에 대해 교체
  • Local 교체 : 메모리상의 자기 프로세스 페이지에서만 교체

'Computer Science > Operating System' 카테고리의 다른 글

[개념] File System 1  (0) 2021.08.12
[개념] Storage Management  (0) 2021.08.12
[개념] Memory Management 4(Segmentation)  (0) 2021.08.12
[개념] Memory Management 3(Paging)  (0) 2021.08.12
[개념] Memory Management 2  (0) 2021.08.12

Segmentation

  • 프로세스를 물리적인 단위인 페이지 말고 논리적 내용 단위인 세그먼트로 자르자!
  • segment의 크기는 다 다를 수 있음.(code(main함수, 사용자 함수,...), data(array, structure,..), stack)
  • 하위 변위 비트(n bit)를 제외한 나머지 상위 비트가 segment number가 된다.
  • segment의 크기는 가변적, 동적 메모리 할당이 필요하다. → 외부 단편화 발생 가능

 

Segmentation + Paging

 

  • 프로세스를 세그먼트 단위로 자르고 이를 다시 일정 간격인 페이지 단위로 자른다.
  • 외부 단편화는 없앴지만 두 가지 테이블을 거쳐야 해서 속도가 조금 떨어진다.

Paging

  • 최초 적합과 최적 적합(1/3정도 메모리 낭비) → Compaction(메모리 계산 부담) → Paging
  • 프로세스를 일정 크기인 페이지로 잘라 메모리에 적재하는 방식
  • hole과 프로세스를 모두 특정 페이지 단위로 잘라서 관리
  • 프로세스를 나눈 페이지 마다 relocation register를 만들어 놓으면 CPU는 마치 프로세스가 연속된 메모리 공간에서 동작하고 있다고 생각...

  • MMU ⇒ page table
  • CPU가 내는 주소 : Logical Address / page table을 거쳐 Physical Address

ex) logical address = 50, page size = 16byte

50 = 110010(2)

하위 4bit(0010)은 n비트

상위 2bit(11)가 '3'의 값이 페이지 번호 → 이에 해당하는 페이지 테이블 숫자를 읽는다. 8이라 가정하면

8 = 1000(2)

8과 n비트를 합쳐 10000010(2)라는 물리적 주소로 간다. 10진수로 바꾸면 130!

 

  • 페이징 과정을 진행하면 내부 단편화가 발생할 수 있다.
  • 프로세스의 크기가 페이지 크기의 배수가 아니라면 마지막 프로세스의 페이지는 한 프레임을 다 채울 수 없다.
  • 하지만 외부 단편화에 비하면 낭비가 적다!

 

Allocate continuous memory(연속 메모리 할당)

  • 부팅 직후에는 os만 적재되어 있으므로 나머지는 빈공간(big single hole)
  • 이를 여러 가지의 프로그램이 동시에 올라와 스케줄링에 의해 CPU나 I/O를 할당받아 여러 위치에 적재된다.(scattered holes)
  • 프로세스가 순서대로 쌓이더라도 작업이 끝나는 순서는 정해져 있지 않고 다시 들어오는 프로세스와도 메모리 공간 차지 사이즈가 달라 메모리 중간중간 빈공간이 생성될 것

scattered holes가 계속 발생하면 hole들이 불연속하게 흩어져 있게 되어 메모리 단편화 현상 발생

(메모리의 빈 공간) < (프로세스 크기) : "외부 단편화"

"외부 단편화를 없애기 위해 연속 메모리 할당 방식을 사용!"

 

최초 적합(First-fit)

메모리를 순차적으로 탐색해 제일 먼저 발견한 적절하게 들어갈 수 있는 곳을 찾아 적재

 

최적 적합(Best-fit)

메모리를 탐색하여 메모리 공간 중에서 제일 적절하게 들어갈 수 있는 곳을 찾아 적재

 

최악적합(Worst-fit)

메모리를 넣는데 크기와 제일 안 맞는 공간(프로세스보다 큰 메모리 공간 중)에 적재

 

  • 속도 : 최초 적합
  • 이용률 : 최적 적합

연속 메모리 할당의 방식을 사용하더라도 외부 단편화로 인한 메모리 낭비가 1/3정도 발생

 

Compaction

 

  • hole들을 한 곳으로 모으겠다는 방식
  • 메모리 계산에 대한 부담이 큼
  • 최적의 알고리즘은 존재하지 않음
  • 이것을 해결한 방법이 "Paging"

 

❗ paging은 다음 3 포스팅에서~ ❗

'Computer Science > Operating System' 카테고리의 다른 글

[개념] Memory Management 4(Segmentation)  (0) 2021.08.12
[개념] Memory Management 3(Paging)  (0) 2021.08.12
[개념] Memory Management 1  (0) 2021.08.12
[개념] Virtualization  (0) 2021.08.12
[개념] IPC  (0) 2021.08.12

목표

  • 프로그래밍을 할 때 쉽게 메모리를 사용할 수 있도록 abstraction을 제공해주는 것
  • minimal overhead로 성능을 최대한 이끌어낼 수 있도록 프로세스들 사이에서 부족한 메모리 자원을 적절히 잘 할당하는 것
  • 프로세스들 사이에서 isolation을 제공(Memory Protection)

 

Step in Creating and Running Code

  • "Source file → (Compile) → Object file → (Linker) → Executable file"
  • "Executable file → (Loader) → memory"
  • Link: HDD에 들어가 있는 다양한 library들을 실행하기 위해 연결해주는 과정
  • 하나의 프로그램이 실행되기 위해서는 code, data, stack이 필요
  • os는 이 실행파일을 메모리의 어디 부분에 올릴지를 결정 "MMU"

 

MMU

  • Memory Management Unit
  • 메모리 공간에서 빈 공간을 찾아 프로그램을 올릴 때 주소를 조절해주는 역할: MMU의 relocation register

 

메모리 낭비 방지

Dynamic Loading(동적 적재)

  • 메모리의 효율성을 위해 필요한 루틴이 호출될 때 해당 루틴을 메모리에 적재하는 방식
  • Loading : 메모리로 데이터(.exe / code, data)를 옮기는 것

 

Dynamic Linking(동적 연결)

  • 여러 프로그램에 공통 사용되는 라이브러리를 관리하는 방법

 

Swapping

  • 메모리에 적재되어 있으나 현재 사용되지 않고 있는 프로세스를 관리하는 역할

 

'Computer Science > Operating System' 카테고리의 다른 글

[개념] Memory Management 3(Paging)  (0) 2021.08.12
[개념] Memory Management 2  (0) 2021.08.12
[개념] Virtualization  (0) 2021.08.12
[개념] IPC  (0) 2021.08.12
[개념] I/O Management  (0) 2021.08.12

+ Recent posts