응용SW기초기술활용
메모리 관리 개념
- 프로그램의 실행이 종료될 때 까지 메로리를 가용한 상태로 유지 및 관리하는 것
- 다수의 프로그램 실행 중 메모리가 꽉 차게 되면 시스템의 속도가 느려지고 멈추는 현상이 발생
- CPU와 지속적으로 데이터를 송수신하는 상황에서 어떤 부분의 메모리가 현재 사용되는지 어떤 순서로 메모리에 입출력되어야 하는지, 메모리 공간이 필요할 경우 어떻게 확보 및 제거 할지에 대한 종합적인 관리
기억장치 계층 구조의 특징
- 기억장치 계층 구조의 상위 장치일 수 록 접근속도와 접근 시간이 빠르지만 기억용량이 적고 고가
- 주기억장치는 각기 자신의 주소를 갖는 워드 또는 바이트들로 구성되어 있으며 주소를 이용하여 액세스 가능
- 보조기억장치의 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스 가능
기억장치 관리 전략
- 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정도니 주기억장치의 공간을 효율적으로 사용하기 위한 것
- 종류
- 반입(Fetch) 전략 : 언제 적재?
- 배치(Placement) 전략 : 어디에 위치?
- 교체(Replacement) 전략 : 어느 영역 교체?
1. Fetch 전략
- 보조기억장치에 보관 중인 프로그램이나 데이터를 언제 주기억 장치로 적재할 것인지를 결정
- Demand Fetch 요구 반입
- 실행 중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재
- Anticipatory Fetch 예상 반입
- 실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재
2. Placement 전략
- 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정
- First Fit 최초 적합
- 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫번째 분할 영역에 배치
- Best Fit 최적 적합
- 프로그램이나 데이터가 들어갈 수 있는 크기의 빈영역 중에서 빈 기억공간을 가장 작게 남기는 분할 영역에 배치
- Worst Fit 최악 적합
- 프로그램이나 데이터가 들어갈 수 있는 크기의 빈영역 중에서 빈 기억공간을 가장 많게 남기는 분할 영역에 배치
3. Replacement 전략
- Swapping 스와핑 기법
- 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고할 때 사용중인 어느 영역을 교체하여 사용할 것인지 결정
- Swap Out
- 주기억장치의 프로그램이 보조기억장치로 이동
- Swap In
- 보조기억장치에서 주기억장치로 이동
- 스와핑 기법은 가상 기억장치의 페이징 기법으로 발전
- FIFO; First In First Out, 선입선출
- OPT; OPTimeal replacement, 최적교체
- LRU; Least Recently Used, 최근 오래 사용 않은 페이지 교체
- LFU; Least Frequently Used, 사용 빈도가 가장 작은 페이지
- NUR; Not Used Recently, 최근 사용 않은 페이지 교체
- SCR; Second Chance Replacement, 2차 기회 교체
주기억장치 할당 기법의 개념
- 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용
주기억장치 할당 기법의 종류
- 연속 할당 기법
- 프로그램을 주기억장치에 연속적으로 할당하는 기법
- 단일 분할 할당 기법
- 운영체제영역과 단일 사용자 영역으로 분할
- 오버레이
- 주기억장치보다 큰 프로그램 실행 기법
- 스와핑
- 주기억장치 프로그램을 보조기억장치 이동
- 다중 분할 할당 기법
- 사용자 영역을 여러 개의 고정된 크기로 분할
- 고정 분할(정적) 할당
- 사용자 영역을 여러 개의 고정된 크기로 분할
- 가변 분할(동적) 할당
- 프로그램의 필요한 크기로 영역 분할, 고정 분할 할당 기법의 영역 내의 단편화 해결
- 분산 할당 기법
- 가상기억장치의 내용을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법
- 페이징 기법
- 세그먼트 기법
가상기억장치의 개념
- VMU; Virtual Memory Unit 보조기억장치의 일부를 주기억장치처럼 사용하는 것
- 주기억장치의 용량 보다 큰 프로그램을 실행하기 위해 사용
- 주기억장칭의 이용률과 다중 프로그래밍의 효율성 제고
- 가상기억장치에 저장된 프로그램을 실행하려면 가상기억장치의 주소를 기억장치의 주소로 바꾸는 주소 변환 작업이 필요
- 블록 단위로 나누어 사용하므로 연속 할당 방식에서 발생할 수 있는 단편화를 해결할 수 있음
- 프로그램을 여러 개의 작은 블록 단위로 나누어서 가상기억장치에 보관해놓고, 프로그램 실행시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리
1. Paging 페이징 기법
- 가상기억장치에 보관되어있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 가상기억장치의 프로그램을 주기억장치의 영역인 페이지 프레임에 적재시켜 실행하는 기법
- 페이지 크기
- 1 ~ 4KB
- 페이지 크기
- 외부 단편화는 발생하지 않으나 내부 단편화 발생
- 내부 단편화
- 사용할 프로그램이 16KB일 때 페이지 크기를 4KB씩 나누면 2KB 단편화 발생
- 내부 단편화
- 주소 변환을 위해서는 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블(Page Map Table)이 필요
- 페이징에서 가상주소는 (p,d)로 표현하며, p는 참조하는 항목이 잇는 가상메모리의 페이지, d는 페이지 안에서 참조하는 항목이 위치한 변위
- 실제 주소 변환은 페이지 프레임 크기가 ps일 때 p`*ps+d
2. Segmentation 세그멘테이션 기법
- 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 방법
- 내부 단편화는 발생하지 않으나 외부 단편화가 발생
- 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며, 이를 위해 기억장치보호키가 필요
- 주소 변환을 위해서는 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블 이 필요
- 세그먼테이션 가상주소는 (s,d)로 표현하며, s는 참조하는 항목이 있는 가상메모리의 세그먼트 번호, d느 세그먼트 s에서 참조하는 항목부터 있는 곳까지의 변위
- 실제 주소 변환은 세그먼트 번호의 주기억장치 시작주소가 s`일 때 s` +d
페이지 교체 알고리즘 개념
- CPU가 액세스한 가상 페이지가 주기억장치에 없는 페이지 부재 Page Fault가 발생했을 때, 가상기억장치의 필요한 페이지를 주기억장치에 적재해야 함
- 주기억장치의 모든 페이지 프레임이 사용 중 이라면 어떤 페이지 프레임을 선택하여 교체할 것인지 결정
페이지 교체 알고리즘 종류
1. FIFO; First In First Out, 선입선출
- 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
- ex) 2개의 프레임을 수용할 수 있는 주기억장치에서 FIFO 알고리즘을 사용할 경우 페이지 결함의 발생횟수는?
페이지 참조 순서 : 1, 2, 1, 3, 2, 4
답 : 4
해설
- 2개의 프레임에는 1, 2 가 들어가면서 결함 발생 합 2회 (1, 2)
- 1은 그대로 (1, 2, 1)
- 가장 오래된 것은 첫 번째 프레임이므로 여기에 3이 들어가면서 결함 발생 3회 (1, 2, 1, 3)
- 2는 그대로 (1, 2, 1, 3, 2)
- 2가 3보다 오래 있었으므로 여기에 4가 들어가면서 결함 발생 4회 (1, 2, 1, 3, 2, 4)
-
2. LRU(Least Recently Used)
- 최근에 가장 오랫동안 사용하지 않은 페이지를 교체
- 각 페이지마다 계수기 counter 나 스택 stack 을 두어 현 시점에서 가장 오랫동안 사용하지 않은 페이지를 교체
- ex) 2개의 프레임을 수용할 수 있는 주기억장치에서 LRU 알고리즘을 사용할 경우 페이지 결함의 발생횟수는?
페이지 참조 순서 : 1, 2, 1, 3, 2, 4
답 : 5
해설
- 2개의 프레임에 1, 2 가 들어가면서 결함 발생 합 2회 (1, 2)
- 1 그대로 (1, 2, 1)
- 1은 최근에 들어왔으므로 3은 두 번째 프레임에 들어가면서 결함 발생 3회 (1, 2, 1, 3)
- 3은 최근에 들어왔으므로 2는 첫 번째 프레임에 들어가면서 결함 발생 4회 (1, 2, 1, 3, 2)
- 2는 최근에 들어왔으므로 4는 두 번 째 프레임에 들어가면서 결함 발생 5회 (1, 2, 1, 3, 2, 4)
-
3. NUR(Not Used Recently)
- 최근에 사용하지 않은 페이지를 교체하는 기법
- 최근에 사용 여부를 확인하기 위해서 각 페이지마다 참조 비트와 변형 비트 2개의 비트를 사용
- Reference Bit : 페이지 호출될 때1, 호출되지 않을 때 0 지정
- Modified Bit : 페이지 내용 변경될 때1, 변경되지 않을 때 0 지정
- 참조비트와 변경비트의 값에 따른 교체될 페이지 순서가 결정됨
- ![NUR]](/images/정보처리기사/0504_11.png)
4. OPT; OPTimal Replacement, 최적 교체
- 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
- 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
5. LFU; Least Frequently Used
- 사용 빈도가 가장 적은 페이지를 교체하는 기법
- 활발하게 사용되는 페이지는 사용 횟수가 많아 교체하지 않고 사용
6. SCR; Second Chance Replacement
- 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하면 FIFO 기법의 단점을 보완하는 기법
가상기억장치의 기타 관리
1. Locality 지역성, 구역성
- 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부페이지만 집중적으로 참조하는 성질
- Temporal Locality 시간 구역성
- 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
- 기억장소
- Loop
- Stack
- Sub
- Routine
- Counting
- Spatial Locality 공간 구역성
- 프로세스 실행시 일정 위치의 페이지를 집중적으로 액세스하는 현상
- 차몾한 페이지의 근처에 있는 페이지를 참조할 가능성이 높음
- 기억장소
- Array
- Traversal
- 순차적 코드의 실행
2. Working Set 워킹 셋
- 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
- 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어듦
- 시간이 지남에 따라 자주 참조하는 페이지의 집합이 변화하기 때문에 워킹 셋도 시간에 따라 변경됨
3. Thrashing 스래싱
- 프로세스의 처리 시간 보다 페이지 교체에 소요되는 시간이 더 많아 지는 현상
- 프로세스들 간의 메모리 경쟁으로 지나치게 페이지 폴트가 발생하여 전체 시스템의 성능이 저하되는 현상
- 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중 자주 페이지 부재가 발생함으로써 나타나는 현상으로, 전체 시스템의 성능이 저하됨
- 스래싱 현상 방지 방법
- 다중 프로그래밍 정도를 적정 수준으로 유지
- 페이지 부재 빈도를 조절하여 사용
- 워킹 셋을 유지
- 부족한 자원을 증설하고, 일부 프로세스를 중단시킴
- CPU 성능에 대한 자료의 지속적인 관리 및 분석으로 임계치를 예상하여 운영