본문 바로가기

자격증 준비/정보처리기사 필기 - 4과목(프로그래밍 언어 활용)

[정보처리기사 필기] 4과목 - 데이터 저장

728x90
반응형

파일 디스크립터(File Descriptor)

파일을 관리하기 위한 시스템이 필요로 하는 파일에 대한 정보를 가진 제어 블록을 의미, 파일 제어 블록(File Control Block)이라고도 함

  • 파일마다 독립적으로 존재하며, 시스템에 따라 다른 구조를 가질 수 있다.
  • 보통 파일 디스크립터는 보조기억장치 내에 저장되어 있다가 해당 파일이 Open될 때 주기억장치로 옮겨진다.
  • 파일 디스크립터는 파일 시스템이 관리하므로 사용자가 직접 참조할 수 없다.

 

 

배치(Placement) 전략

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

최초 적합
(First Fit)
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법
최적 접합
(Best Fit)
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법
최악 접합
(Worst Fit)
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법

 

 

내부 단편화

프로세스가 사용하는 메모리 공간에 남는 부분

  • 프로세스가 요청한 양보다 더 많은 메모리를 할당할 때 발생한다.
  • 메모리 분할 자유 공간과 프로세스가 사용하는 공간의 크기 차이를 의미한다.

 

 

외부 단편화

메모리 공간 중 사용하지 못하게 되는 부분

  • 메모리 할당 및 해제 작업의 반복으로 작은 메모리가 중간 중간 존재할 수 있다.
  • 이렇게 사용하지 않는 메모리가 존재해서 총 메모리 공간은 충분하지만 실제 할당할 수 없는 상황이다.
  • 해결 방법 중 하나로 압축을 이용하여 프로세스가 사용하는 공간을 한쪽으로 모으는 방법이 있지만 작업 효율이 좋지 않다.

 

 

페이징(Paging)

가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억 장치의 영역(페이지 프레임)에 적재시켜 실행하는 기법

  • 페이지(Page) : 프로그램을 일정한 크기로 나눈 단위
  • 페이지 프레임(Page Frame) : 페이지 크기로 나누어진 주기억장치의 단위

 

하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법

 

 

특징 

  • 논리 메모리는 물리 메모리에 저장될 때 연속되어 저장되지 않는다.
  • 외부 단편화는 발생하지 않는다.(물리 메모리의 남는 프레임에 적절히 배치되기 때문)
  • 내부 단편화 발생 가능성이 있다.
  • 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블(Page Map Table)필요하다.

 

 

세그먼테이션(Segmentation)

가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈주기억장치에 적재시켜 실행하는 기법

 

세그먼트(Segment) : 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위, 고유한 이름과 크기를 가진다.

 

 

특징

  • 분할 방식이 페이징과 달리 세그먼트 단위이다.
  • 매핑 테이블의 동작 방식이 페이징과 동일하다.(페이지 맵 테이블 대신 세그먼트 맵 테이블을 사용)
  • 보호와 공유 기능을 수행하여 프로그램의 중요 부분과 중요하지 않은 부분을 분리하여 저장하거나 같은 코드 영역은 한번에 저장할 수 있다.
  • 내부 단편화는 발생하지 않는다.
  • 외부 단편화 발생 가능성이 있다.

 

 

페이지 교체 알고리즘

페이지의 부재(Page Fault)가 발생했을 때 가상기억장치의 필요한 페이지를 주기억장치에 적재해야 할 때, 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법

최적 교체 OPT
(Optimal Replacement)
- 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 방법
- 벨레이디(Belady)가 제안
- 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
- 현실적으로 구현 불가능
FIFO
(First In First Out)
- 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
- 이해하기 쉽고 프로그래밍 및 설계가 간단함
LRU
(Least Recently Used)
- 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
- 각 페이지마다 계수기(Counter)나 스택(Stack)을 두어 현 시점에서 가장 오래 전에 사용된 페이지를 교체
LFU
(Least Frequently Used)
- 사용 빈도가 가장 적은 페이지를 교체하는 기법
- 활발하게 사용되는 페이지는 사용 횟수가 많아 교체되지 않고 사용됨
2차 기회 교체, SCR
(Second Chance Replacement)
- 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것으로, FIFO 기법의 단점을 보완하는 기법
NUR
(Not Used Recently)
- LRU와 비슷한 알고리즘, 최근에 사용하지 않은 페이지를 교체
- 최근에 사용하지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로, LRU에서 나타는 시간적인 오버헤드를 줄일 수 있음
- 최근의 사용 여부를 확인하기 위해 각 페이지 마다 두 개의 비트, 즉 참조 비트(Reference Bit)와 변형 비트(Modified Bit, Dirty Bit)가 사용됨

 

 

페이지 크기

작을 경우

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

 

클 경우

  • 페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아지고, 매핑 속도가 빨라짐
  • 디스크 접근 횟수가 줄어들어 전체적인 입출력 효율성 증가
  • 페이지 단편화 증가하여, 한 개의 페이지를 주기억장치로 이동하는 시간이 늘어남
  • 프로세스(프로그램) 수행에 불필요한 내용까지도 주기억장치에 적재 될 수 있음

 

 

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

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

  • 스래싱 방지를 위한 워킹 셋 이론의 기반

 

종류 - 시간 구역성(Temporal Locality)

  • 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
  • 한 번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음을 의미
  • 시간 구역성이 이루어지는 기억 장소 : Loop, Stack, Sub Routine, Counting, Totaling에 사용되는 변수

 

종류 - 공간 구역성(Spatial Locality)

  • 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상
  • 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음을 의미
  • 공간 구역성이 이루어지는 기억 장소 : 배열 순회, 순차적 코드 실행, 프로그래머들이 관련된 변수들을 서로 근처에 선언하여 할당되는 기억장소, 같은 영역에 있는 변수를 참조할 때 사용

 

 

워킹 셋(Working Set)

프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합

  • 데닝(Denning)이 제안한 프로그램의 움직임에 대한 모델로, 프로그램의 Locality 특징을 이용
  • 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정
  • 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 워킹 셋은 시간에 따라 변경

 

 

 

스레싱(Thrashing)

프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상

  • 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정중 자주 페이지 부재가 발생함으로 나타나는 현상, 전체 시스템의 성능이 저하
  • 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고, CPU의 이용률은 급격히 감소하게 됨

 

방지 방법

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