본문 바로가기
정보처리기사

기억장치 관리

by 두두리안 2022. 7. 13.
728x90

목차

1. 기억장치 관리
2. 주기억장치 사용 방식
3. 가상기억장치

1. 기억장치 관리

1-1. 기억장치의 계층구조

* 기억장치는 레지스터(상위), 캐시, 주, 보조(하위) 기억장치 등으로 구분할수 잇다
* 상위 기억장치일수록 접근속도와 처리시간이 빠르지만 용량이적고 비싸다
* 하위 기억장치일수록 접근속도와 처리시간이 느리지만 용량이크고 저렴하다
* 주기억장치는 위치 값을 가지는 데이터들로 구성되어 있으며 주소를 통해 접근한다

1-2. 주기억장치 관리 전략

1. 반입(Fetch)전략
    * 보조기억장치의 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
    * 요구반입: 실행중인 프로그램이 특정 데이터 참조를 요구할때 적재
    * 예상반입: 실행중인 프로그램에 의해 참조될 데이터를 예상하여 적재
2. 배치(Placement)전략
    * 새로 반입되는 데이터를 주기억장치의 어떤 공간에 위치시킬것인지를 결정하는 전략
    * 최초적합: 데이터 배치가 가능한 공간중 첫번째 공간에 배치
    * 최악적합: 데이터 배치가 가능한 공간중 여유공간(단편화)을 가장 크게 남기는 공간배치
3. 교체(Replacement)전략
    * 주기억장치의 모든영역이 이미 사용중인 상태에서 새로운데이터를 배치할때,
    * 이미 사용중인 데이터중 어느영역을 교체하여 사용할것인지를 결정하는 전략
    * FIFO, OPT, LRU, LFU, NUR, SCR

2. 주기억장치 사용 방식

2-1. 주기억장치 할당

1. 주기억장치 할당의 개념
    * 프로그램이나 데이터를 실행하기 위해 주기억장치에 어떻게 할당할것인지에 대한 내용
    * 연속 할당 기법, 분산 할당 기법
2. 연속 할당 기법
    * 데이터를 주기억장치에 연속으로 할당하는 기법
    * 단일분할 할당기법, 다중분할 할당기법
3. 분산 할당 기법
    * 가상 기억장치의 데이터를 특정단위로 나누어 주기억장치 내에 분산하여 할당하는 기법
    * 페이징기법, 세그먼테이션기법

2-2. 단일 분할 할당 기법

1. 단일 분할 할당의 개념
    * 주기억장치를 운영체제영역과 사용자영역으로 나누어 한명의 사용자만 사용자영역을 사용하도록하는 기법
    * 가장 단순한 기법으로 초기의 운영체제에서 많이 사용하던 기법이며 영역을 구분하는 경계레지스터가 사용
2. 오버레이 기법
    * 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
    * 프로그램을 여러개의 조각으로 나눈후 필요한 조각을 차례로 주기억장치에 적재하여 프로그램을 실행
    * 주기억장치의 공간이 부족해지면 적재된 조각중 불필요한 조각을 중첩하여 적재
3. 스와핑 기법
    * 프로그램 전체를 할당하여 사용하다가 필요에 따라 다른 프로그램으로 교체하는 기법
    - Swap In: 보조기억장치에 있는 프로그램이 주기억장치로 이동되는것
    - Swap Out: 주기억장치에 있는 프로그램이 보조기억장치로 이동되는것

2-3. 다중 분할 할당 기법

1. 단편화(Fragmentation)
    * 주기억장치에서 빈번하게 공간이 할당되고 반납됨에 따라 기억공간들이 조각조각 나누어져 사용하지 못하는 공간이 되는것
    * 내부 단편화: 데이터 및 프로그램을 할당하고 남은 공간
    * 외부 단편화: 데이터 및 프로그램의 크기가 커서 할당되지 못하는 공간
2. 단편화 해결 방안
    * 단편화를 해결하기 위해선 조각나있는 공간을 합쳐야 한다
    * 통합(Coalescing): 서로 인접해 있는 공간을 하나로 합치는 과정
    * 압축(Compaction): 서로 떨어져 있는 공간까지 하나로 합치는 과정
3. 고정분할 할당기법(MFT, Static Allocation)
    * 주기억장치의 사용자 영역을 여러개의 고정된 크기로 분할하여 데이터를 할당하는 기법
    * 실행할 프로그램의 크기를 미리 알고 있어야 하고 프로그램 전체가 주기억장치에 위치해야 한다
    * 단편화 발생으로 인해 주기억장치의 공간낭비가 크다
4. 가변분할 할당기법(MVT, Dynamic Allocation)
    * 단편화를 줄이기 위해서, 프로그램을 주기억장치에 적재하면서 필요한 만큼만 영역을 분할하는 기법
    * 주기억장치를 효율적으로 사용할수 있으며, 다중 프로그래밍의 정도를 높일수 있다

3. 가상기억장치

3-1. 가상기억장치의 개요

1. 가상기억장치의 개념
    * 보조기억장치의 일부를 주기억장치처럼 사용하여, 용량이 큰 프로그램을 실행할수 있도록하는 기법
    * 스와핑 기법에서 발전된것으로, 연속할당방식에서 발생할수 있는 단편화를 해결할수 있다
    * 블록의 종류에 따라 페이징 기법과 세그먼테이션 기법으로 나눌수 있다
2. 페이징 기법
    * 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역에 적재하는 기법
3. 세그먼테이션 기법
    * 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈후 주기억장치에 적재하는 기법
    * 각 세그먼트는 고유한 이름과 크기를 가지며 기억공간을 절약할수 있다

3-2. 페이지 교체 알고리즘

1. 페이지 교체의 개념
    * 페이지 프레임이 비어있을때, 차례대로 페이지를 적재한다
    * 페이지 부재가 발생하고 페이지 프레임에 빈 공간이 없을때, 주기억장치에 적재하는 프레임을 교체하는 방식을 결정하는 기법
2. OPT(OPTimal replacement)
    * 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
    * 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
    * 페이지 적중률 = 1 - (페이지 부재 횟수 / 참조횟수)
3. FIFO(First In First Out)
    * 가장 먼저 적재된 페이지를 교체하는 기법
4. LRU(Least Recently Used)
    * 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
    * 각 페이지마다 계수기나 스택을 두어 현 시점에서 가장 오랫동안 사용하지 않은 페이지를 교체
5. LFU(Least Frequently Used)
    * 사용빈도가 가장 적은 페이지를 교체하는 기법
    * 자주 사용되는 페이지는 사용횟수가 많아 교체되지 않고 사용
6. NUR(Not Used Recently)
    * LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법
    * 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는것을 전제로,
    * LRU에서 나타나는 시간적인 오버헤드를 줄일수 있다
7. SCR(Second Chance Replacement)
    * FIFO 기법의 단점을 보완하는 기법
    * 오랫동안 주기억장치에 있던 페이지중 자주 사용되는 페이지의 교체를 방지하기 위한 기법

3-3. 기타관리사항

1. 페이지 크기
    * 페이지 크기가 작을경우, 페이지 단편화가 감소되고 이동시간이 줄어든다
    * 페이지 크기가 클경우, 페이지 단편화가 증가되고 이동시간이 늘어난다
2. Locality(구역성)
    * 프로세스가 실행되는 동안 일부 페이지를 집중적으로 참조하게 되는 성질
    * 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법중의 하나로, 가상기억장치 관리의 이론적 근거
    * 시간 구역성(Temporal Locality): 하나의 페이지를 일정 시간동안 집중적으로 접근하는 현상
    * 공간 구역성(Spatial Locality): 일정한 위치의 페이지에 집중적으로 접근하는 현상
3. 워킹 셋(Working Set)
    * 프로세스가 일정 시간 동안 자주참조하는 페이지들의 집합(Set)
    * 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 워킹셋은 시간에 따라 변경된다
4. 페이지 부재 빈도(PFF: Page Fault Frequency)
    * 페이지 부재 빈도 방식은 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임의 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식
    * 페이지 부재율을 지속적으로 감시하고 있다가 부재율이 상한선을 넘어가면 좀더 많은페이지 프레임을 할당,
    * 부재율일 하한선을 넘어가면 페이지프레임을 회수하는 방식
5. 프리페이징(Prepaging)
    * 처음의 과도한 페이지 부재를 방지하기 위해 필요가 예상되는 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 기법
    * 적재된 페이지들 중에서 사용되지 않는 페이지가 많을수도 있다
6. 스래싱(thrashing)
    * 프로세스의 처리시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
    * 프로세스 수행과정중 자주 페이지 부재가 발생함으로써 나타나는 현상으로 전체 시스템의 성능이 저하

3-4. 스레싱 현상을 방지하는 방법

* 다중 프로그래밍의 정도를 적정 수준으로 유지
* 페이지 부재 빈도를 조절하여 사용
* 워킹 셋을 유지
* 부족한 자원을 증설하고, 일부 프로세스를 중단
* CPU 성능에 대한 자료의 지속적 관리 및 분석으로 임계치를 예상하여 운영

참고자료 : 이기적 환상콤비 정보처리기사

728x90

'정보처리기사' 카테고리의 다른 글

정보처리기사 요약  (0) 2022.07.13
프로세스  (0) 2022.07.13
운영체제  (0) 2022.07.11
Python 언어  (0) 2022.07.11
Java 언어  (0) 2022.07.10