파일 디스크립터(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 성능에 대한 자료의 지속적인 관리 및 분석으로 임계치를 예상하여 운영
'자격증 준비 > 정보처리기사 필기 - 4과목(프로그래밍 언어 활용)' 카테고리의 다른 글
[정보처리기사 필기] 4과목 - 네트워크 (0) | 2023.02.14 |
---|---|
[정보처리기사 필기] 4과목 - 프로세스, 스레드, CPU 스케줄링 알고리즘 (0) | 2023.02.14 |
[정보처리기사 필기] 4과목 - 운영체제 (0) | 2023.02.14 |
[정보처리기사 필기] 4과목 - 프로그래밍 언어 개요 (0) | 2023.02.13 |