Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/04   »
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
Archives
Today
Total
관리 메뉴

공부해보잠

기억장치 관리 본문

자격증/정보처리

기억장치 관리

heejk 2025. 1. 16. 22:40
기억장치의 관리 전략

정의 : 기억장치 관리 전략은 보조 기억장치(하드디스크, SSD)에 있는 프로그램이나 데이터를 주기억장치(메인 메모리)에 적재하는 시기와 위치를 결정하고, 주기억장치의 공간을 효율적으로 관리하기 위한 방법입니다.

 

종류 :

반입(Fetch)전략

보조기억장치에 있는 데이터를 주기억장치로 가져오는 시기를 결정하는 전략

 

요구반입 (Demand Fetch) :

데이터가 필요할 때만 주기억장치로 가져옴

불필요한 데이터를 가져오지 않아 메모리 낭비를 줄임

 

예제문제

상황 :

보조 기억장치(HDD/SSD)에 파일 A,B,C가 저장되어 있습니다.

주기억장치(RAM)는 비어 있으며, 한 번에 하나의 파일만 저장할 수 있습니다.

프로그램 실행 중에 특정 파일이 필요하면 보조 기억장치에서 주기억장치로 가져옵니다.

 

파일요청 :

사용자가 프로그램을 시행하며 순서대로 파일 A,B,C를 요청합니다.

파일이 요청될 때만 주기억 장치로 가져옵니다.

 

처리과정 :

1단계 : 파일 A가요청됨 → 주기억장치에 파일A를 적재

2단계 : 파일 A의 처리가 끝나면 주기억장치에서 제거

3단계 : 파일 B가 요청됨 → 주기억장치에 파일 B를 적재

4단계 : 파일 B의 처리가 끝나면 주기억장치에서 제거

5단계 : 파일 C가 요청됨 → 주기억장치에 파일 C를 적재

 

결과 :

파일이 요청될 때만 가져오기 때문에 주기억장치의 공간 낭비가 없습니다.

필요하지 않은 파일은 절대 주기억장치로 가져오지 않습니다.

 

요청 주기억장치 상태 처리 결과
A A 파일 A 처리 완료
B B 파일 B 처리 완료
C C 파일 C 처리 완료

※쉽게 설명하면 필요한 재료를 즉석에서 창고에서 가져오는 것을 의미합니다. 필요한 재료만을 사용하여 낭비는 최소화 할 수 있는 장점이 있지만 매번 창고에 다녀오느라 시간이 더 걸릴 수 있다는 단점이 존재합니다.

 

예측반입(Anticipatory Fetch, Pre-fetch) 

프로그램의 실행 흐름을 예측하여 데이터를 미리 주기억장치로 가져옴.

처리속도를 높일 수 있으나, 잘못된 예측 시 메모리 낭비 가능

 

예제문제

상황 :

보조 기억장치(HDD/SSD)에 파일 A,B,C,D,E가 저장되어 있습니다.

주기억장치(RAM)에는 2개의 데이터 블록만 저장할 수 있습니다.

프로그램 실행 중에 특정 파일이 필요하면 보조 기억장치에서 주기억장치로 가져옵니다.

프로그램이 데이터를 요청하기 전에 예측반입을 사용하여 데이터를 주기억장치에 미리 적재할 경우 다음 질문에 답하세요

 

A가 요청되었을 때 주기억장치의 상태는?[A,B]

A가 요청됨 →보조 기억장치에서 A를 주기억장치로 가져옴.

예측 반입으로 B를 주기억장치에 함께 적재

B를 요청하기 전 예측반입을 사용하면 어떤 데이터가 미리 적재되는가?[B,C]

B는 이미 주기억 장치에 있으므로 요청시 빠르게 처리가능

프로그램이 데이터를 순차적으로 요청한다고 예측 →C를 미리 적재

D를 요청한 후 주기억 장치의상태는?[D,E]

D요청 시, 주기억장치의 공간이 부족하면 가장오래된 데이터를 교체(FIFO기준)

A와 B중 A가 먼저 들어왔으므로 A를 제거하고 D를 적재.

예측반입으로 E를 주기억장치에 미리 적재

요청데이터 주기억장치 상태(예측 반입 후)
A [A,B]
B [B,C]
D [D,E]

*쉽게 설명하면 책을 읽는다고 예상할 때 다음에 읽을 책을 예상하고 미리 가져오는 방식입니다. 예상대로 읽으면 유리하지만, 예상이 틀리면 불필요한 책이 자리를 차지할 수 있습니다 


 

배치(Placement)전략

데이터를 주기억장치의 어느 위치에 배치할지 결정하는 전략 

 

최초적합(First Fit) :

첫번째로 발견한 충분한 크기의 공간에 데이터를 배치

검색 시간이 짧음.

 

예제

주기억장치의 가용 블록 크기 :

블록 1 : 10KB, 블록 2 : 20KB, 블록 3 : 15KB, 블록 4 : 30KB

프로세스 크기 : 12KB, 8KB, 25KB(순서대로 P1 ,P2, P3)

P1(12KB) :

블록 1(10KB) :크기 부족 →건너뜀

블록 2(20KB) : 크기가 충분 →블록 2에 배치(남은 크기 :8KB)

P2(8KB):

블록1(10KB) : 크기가 충분 → 블록 1에 배치(남은 크기 : 2KB)

P3(25KB)

블록 1 (2KB), 블록2(8KB), 블록3(15KB) 크기가 부족 → 건너뜀

블록4(30KB) : 크기가 충분 → 블록 4에 배치(남은 크기 : 5KB)

프로세스 크기 배치블록 남은 크기
P1 12KB 블록2 8KB
P2 8KB 블록1 2KB
P3 25KB 블록4 5KB

 

최적적합(Best Fit) :

가장 작은충분한 크기의 공간에 데이터를 배치

외부 단편화를 줄일 수 있으나, 검색 시간이 길어질 수 있음.

 

예제

주기억장치의 가용 블록 크기 :

블록 1 : 10KB, 블록 2 : 20KB, 블록 3 : 15KB, 블록 4 : 30KB

프로세스 크기 : 12KB, 8KB, 25KB(순서대로 P1 ,P2, P3)

P1(12KB) :

가장 작은 충분한 크기 → 블록3(15KB)에 배치(남은 크기:3KB)

P2(8KB) :

가장 작은 충분한 크기 → 블록1(10KB)에 배치(남은 크기:2KB)

P3(25KB) :

가장 작은 충분한 크기 → 블록4(30KB)에 배치(남은크기 : 5KB)

프로세스 크기 배치블록 남은 크기
P1 12KB 블록3 3KB
P2 8KB 블록1 2KB
P3 25KB 블록4 5KB

 

최악적합(Worst Fit) :

가장 큰 공간에 데이터를 배치

큰공간을 유지하며 외부 단편화를 줄이는 데 유리

 

예제

주기억장치의 가용 블록 크기 :

블록 1 : 10KB, 블록 2 : 20KB, 블록 3 : 15KB, 블록 4 : 30KB

프로세스 크기 : 12KB, 8KB, 25KB(순서대로 P1 ,P2, P3)

P1(12KB) : 가장 큰 공간 → 블록4(30KB)에 배치(남은 크기 : 18KB)

P2(8KB) : 가장 큰 공간   블록2(20KB)에 배치(남은 크기 :12KB)

P3(25KB) : 가장 큰 공간 블록3(15KB), 블록4(18KB) 블록4에 배치(남은 크기 : 5KB)

프로세스 크기 배치블록 남은 크기
P1 12KB 블록4 18KB
P2 8KB 블록2 12KB
P3 25KB 블록4 5KB

가장 큰 공간

교체(Replaccement)전략 :

주기억장치가 가득 찬 경우, 어떤 데이터를 제거할지 결정하는 전략

데이터를 제거 해주는 역할을 페이지 교체 알고리즘이라고 합니다.

 

최소 최근 사용(LRU, Least Recently Used) :

가장 오랫동안 사용되지 않은 데이터를 제거

 

예제

프레임 수 :3개

페이지 요청 순서 : A,B,C,A,D,B,E,C,D

 

요청 :A →[A](A적재)

요청 :B →[A,B](B적재)

요청 :C →[A,B,C](C적재)

요청 :A→[A,B,C](A는 이미 있음)

요청 :D→[B,C,D](LRU = A제거, D적재)

요청 :B →[B,C,D](B는 이미 있음)

요청 :E →[C,D,E](LRU=B제거, E적재)

요청 :C→[C,D,E](C는 이미 있음)

요청 :D →[C,D,E](D는 이미 있음)

 

최적 교체(Optimal Replacement) :

앞으로 가장 오랫동안 사용되지 않을 데이터를 제거

이론적으로 최적이지만, 실제 구현은 어렵습니다.

 

예제

프레임 수 :3개

페이지 요청 순서 : A,B,C,A,D,B,E,C,D

 

요청 :A →[A]

요청 :B →[A,B]

요청 :C →[A,B,C]

요청 :A→[A,B,C]

요청 :D→[A,D,C](B는 이후 가장 늦게 사용됨)

요청 :B →[B,D,C](가장 늦게 사용 될 A제거)

요청 :E →[B,E,C](가장늦게 사용될 D를 제거)

요청 :C→[B,E,C]

요청 :D →[D,E,C](가장늦게 사용될 B제거)

 

첫 번째로 들어온 데이터 제거(FIFO, First In First Out):

가장 먼저 들어온 데이터를 제거

구현이 간단하나, 항상 효율적이지는 않음.

벨레이디의 모순 현상이 발생합니다.(페이지 프레임 수가 많으면 페이지 부재의 수가 줄어드는것이 일반적이지만, 페이지 프레임 수를 증가 시켰는데도 불구하페이지 부재가 더 많이 일어나는 현상을 의미

예제

프레임 수 :3개

페이지 요청 순서 : A,B,C,A,D,B,E,C,D

 

요청 :A →[A]

요청 :B →[A,B]

요청 :C →[A,B,C]

요청 :A→[A,B,C]

요청 :D→[B,C,D](가장 먼저들어온 A제거)

요청 :B →[B,C,D]

요청 :E →[C,D,E](가장 먼저 들어온 B제거)

요청 :C→[C,D,E]

요청 :D →[C,D,E]

 

*스케줄링의 FIFO와의 차이

구분 FIFO 스케줄링 FIFO 교체 전략
적용 영역 프로세스 스케줄링 기억장치 관리 (페이지 교체)
기준 프로세스의 도착 시간 페이지의 적재 순서
목적 CPU 사용 순서 관리 메모리 공간 효율적 관리
FCFS (First Come First Serve) 페이지 교체에서 FIFO 사용

 

가상기억장치(Virtual Memory)

정의 : 가상 기억장치는 물리적 주기억장치의 크기와 관계없이 큰 메모리 공간을 사용하는 것처럼 보이게 하는 기술입니다.

실제 물리적 메모리(주기억장치)의 용량을 초과한 데이터를  보조기억장치(디스크)에 임시로 저장하여 프로그램 실행 시 필요한 데이터만 물리적 메모리에 올립니다.

 

특징 :

효율적인 메모리 사용: 모든 프로그램을 메모리에 동시에 적재하지 않아도 실행 가능.

프로그램 실행 가능성 확대: 물리적 메모리가 부족해도 큰 프로그램 실행 가능.

논리 주소와 물리 주소 분리:CPU는 논리 주소(Logical Address)를 사용하고, 운영체제가 이를 물리 주소(Physical Address)로 변환.

 

구현방식

페이지 기반 가상 기억장치 (Paging):

메모리를 고정 크기 블록(페이지)로 나누어 관리.

페이지와 물리적 프레임을 매핑하여 사용.

페이지 부재(Page Fault) 발생 시 필요한 페이지를 디스크에서 메모리로 가져옴.

세그먼트 기반 가상 기억장치 (Segmentation):

메모리를 가변 크기 블록(세그먼트)으로 나누어 관리.

코드, 데이터, 스택 등을 논리적으로 분리하여 효율적.

페이지드 세그먼테이션 (Paged Segmentation):

페이지와 세그먼트를 결합한 방식.

세그먼트를 더 작은 페이지로 나누어 관리.

 

장점 및 단점

 

장점 :

효율적인 메모리 사용:자주 사용하지 않는 데이터는 디스크에 저장, 메모리 공간 절약.

프로세스 격리:각 프로세스가 독립된 주소 공간을 가지므로, 다른 프로세스에 의한 침범 방지.

크기 제약 완화:프로그램 크기가 물리적 메모리보다 커도 실행 가능.

 

단점:

속도 저하:페이지 부재 발생 시 디스크 접근으로 속도가 느려질 수 있음.

오버헤드:페이지 테이블 등 관리 구조로 인해 추가적인 메모리 사용.

복잡성 증가:운영체제에서 주소 변환, 페이지 교체 등 추가적인 작업 필요.

 

예시

페이지 기반 예시:

프로그램이 16KB 크기이고, 메모리가 4KB 크기의 프레임으로 나뉘어 있다고 가정.

프로그램의 첫 번째 4KB는 프레임 1에, 두 번째 4KB는 프레임 5에 저장.

페이지 부재(Page Fault):

CPU가 요청한 페이지가 메모리에 없을 때 발생.

디스크에서 해당 페이지를 가져와 메모리에 적재.

 

운영체제에서의 동작 과정

프로그램이 가상 주소를 생성.

운영체제가 페이지 테이블을 참조하여 물리 주소로 변환.

페이지가 메모리에 없으면 페이지 부재 처리.

 

출처 및 참조:
정보처리 산업기사 필기 시나공(기본서)

728x90

'자격증 > 정보처리' 카테고리의 다른 글

정보 관리  (0) 2025.01.17
디스크 스케줄링  (0) 2025.01.16
병행 프로세스와 상호배제  (0) 2025.01.15
스케줄링  (0) 2025.01.13
프로세스 관리  (0) 2025.01.11