#3 기억장치 관리

1. 기억장치 관리
- 기억장치 전략
: 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것으로 3가지 전략 有

1. 반입(Fetch) 전략 - 시기
: 보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할지 결정 전략
: 요구반입(Demand Fetch)과 예상반입(Anticipatory Fetch)이 있다

2. 배치(Placement) 전략 - 위치
: 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지 결정 전략
: 최소 적합(First Fit), 최적 적합(Best Fit), 최악 적합(Worst Fit)

3. 교체(Replacement) 전략
: 주기억장치의 모든 분할된 영역이 이미 사용중인 상태에서 새로운 프로그램을 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 페이지 프레임 중에 하나를 선택하는 전략
: FIFO, OPT, LRU, NUR, LFU, MFU


2. 주기억장치 할당 기법

1. 연속 할당 기법
: 단일 분할 할당 기법 - 오버레이, 스와핑
: 다중 분할 할당 기법 - 그정 분할 할당 기법, 동적 분할 할당 기법

단일 분할 할당 기법
: 주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한 순간에는 한 명의 사용자만이 주기억장치의 사용자영역을 사용하는 기법
: 가장 단순한 기법으로 초기 운영체제에 사용하던 기법

오버레이(Overlay) 기법
 - 주 기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
 - 보조기억장치에 저장된 하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 차례로 적재하여 실행

스와핑(Swapping) 기법
 - 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법
 - 주기억장치에 있는 프로그램이 보조기억장치로 이동되는 것을 Swap Out 보조기억장치에 있는 프로그램이 주기억장치로 이동되는 것을 Swap In이라 한다

* 다중 분할 할당 기법

: 고정 분할 할당(MFT) 기법 = 정적 할당 기법
 - 프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법
 - 다중 프로그래밍을 위해 사용되었으나, 현재는 사용되지 않는다.

: 가변 분할 할당(MVT) 기법 = 동적 할당 기법
 - 고정 분할 할당의 단편화를 줄이기 위한 것으로, 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법
 - 주기억장치의 효율을 높일 수 있으며, 다중 프로그래밍의 정도를 높일 수 있다


2. 분산 할당 기법
: 포로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법
: 페이지 기법, 세그먼테이션 기법으로 나눔

1 .페이징 기법 - 프로그램을 동일한 크기로 나눈 단위를 페이지라고 하며, 이 페이지를 블록으로 사용하는 기법
2. 세그먼테이션 기법 - 프로그램을 가변적인 크기로 나눈 단위를 세그먼트라 하며, 이 세크먼트를 블록으로 사용하는 기법


3. 주기억장치 관리 기법의 문제점과 해결방법
- 단편화(Fragmentation)
: 분할된 주기억장치에 프로그램을 할당하고 반납하는 과정을 반복하면서 사용되지 않고 남 는 기억장치의 빈 조각을 의미

1. 내부 단편화 - 분할된 영역이 할당된 프로그램의 크기보다 크기 때문에 프로그램이 할당된 후 사용되지 않고 남아 있는 빈 공간
2. 외부 단편화 - 분할된 영역이 할당될 프로그램의 크기보다 작기 때문에 프로그램이 할당될 수 없어 사용되지 않고 빈 공간으로 남아 있는 공간

- 단편화 해결방법
: 주기억장치를 재사용할 수 있도록 단편화된 공간을 모아서 사용할 수 있는 공간으로 만듬

1. 통합(Coalescing) 기법 : 주기억장치 내에 인접해 있는 단편화된 공간을 하나의 공간으로 통합하는 작업
2. 압축(Compaction) 기법 : 주기억장치 내에 분산되어 있는 단편화된 빈 공간을 결합하여 하나의 큰 가용 공간을 만드는 작업, 압축시 시스템은 모든 일을 일시 정지


4. 가상기억장치 구현 기법

- 가상기억장치(용량 확대 기법)
: 보조기억장치의 일부를 주기억장치처럼 사용하는 기법
: 프로그램을 여러 개의 작은 블록 단위로 나누어서 가상기억장치에 보관해 놓고, 프로그램 실행시 요구되는 블록만 불연속적으로 주기억장치에 할당하여 처리
: 블록의 종류에 따라 페이징 기법, 세그먼테이션 기법으로 나눌 수 있다. (분산할당기법)

- 페이징(Paging) 기법
: 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기(페이지)로 나눈 후 나눠진 프로그램을 주기억장치의 영역(페이지 프레임)에 적재시켜 실행하는 기법
: 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있다.
: 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블이 필요
: 페이지 맵 테이블 사용으로 비용이 증가되고 처리속도가 감소

- 세그먼테이션(Segmentation) 기법
: 가상가억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법
: 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트라고 하여, 각 세그먼트는 고유한 이름과 크기를 갖는다
: 세그먼테이션 기법을 이용하는 이유는 기억공간을 절약하기 위해서이다
: 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블 必
: 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며, 이를 위해 기억장치 보호키가 필요
: 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다
: 실 기억주소 (세그먼트 기준번지 + 변위 값)

- 매핑(mapping) - 사상
: 가상 기억장치에서 주기억장치로 페이지를 옮겨 넣을때 주소를 조정해주는 것

5. 페이지 교체 알고리즘 (페이지 부재 수 구하는 문제)

 


6. 가상기억장치 기타 관리 사항
- 페이지 크기
: 페이징 기법을 사용하면 페이지의 크기에 따라 시스템에 미치는 영향이 다르다

1. 페이지 크기가 작은 경우
: 페이지 단편화가 감소되고, 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어든다
: 불필요한 내용이 주기억장치에 적재될 확률이 적어서 효율적인 워킹 셋을 유지 가능
: Locality에 더 일치할 수 있기 때문에 기억장치 효율이 높아진다
: 페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어진다
: 디스크 접근 횟수가 많아져서 전체적인 입,출력 시간은 늘어난다

2. 페이지 크기가 클 경우
: 페이지 맵 테이블의 크기가 작아지고, 매핑 속도가 빨라진다.
: 디스크 접근횟수가 줄어들어 전체적인 입출력의 효율성이 증가
: 페이지의 단편화가 증가되고, 한 개의 페이지를 주기억장치로 이동하는 시간이 늘어난다
: 프로세스 수행에 불필요한 내용까지도 주기억장치에 적재될 수 있다

- Locality(지역성, 구역성, 국부성)
: 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론
: 스래싱을 방지하기 위한 워키 셋이론이 기반
: 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법 중 하나

1. 시간 구역성(Temporal Locality)
: 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 엑세스하는 현상
: 시간 구역성이 이루어지는 기억장소 - Loop, 스택, 부 프로그램, Counting, 집계 사용변수

2. 공간 구역성(Spatial Locality)
: 프로세스 실행 시 일정 위치의 페이지를 집중적으로 엑세스하는 현상
: 공간 구역성이 이루어지는 기억장소 - 배열 순회, 순차적 코드의 실행, 프로그래머들이 관련된 변수들을 서로 근처에 선언하여 할당되는 기억장소, 같은 영역에 있는 변수를 참조할 때 사용


- 워킹 셋(Working Set)
: 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
: 프로그램의 Locality 특징을 이용
: 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들 수 있다
: 시간이 지남에 따라 자주 참조하는 페이지들이 변화하기 때문에 워킹 셋은 시간에 따라 변경된다.
: 스레싱 방지

- 프리페이징(Prepaging)
: 처음에 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 방법

- 스레싱(Thrashing)
: 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
: 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만 다중 프로그래밍 정도가 더욱 커지면 스레싱이 나타나고, CPU의 이용률은 급격히 감소한다
- 스래싱 현상 방지 방법
: 다중 프로그래밍 정도를 적정 수준으로 유지
: 페이지 부재 빈도를 조절하여 사용
: 워킹 셋을 유지
: 부족한 자원을 증성하고, 일부 프로세스 중단
: CPU 성능에 대한 자료의 지속적 관리 및 순서으로 임계치를 예상하여 운영


7. 디스크 스케줄링
- 디스크 스케줄링(Disk Scheduling)
: 데이터를 엑세스하기 위해 디스크 헤드가 움직이는 경로를 결정하는 기법
: 일반적으로 탐색 시간을 최적화하기 위해 수행

- 디스크 스케줄링 목적
: 처리량 최대화
: 응답시간의 최소화
: 응답 시간 편차의 최소화

- 디스크 스케줄링의 종류
: FCFS, SSTF, SCAN, C-SCAN, N-step SCAN, 에센바르, SLTF 등


* 인터리빙 - 효율적인 주기억장치의 접근을 위하여 기억장소의 연속된 위치를 서로 다른 뱅크로 구성하여 하나의 주소를 통하여 여러 개의 위치에 해당하는 기억장소로 접근하는 방법

댓글 없음:

댓글 쓰기