[정처기 필기] 「4」 | 응용 SW 기초 기술 활용 - (3.2) 기억장치 관리, 가상기억장치 구현 / 페이지 교체
「1」 소프트웨어 설계
「2」 소프트웨어 개발
「3」 데이터베이스 구축
> 「4」 프로그래밍 언어 활용
- 서버 프로그램 구현, 프로그래밍 언어 활용, > 응용 SW 기초 기술 활용
「5」 정보시스템 구축 관리
1 운영체제의 개념
2 Windows
3 UNIX / LINUX / MacOS
> 4 기억장치 관리의 개요
> 5 가상기억장치 구현 기법 / 페이지 교체 알고리즘
6 가상기억장치 기타 관리 사항
7 프로세스의 개요
8 스케줄링
9 주요 스케줄링 알고리즘
10 환경 변수
11 운영체제 기본 명령어
12 인터넷
13 OSI 참조 모델
14 네트워크 관련 장비
15 TCP / IP
4. 기억장치 관리의 개요
기억장치 계층 구조의 특징
증가 ↑ | 레지스터 | ↓ 감소 |
↑ | ↑ ↓ | ↓ |
↑ | 캐시 기억장치 | ↓ |
접근 속도 비트당 가격 ↑ | ↑ ↓ | ↓ 접근 시간 기억 용량 |
↑ | 주기억장치 | ↓ |
↑ | ↑ ↓ | ↓ |
감소 ↑ | 보조기억장치 | ↓ 증가 |
- 상위의 기억장치일수록 접근 속도, 접근 시간 빠름, 기억 용량이 적고, 비용 비쌈
- 주기억장치는 자신의 주소를 갖는 워드, 바이트로 구성, 주소를 이용하여 액세스 가능
- 레지스터, 캐시 기억장치, 주기억장치의 프로그램, 데이터는 CPU가 직접 액세스 가능, 보조기억장치에 있는 프로그램, 데이터는 직접 액세스 불가능
- 보조기억장치에 있는 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스 가능
기억장치의 관리 전략의 개요
보조기억장치의 프로그램, 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등 지정하여 한정된 주기억장치의 공간을 효율적으로 사용, 반입 전략, 배치 전략, 교체 전략
반입(Fetch) 전략
보조기억장치에 보관 중인 프로그램, 데이터를 주기억장치로 적재시킬 시기를 결정
요구 반입(Demand Fetch) : 실행중인 프로그램이 특정 프로그램, 데이터 등의 참조를 요구할 때 적재
예상 반입(Anticipatory Fetch) : 실행중인 프로그램에 의해 참조될 프로그램, 데이터를 미리 예상하여 적재
배치(Placement) 전략
새로 반입되는 프로그램, 데이터를 주기억장치로 적재할 위치를 결정
최초 적합(First Fit) : 프로그램, 데이터가 들어갈 수 있는 크기의 빈 영역 중 첫 번째 분할 영역에 배치
최적 적합(Best Fit) : 프로그램, 데이터가 들어갈 수 있는 크기의 빈 영역 중 단편화를 가장 작게 남기는 분할 영역에 배치
최악 적합(Worst Fit) : 프로그램, 데이터가 들어갈 수 있는 크기의 빈 영역 중 단편화를 가장 많이 남기는 분할 영역에 배치
단편화
내부 단편화 : 분할된 영역이 할당될 프로그램의 크기보다 커, 프로그램이 할당된 후 사용되지 않고 남아있는 빈 공간
외부 단편화 : 분할된 영역이 할당될 프로그램의 크기보다 작아, 프로그램이 할당될 수 없어 사용되지 않고 남아있는 빈 공간
ex)
10K의 프로그램이 할당받게 되는 영역 번호
영역 번호 | 영역 크기 | 상태 |
1 | 5K | 공백 |
2 | 14K | 공백 |
3 | 10K | 사용 중 |
4 | 12K | 공백 |
5 | 16K | 공백 |
// First Fit : 빈 영역 중 10K가 들어갈 수 있는 첫 번째 영역 2
// Best Fit : 빈 영역 중 10K가 들어가고, 단편화를 가장 적게 남기는 영역 4
// Worst Fit : 빈 영역 중 10K가 들어가고, 단편화를 가장 많이 남기는 영역 5
교체(Replacement 전략)
주기억장치의 모든 영역이 이미 사용 중인 상태에서 새로운 프로그램, 데이터를 주기억장치에 배치하려 할 때, 사용되는 영역 중 어느 영역을 교체할 것인지 결정
5. 가상기억장치 구현 기법 / 페이지 교체 알고리즘
가상기억장치의 개요
보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용, 용량이 적은 주기억장치를 큰 용량인 것처럼 사용
- 프로그램을 여러 개의 작은 블록 단위로 나눠 가상기억장치에 보관, 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리
- 주기억장치보다 용량이 큰 프로그램 실행
- 주기억장치의 이용률, 다중 프로그래밍 효율 높일 수 있음
- 가상기억장치에 저장된 프로그램을 실행하면 가상기억장치의 주소를 주기억장치의 주소로 바꾸는 주소 변환 작업 필요
- 동적 주소 변환(DAT)은 프로세스가 실행될 때 가상주소를 실주소로 변환, == 주소 사상, 주소 매핑, 이 때 연속적으로 변환되지 않아도 되는 것을 인위적 연속성(Artifical Contiguity)라고 함
- 블록 단위로 나눠 사용하므로 연속 할당 방식에서의 단편화를 해결
- 블록의 종류에 따라 페이징 기법, 세그먼테이션 기법
페이징(Paging) 기법
가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후, 나눠진 프로그램(페이지)을 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행
- 프로그램을 일정한 크기로 나눈 단위를 페이지, 페이지 크기로 일정하게 나눠진 주기억장치의 단위를 페이지 프레임
- 외부 단편화는 발생하지 않고, 내부 단편화 발생 가능 (페이지 크기 4KB, 프로그램 17KB, 4KB씩 나눠지면, 1KB가 남는데 이를 주기억장치에 적재하면 3KB의 내부 단편화 발생)
- 주소 변환을 위해 페이지의 위치 정보를 가지는 페이지 맵 테이블이 필요
- 페이지 맵 테이블 사용으로 비용 증가, 처리 속도 감소
- 동적 주소 변환 기법(DAT)을 사용하여 다중 프로그래밍의 효과를 증진
세그먼테이션(Segmentation) 기법
세그먼테이션의 개요
가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적 단위로 나눈 후 주기억장치에 적재시켜 실행
- 프로그램을 배열, 함수같은 논리적인 크기로 나눈 단위를 세그먼트, 각 세그먼트는 고유한 이름, 크기 가짐
- 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법
- 기억공간을 절약
- 주소 변환을 위해 세그먼트의 위치 정보를 가지는 세그먼트 맵 테이블이 필요
- 주기억장치에 적재될 때, 다른 세그먼트에게 할당된 영역을 침범할 수 없고, 이를 위해 기억장치 보호키 필요
- 내부 단편화 발생하지 않고, 외부 단편화 발생
세그먼테이션 기법의 일반적인 주소 변환
- 가상주소는 세그먼트 번호를 나타내는 s, 실제 내용이 위치하는 곳까지 거리를 나타내는 d로 구성
- 실기억주소는 세그먼트 기준번지와 변위값을 더한 완전주소 형태
가상주소 형식 | 세그먼트 번호(s) 변위값(d) |
실기억주소 형식 | 실기억주소( 세그먼트 기준번지 + 변위값 ) |
세그먼트 맵 테이블 | 세그먼트 번호(s) 세그먼트 크기(L) 기준번지(d) |
① 가상주소의 세그먼트 번호로 세그먼트 맵 테이블에서 해당 세그먼트의 기준번지, 크기 구함
② 가상주소의 변위값, 세그먼트 크기 비교
③ 변위값이 작거나 같으면, 기준번지와 변위값 더하여 실기억주소를 만들어 주기억장치를 액세스
④ 변위값이 크면, 다른 영역 침범하므로 실행 권한을 운영체제에게 넘기고 트랩 발생(변위값이 크다는 것은 현재 찾는 세그먼트 위치가 해당 세그먼트의 한계번지를 초과했다는 의미)
ex)
가상주소 | |||||||||
CPU → | 2 500 | → | → → → | → → | → | ↘ → → | → | ↘ | |
↓ | 세그먼트 맵 테이블 | ② ↓ | ↓ | 주기억장치 | |||||
① ↓ | 번호 | 크기 | 기준번지 | ↓ | ↓ 1000 + 500 → ↑ → ③ → |
1000 | |||
↓ | 1 | 400 | 2000 | ↗ |
Yes 500 ≤ 600 → No ↓ |
→ 1500 | |||
↘ | 2 | 600 ↘ | 1000 → | → ↑ | → ↓ → | ↗ | 2000 | ||
3 | 600 ↓ | 3200 | ↑ | ↓ ④ | 3000 | ||||
② ↘ | → | ↗ | ↓ 트랩 |
페이지 교체 알고리즘
페이지 부재(Page Fault)가 발생했을 때, 주기억장치의 모든 페이지 프레임이 사용 중이라면 어떤 페이지 프레임을 선택하여 교체할 것인지 결정, OPT, FIFO, LRU, NUR, SCR
OPT(OPTimal replacement, 최적 교체)
: 가장 오랫동안 사용하지 않을 페이지 교체
: 벨레이디(Belady)가 제안, 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
FIFO(First In First Out)
: 각 페이지가 적재될 때마다 그때 시간을 기억시켜 가장 먼저 들어와 오래 있었던 페이지를 교체
: 이해 쉽고, 프로그래밍 / 설계가 간단
참조 페이지 | 2 | 3 | 2 | 1 | 5 | 2 | 3 | 5 |
↓ | ||||||||
페이지 프레임 |
2 | 2 | 2 | 2 | 5 | 5 | 5 | 5 |
3 | 3 | 3 | 3 | 2 | 2 | 2 | ||
1 | 1 | 1 | 3 | 3 | ||||
부재 발생 | ● | ● | ● | ● | ● | ● |
LRU(Least Recently Used)
: 각 페이지마다 계수기(Counter), 스택(Stack)을 두어 현시점 가장 오래 전에 사용한 페이지 교체
참조 페이지 | 2 | 3 | 2 | 1 | 5 | 2 | 3 | 5 |
↓ | ||||||||
페이지 프레임 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
3 | 3 | 3 | 5 | 5 | 5 | 5 | ||
1 | 1 | 1 | 3 | 3 | ||||
부재 발생 | ● | ● | ● | ● | ● |
LFU(Least Frequently Used)
: 사용 빈도가 가장 적은 페이지 교체
: 활발하게 사용되는 페이지는 교체되지 않고 사용
NUR(Not Used Recently)
: 최근에 사용하지 않은 페이지 교체
: 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높음, LRU에서의 시간적인 오버헤드 줄임
: 최근 사용 여부를 확인하기 위해 각 페이지마다 참조 비트, 변형 비트 사용
참조 비트 | 0 | 0 | 1 | 1 |
변형 비트 | 0 | 1 | 0 | 1 |
교체 순서 | 1 | 2 | 3 | 4 |
SCR(Second Chance Replacement, 2차 기회 교체)
: 가장 오랫동안 있던 페이지 중 자주 사용되는 페이지의 교체를 방지, FIFO 단점 보완
출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)
'💠기타 > 자격증' 카테고리의 다른 글
[정처기 필기] 「4」 | 응용 SW 기초 기술 활용 - (3.4) 스케줄링, 주요 스케줄링 알고리즘, 환경 변수 (0) | 2024.02.17 |
---|---|
[정처기 필기] 「4」 | 응용 SW 기초 기술 활용 - (3.3) 가상기억장치 관리 사항, 프로세스 (0) | 2024.02.16 |
[정처기 필기] 「4」 | 응용 SW 기초 기술 활용 - (3.1) 운영체제의 개념, Windows, UNIX / LINUX / MacOS (1) | 2024.02.16 |
[정처기 필기] 「4」 | 프로그래밍 언어 활용 - (2.7) 스크립트 언어, 라이브러리, 예외 처리 (0) | 2024.02.16 |
[정처기 필기] 「4」 | 프로그래밍 언어 활용 - (2.6) Python의 기초, 활용 (생략) (1) | 2024.02.15 |