정처기/프로그래밍언어 활용

6. 기억장치 - 58. 기억장치관리

hyehh 2023. 6. 14. 18:06
728x90
반응형
SMALL
728x90
반응형
SMALL

58. 기억장치관리

1. 배치전략

2. 기억장치 교체전략

3. 가상기억장치 : 페이징, 워킹 셋, 스래싱, 페이지 부재


반입 전략

보조 기억 장치에 보관 중인 프로그램이나 데이터를 주기억 장치로 언제 가져올 것인지 결정하는 전략

요구 반입, 예상 반입

 

보조 기억 장치 (외부장치 SSD, HDD)

보통 프로그램을 외부장치에 설치한다. 윈도우, MS 오피스, 게임등


예 ) 게임을 설치 후 내일 하려고 자고 일어나 컴퓨터를 켰다.

컴퓨터를 켜면 자동으로 게임이 실행되는 게 아니고 클릭해야지 실행이 된다. 이것을 반입이라고 한다.

보조기억장치에 있는 내용이 주기억장치에 적재가 되어야지 실행이 된다.

 

컴퓨터 RAM 크기는 8GB인데 게임이 10GB면 실행되려면 2GB가 모자르다.

그러면 다시 보조기억장치로 돌아오는데,

설치되어 있는 위치가 아닌 다른 위치에 남은 2GB를 넣어놓는다. 이것을 주기억장치의 용량이 부족해서 사용하게 되는 가상기억장치이고, CPU가 애를 실행할 수 있게 된다.

 

CPU가 자주 요청하는 애들은 레지스터에다가 갖다 놓는다. 그다음 사용하는 애들은 주기억장치 RAM에 갖다 놓는다.

그런데 레지스터는 용량이 4Mega라서 많이 적재할 수 없다. 그러면 레지스터에 있는 내용이 계속해서 바뀔 것이다.

여기에 있는 내용이 10G짜리의 게임이 실행되기 위해서 계속해서 바뀌게 된다. 그러면 CPU입장에서 빨리 갖다가 쓸 수 있는 레지스터에 있는 자료를 가져오는 게 좋다. 그러면 만약 레지스터에 A, B, C가 있는데, CPU는 D를 요청했다. 

D는 RAM에 들어있다. 그러면 D를 다시 레지스터에 올려줘야 된다. 이게 바로 반입 전략이다.

실제 실행하기 위해서 실행하는 단계, 그러면 계속해서 레지스터에 있는 내용은 계속해서 바뀐다.

 

근데, CPU가 찾는 자료가 레지스터에 없으면 Page Fault라고 이야기한다.


1. 배치 전략

보조 기억 장치에 보관 중인 프로그램이나 데이터를 주기억 장치 내의 어디로 가져올 것인지 결정하는 전략이다.

최초 적합
(First-Fit)
적재 가능한 공간 중에서 첫 번째 분할 영역에 배치
최적 적합
(Best-Fit)
적재 가능한 공간 중에서 가장 작은 공백이 남는 부분에 배치
최악 적합
(Worst-Fit)
적재 가능한 공간 중에서 가장 큰 공백이 남는 부분에 배치

 

예 )

150 KByte 짜리의 작업 요구 시 First Fit과 Best fit 전략을 각각 적용할 경우, 할당 영역의 연결이 옳은 것은?

 

[현재 주기억장치 영역]

항당영역 운영체제
1 50k
  사용중
2 400k
  사용중
3 200k

2번과 3번 영역에 들어갈 수 있다. 왜? 150k니깐 1번 50k는 못 들어간다.

최초적합 할당 영역

제일 먼저 있는 영역에 들어가는 거니깐 2번 영역인 400k에 들어간다.

최적적합 할당 영역 

400k에 들어가면 250k가 남고,  200k에 들어가면 50k가 남는다. 많이 남으면 비효율적이기 때문에 낭비되는 부분이 제일 적은 들어가기 적합한 3번 200k에 들어간다.

 

아파트라고 치면은 층마다 들어갈 수 있는 인원이 다르다.


2. 기억 장치 교체 전략

주기억 장치의 모든 페이지 프레임이 사용 중일 때 어떤 페이지 프레임을 교체할 것인지 결정하는 전략이다.

OPT
(OPtimal Replacement : 최적의 교체)
● 이후에 가장 오랫동안 사용되지 않을 페이지를 먼저 교체하는 기법이다.
● 실현 가능성이 희박하다. 왜냐하면 사용되지 않을 페이지인데 그걸 어케 아누?
FIFO
(First in First Out)
● 가장 먼저 적재된 페이지를 먼저 교체하는 기법이다.
● 구현이 간단하다
LRU
(Least Recently Used : 가장 덜 최근의 사용)
각 페이지마다 계수기나 스택을 두어 현시점에서 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법이다.
LFU
(Least Frequently Used : 가장 덜 자주 사용)
참조된 횟수가 가장 적은 페이지를 먼저 교체하는 기법이다.
NUR
(Not Used Recently : 사용안한 최근)
각 페이지당 두 개의 하드웨어 비트를 두어서 가장 최근에 사용하지 않은 페이지를 교체하는 기법이다.
SCR
(Second Chance Replacement)
FIFO의 단점을 보완하는 기법으로, 가장 오랫동안 주기억 장치에 상주했던 페이지 중에서 자주 참조되는 페이즈의 교체를 예방한다.

3. 가상 기억 장치(virtual Memory)

주기억 장치의 부족한 용량을 해결하기 위해 보조 기억 장치를 주기억 장치처럼 사용하는 기법이다.

 

가상 기억 장치의 일반적인 구현 방법 2가지

1. 페이징 기법 : 프로그램을 고정된 크기의 일정한 블록으로 나눈다. 예 ) 1mega씩 100개

2. 세그멘테이션(분할) 기법 : 프로그램을 가변적인 크기의 블록으로 나눈다. 예) 1mega, 3mega등 크기에 따라 가변적으로 변함


페이징(Paging) 기법

 

페이지란?

가상 기억 장치에 보관된 프로그램과 주기억 장치의 영역을 동일한 크기로 나눈 것이 페이지이다.

규격이 정해져 있는 종이 A4는 항상 그 크기이다.

 

페이징 기법

나눠진 프로그램을 동일하게 나눠진 주기억 장치의 영역에 적재시켜 실행하는 기법이다.

 

페이징 기법 시 필요한 것

가상 기억 장치에서 주기억 장치로 주소를 조정(매핑) 하기 위해 페이지의 위치 정보를 가진 페이지 맵 테이블이 필요하다.

 

페이지의 크기가 클수록

페이지 맵 테이블의 크기가 작아지고, 단편화(fragmentation)가 증가하고, 디스크 접근 횟수가 감소하며, 전체 입. 출력 시간이 감소한다.

 

페이지의 크기가 작을수록

페이지의 맵 테이블의 크기가 커지고, 단편화가 감소하고, 디스크 접근 횟수가 증가하며, 전체 입. 출력 시간이 증가한다. 

 

즉, 페이지는 적당한 크기로 해야 한다.


세그먼테이션(Segmentation)

가상 기억 장치에 보관된 프로그램을 다양한 크기로 나눈 후, 나눠진 프로그램을 주기억 장치에 적재시켜 실행하는 기법이다.

 

세그먼트(Segment)

큰 프로그램을 보다 작은 프로그램으로 분할해서 하나의 논리적 단위로 묶어서 주기억 장치에 읽어 들일  수 있는 최소 단위이다.


구역성(Locality)

프로세스가 실행되는 동안 일부 페이지만 집중적으로 참조되는 경향을 의미한다.

 

시간 구역성 (Temporal Locality : 속세의 인근)

순환(Looping), 스택(Stack), 부프로그램(Subprogram), 집계(Totaling)등에 사용되는 변수등이 있다.

 

공간 구역성 (Spatial Locality : 공간의 인근 )

프로세스가 어떤 페이지를 참조했다면 이후 가상 주소 공간상 그 페이지와 인접한 페이지들을 참조할 가능성이 높음을 의미한다. 배열 순례(Array Traversal), 프로그램의 순차적 수행 등이 있다.


워킹 셋 (Woeking Set)

운영체제의 가상 기억 장치 관리에서 프로세스가 일정시간 동안 자주 참조하는 페이지들의 집합이다.

CPU가 A는 1,000번 찾고, B는 1,001번 찾고, C는 2번 찾고, D는 1번 찾고, E는 2번 찾는다.

그러 여기서 자주 참조하는 A, B를 아예 세트로 묶는 것이다. 즉, 워킹 셋은 일하고 있는 애들은 세트! 

그러면 교체 전략을 적용할 때 A, B는 아예 배제해서 교체를 안 시킨다. 그러면 다른 애들이 교체됨으로써 자주 쓰는 애들은

보호를 받는다. 이것이 워킹 셋이다. 


스래싱 (Thrashing)

하나의 프로세스가 작업 수행 과정 중에 기억장치 접근 지나치게 많이 하는 것이다.

내가 찾고자 하는 데이터가 너무 작고, 변하는 것이다. 그러다 보면 주기억장치에 삽입, 삭제, 삽입, 삭제하다 보면 필요 없는 것들이 발생하게 된다. 개네를 스래싱 trash이라고 한다.

 

그래서 지나치게 페이지 부재가 발생하여 프로세스 수행에 소요되는 시간보다 페이지 이동에 소요되는 시간이 더 커지는 현상이다.

 

# 페이지 부재 (Page Fault : 페이지 잘못, 약점)

 참조할 페이지가 주기억 장치에 없는 현상이다.


페이지 부재 예제

3개의 페이지를 수용할 수 있는 주기억 장치가 있으며, 초기에는 모두 비어 있다고 가정한다. 다음의 순서로 페이지 참조가 발생할 때, FIFO페이지 교체 알고리즘을 사용할 경우 몇 번의 페이지 결함이 발생하는가?

총 7번의 페이지 부재가 발생한다.


문제 풀이

1. 주기억 장치의 부족한 용량을 해결하기 위해 보조 기억 장치를 주기억 장치처럼 사용하는 기법을 무엇이라고 하는가?

가상 기억 장치 

 

2. 하나의  프로세스가 작업 수행 과정에 수행하는 기억 장치 접근에서 지나치게 페이지 부재가 발생하여 프로세스 수행에 소요되는 시간보다 페이지 이동에 소요되는 시간이 더 커지는 현상을 무엇이라고 하는가?

스래싱(Thrashing)

 

3. 다음의 페이지 참조 열(Page Reference String)에 대해 페이지 교체 기법으로 선입선출 알고리즘을 사용할 경우 페이지 부재 (Page Fault) 횟수는? (단, 할당된 페이지 프레임 수는 3이고, 처음에는 모든 프레임이 비어있다.)

<페이지 참조 열>

7, 0, 1, 2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0

① 13

② 14

③ 15

④ 20

2번

 

 

4. 4개의 페이지를 수용할 수 있는 주기억 장치가 있으며, 초기에는 모두 비어 있다고 가정한다. 다음의 순서로 

페이지 참조가 발생할 때, FIFO 페이지 교체 알고리즘을 사용할 경우 페이지 결함의 발생 횟수는?

페이지 참조 순서 : 1,2,3,1,2,4,5,1

① 6회

② 7회

③ 8회

④ 9회

1번

 

5. 빈 공간의 크기가 20KB, 16KB, 8KB, 40KB 일 때 기억 장치 배치 전략으로 "Best Fit"을 사용하여 17KB의 프로그램을 적재할 경우 내부 단편화의 크기는 얼마인가?

① 3KB

② 23KB

③ 64KB

④ 67KB

1번 


 

 

 

728x90
반응형
LIST