본문 바로가기

2021 정보처리기사/4과목: 프로그래밍 언어 활용

[정보처리기사 4과목] 응용 SW 기초 기술 활용(2)

728x90
반응형

 

[정보처리기사 4과목 필기 예상 키워드] 목록으로 돌아가기
과목: 4. 프로그래밍 언어 활용
챕터: 3장 응용 SW 기초 기술 활용(2)
키워드: 기억장치 관리
 #기억장치 관리
#가상기억장치 구현 기법
#가상기억장치 기타 관리 사항

 

기억장치 관리

개요

 

이미지 출처: https://wondong2.tistory.com/19

✔ 기억장치는 레지스터, 캐시 기억장치, 주기억장치, 보조기억장치로 분류할 수 있다.

✔ 계층 구조에서 상위의 기억장치일수록 접근 속도와 접근 시간이 빠르지만 기억 용량이 적고 고가이다.

✔ 레지스터, 캐시 기억장치, 주기억장치의 프로그램이나 데이터는 CPU가 직접 액세스 할 수 있으나 보조기억장치에 있는 프로그램이나 데이터는 직접 액세스 할 수 없다. 

✔ 보조기억장치에 있는 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스 될 수 있다.

 

 

 

기억장치 관리전략

반입(Fetch)

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

 

✔ 요구 반입(Demand Fetch): 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재

✔ 예상 반입(Anticipatory Fetch): 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재

 

 

 

배치(Placement)

새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지 결정하는 전략

 

✔ 최초 적합(First Fit): 빈 영역 중 첫 번째 분할 영역에 배치(배치 결정이 가장 빠르다)

✔ 최적 적합(Best Fit): 빈 영역 중 *단편화를 가장 작게 남기는 분할 영역에 배치

✔ 최악 적합(Worst Fit): 빈 영역 중 단편화를 가장 많이 남기는 분할 영역에 배치

*** 단편화 ***

주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우, 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억 공간을 의미(남는 공간)

 

예제)

First Fit, Best Fit, Worst Fit 방법을 사용하려 할 때, 각 방법에 대해 10K의 프로그램이 할당받게 되는 영역은?

영역번호 영역크기 상태
1 5K 공백
2 14K 공백
3 10K 사용중
4 12K 공백
5 16K 공백

1) First Fit: 빈 영역 중 10K 프로그램이 들어갈 수 있는 첫 번째 영역은 2번이다 (10K 적재가 불가능한 공간 1번은 제외)

2) Best Fit: 빈 영역 중 단편화를 가장 작게 남기는 분할 영역은 4번이다

3) Worst Fit: 빈 영역 중 단편화를 가장 크게 남기는 분할 영역은 5번이다 

 

 

 

 

교체(Replacement)

 

교체 전략은 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치할 때, 이미 사용되고 있는 영역 중 어느 영역을 교체하여 사용할 것인지 결정하는 전략이다

 

FIFO, OPT, LRU, LFU, NUR, SCR 등이 있다.

 

 

 

 

 

 

 

주기억장치 할당 기법

개념

✔ 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용

✔ 연속 할당 기법과 분산 할당 기법으로 분류 가능

 

연속 할당(로딩) 기법 프로그램을 주기억장치에 연속으로 할당하는 기법

단일 분할 할당 기법: 오버레이, 스와핑
다중 분할 할당 기법: 고정 분할 할당, 동적 분할 할당
분산 할당(로딩) 기법 프로그램을 특정 단위의 조각으로 나누어 주기억장치에 분산 할당하는 기법

페이징, 세그먼테이션

 

🚩 단일 분할 할당 기법

주기억장치를 운영체제 영역과 사용자 영역으로 나누어

한 순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법

 

✔ 가장 단순한 기법으로 초기 운영체제에서 많이 사용됨

✔ 경계 레지스터(Boundary Register)가 사용됨

✔ 주기억장치보다 큰 사용자 프로그램은 실행할 수 없었으나, *오버레이 기법을 사용하며 해결되었다

 

 

오버레이(Overlay) 기법


-주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법이다

-프로그램을 여러 개의 조각으로 분할하는 작업은 프로그래머가 수행해야 하므로 프로그래머는 필연적으로 시스템 구조나 프로그램 구조를 알아야 한다.

예를 들어 한글.exe을 사용할 때, 한글의 모든 기능을 동시에 사용하는 것이 아닐,

파일을 여는 기능, 저장하는 기능, 색을 지정하는 기능 들이 분할되어 따로 실행될 수 있다.

 

스와핑(Swapping) 기법

하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법

 

✔ Swap Out: 주기억장치에 있는 프로그램이 보조기억장치로 이동되는 것

✔ Swap In: 보조기억장치에 있던 프로그램이 주기억장치로 이동되는 것

 

>> 하나의 프로그램이 완료될 때까지 위 교체 과정을 여러 번 수행할 수 있다.

>> 가상 기억장치의 페이징 기법으로 발전되었다.

 

 

🚩 다중 분할 할당 기법

고정 분할 할당(적적 할당)

프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고,

준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법이다.

 

✔ 프로그램 전체가 주기억장치에 위치해야 한다

✔ 주기억장치의 크기를 고정적으로 분할한다

✔ *내부 단편화 및 *외부 단편화가 발생하여 주기억장치의 낭비가 많다

✔ 실행할 프로그램의 크기를 미리 알고 있어야 한다

✔ 다중 프로그래밍을 위해 사용되었으나 현재는 사용되지 않는다

 

***내부 단편화***

분할된 영역이 할당될 프로그램의 크기보다 크기 때문에
프로그램이 할당된 후
사용되지 않고 남아있는 빈 공간

***외부 단편화***

분할된 영역이 할당된 프로그램의 크기보다 작기 때문에 프로그램이 할당될 수 없어
사용되지 않고 빈 공간으로 남이있는 분할된 전체 영역

 

가변 분할 할당(동적 할당)

고정 분할 할당 기법의 단편화를 줄이기 위한 것으로, 미리 주기억장치를 분할해 놓는 것이 아니라

프로그램을 주기억장치에 적재하며 필요한 만큼의 크기로 영역을 분할하는 기법

 

✔ 주기억장치를 효율적으로 사용할 수 있으며 다중 프로그래밍 정도를 높일 수 있음

✔ 실행될 프로세스 크기에 대한 제약이 적다

✔ 단편화를 상당 부분 해결할 수 있으나 영역과 영역 사이에 단편화가 발생할 수 있음

 

 

 

 

 

✔ 가상기억장치 구현 기법/ 페이지 교체 알고리즘

개요

가상기억장치는 보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 것으로,

주기억장치보다 큰 프로그램을 수행하기 위해 사용한다.

 

✔ 프로그램을 여러 개의 작은 블록 단위로 나누어 가상 기억장치에 보관

✔ 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리

✔ 주기억장치 용량보다 큰 프로그램을 실행하기 위해 사용

✔ *인위적 연속성(Artificial Contiguity)이란 성질이 존재한다

✔ *주소 변환 작업 필요

✔ 연속할당방식에서 발생할 수 있는 단편화 해결 가능(블록단위로 나누어 사용하므로)

✔ 블록 종류에 따라 페이징 기법세그먼테이션 기법으로 나뉨

 

*** 인위적 연속성(Artificial Contiguity) ***

가상주소를 실주소로 바꾸어줄 때 프로세스가 갖는 가상주소 공간 상의 연속적 주소가 실저장장치에서 연속적일 필요가 없다는 성질
*** 주소 변환 작업 ***

가상 기억장치에 있는 프로그램이 주기억장치에 적재되어 실행될 때 논리적 가상주소를 물리적 실기억주소로 변환하는 것

 

 

페이징 기법(Paging)

✔ 프로그램을 일정한 크기로 나눈 단위를 페이지(Page)라고 함

✔ 페이지 크기고 일정하게 나뉜 주기억장치의 단위를 페이지프레임(Page Frame)이라고 함

 

✔ 외부 단편화 X, 내부 단편화 O(발생가능)

✔ 주소 변환을 위해 페이지 맵 테이블(Page Map Table)이 필요

✔ 페이징 기법에서 사용하는 페이지는 크기가 동일함(고정적)

 

 

 

세그먼테이션 기법(Segmentation)

✔ 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트(Segment)라고 한다

✔ 각 세그먼트는 고유한 이름과 가변적 크기를 가짐

 

✔ 외부 단편화 O(발생가능), 내부 단편화 X

✔ 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법이다

✔ 세그먼테이션 기법을 이용하는 궁극적 이유는 기억공간을 절약하기 위함

✔ 주소 변환을 위해 세그먼트 맵 테이블(Segment Map Table)이 필요

✔ 다른 세그먼트에게 할당된 영역을 침범당하지 않도록 기억장치 보호키(Storage Protection Key)가 필요

✔ 세그먼테이션 기법에서 사용하는 세그먼트는 크기가 일정하지 않음(가변적)

 

✔ 가상주소 형식: 세그먼트 번호(s) | 변위값(d)

✔ 세그먼트 맵 테이블: 세그먼트 번호(s) | 세그먼트 크기(L) | 기준번지(b)

✔ 실기억주소는 (세그먼트 기준번지+변위값) 으로 구할 수 있음

 

*ex) 논리주소(2, 176)에서 2는 세그먼트 번호이고 176은 변위값이다.

논리주소(2, 176)에 대한 물리적인 실기억장치의 주소는 세그먼트 번호2의 시작주소 + 변위값을 더한 값이다.

 

 

페이지 교체 알고리즘

페이지 부재(Page Fault)가 발생했을 때 가상기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데,

이때 주기억장치의 모든 페이지 프레임이 사용중이라면 어떤 페이지 프레임을 선택하여 교체할 것인지 결정하는 기법이다. 

교재로만 보면 문제풀이가 어려울 수 있으므로 시나공 제공 강의를 참고한다.

 

✔ OPT, FIFO, LRU, LFU, NUR, SCR 등이 있다

 

OPT(OPTimal replacement, 최적 교체)

✔ 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법

✔ 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘

 

 

 

FIFO(First In First Out)

가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법이다(선입선출)

✔ 이해하기 쉽고 프로그래밍 및 설계가 간단하다.

 

 

 

LRU(Least Recently Used)

✔ LRU는 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법

✔ 각 페이지마다 *계수기(Counter)나 스택(Stack)을 두어 현 시점에서 가장 오랫동안 사용하지 않은, 즉 가장 오래 전에 사용된 페이지를 교체한다. (여기사 사용됨이란 '적재된 페이지가 사용됨'을 의미)

 

***계수기(Counter)***

각 페이지별로 존재하는 논리적 시계(Logical Clock)로, 해당 페이지가 사용될 때마다 0으로 클리어 스킨 후 시간을 증가시켜 시간이 가장 오래된 페이지를 교체한다.

 

 

 

LFU(Least Frenquently Used)

✔ LFU는 사용 빈도가 가장 적은 페이지를 교체하는 기법이다

✔ 활발하게 사용되는 페이지는 사용 횟수가 많아 교체되지 않고 사용된다

 

 

 

 

NUR(Not Used Recently)

 

✔ LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법

✔ LRU에서 나타나는 시간적 오버헤드를 줄일 수 있다

✔ 최근 사용여부를 확인하기 위해 각 페이지마다 두 개의 비트, 즉 참조비트와 변형비트가 사용된다

2개의 하드웨어 비트(참조 비트와 변형 비트)의 값에 따라 교체될 페이지의 순서가 결정된다

최근에 참조되고 & 변형된 것이 가장 나중에 교체된다

 

참조 비트 0 0 1 1
변형 비트 0 1 0 1
교체 순서 1 2 3 4

 

 

SCR(Second Chance Replacement, 2차 기회 교체)

 

✔ 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것

✔ FIFO의 기법을 단점을 보완하는 기법이다

 

 

 

✔ 가상기억장치 기타 관리 사항

개요

가상기억장치를 구현할 때 시스템의 성능에 영향을 미치는 페이지 크기나 Locality, 워킹 셋, 페이지 부재 빈도, 프리페이징 등

 

페이지 크기

✔ 페이지의 크기에 따라 시스템에 미치는 영향이 다름

 

❗ 페이지 크기가 작을 경우

 

✔ 페이지 단편화 감소, 효율적 워킹셋 유지 가능

✔ 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어짐

✔ 디스크 접근 횟수가 많아져서 전체 입출력 시간 증가

 

❗ 페이지 크기가 클 경우

 

✔ 페이지 단편화 증가

✔ 페이지 맵 테이블의 크기가 작아지고, 매핑 속도가 빨라짐

✔ 디스크 접근 횟수가 감소되어 전체 입출력 효율성 증가

✔ 프로세스(프로그램) 수행에 불필요한 내용까지 적재될 수 있음

 

 

Locality(국부성=지역성=구역성=국소성)

✔ 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질

✔ 스래싱 방지(워킹 셋 이론의 기반)

✔ 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법 중 하나

✔ 시간 구역성(Temporal Locality), 공간 구역성(Spatial Locality)이 있음

 

❗ 시간 구역성(Temporal Locality)

 

- 프로세스가 실행되면서 하나의 페이지를 일정 시간동안 집중적으로 액세스하는 현상

- 한 번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음을 의미

- Loop(반복,순환), 스택(Stack), 부 프로그램(Sub Routine), Counting(1씩 증감), 집계(Totaling)

 

❗ 공간 구역성(Spatial Locality)

 

- 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상

- 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음을 의미

- 배열 순회(Array Traversal, 배열 순례), 순차적 코드 실행 등

 

 

워킹 셋(Working Set)

✔ 워킹 셋은 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합이다✔ 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 교체 현상이 줄어들어 프로세스 기억장치의 사용이 안정됨

 

 

페이지 부재 빈도 방식

✔ 페이지 부재(Page Fault)는 프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상✔ 페이지 부재 빈도(PFF; Page Fault Frequency)는 페이지 부재가 일어나는 횟수를 의미✔ 운영체제는 프로세스 실행 초기에 임이의 페이지 프레임을 할당하고, 페이지 부재율을 지속적으로 감시하고 있다가 부재율이 상한선을 넘어가면 좀 더 많은 페이지 프레임을 할당하고, 부재율이 하한선을 넘어가면 페이지 프레임을 회수하는 방식을 사용

 

 

프리페이징(Prepaging)

✔ 처음의 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 기법

 

 

스레싱(Thrashing)

✔ 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상을 말함✔ 페이지 부재가 자주 발생할 때 나타나는 현상✔ 다중 프로그래밍 정도(얼마나 많은 프로그램을 동시에 수행하는지 나타내는 정도)가 높아짐에 따라CPU 이용률은 특정 시점까지 높아지지만, 더욱 커지면 스래싱 현상이 나타나고 CPU 이용률이 급격히 감소하게 됨

 

 

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

 


 

 

정보처리기사 4과목 필기(상시업뎃)

2021년 정보처리기사 공부를 위해 각 과목/챕터 별 Best 키워드를 정리해 놓은 글입니다. 시나공 문제집의 기출빈도와 중요도를 기준으로 정리된 키워드들이며, 순서와 관계 없이 

y-oni.tistory.com

참고: 시나공 정보처리기사 필기 (저자: 강윤석, 김용갑, 김우경, 김정준 | 출판사: 길벗), 유튜브 주간컴공TV

728x90