기억 장치 관리
제 3 장 기억 장치 관리
1. 주기억장치 관리 기법
|
|
|
|
단일 프로그래밍 |
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
연속 할당 |
|
|
|
|
|
절대 번역 |
|
|
|
|
|
고정 분할 |
| ||
|
|
|
|
다중 프로그래밍 |
|
|
재배치 가능 번역 | |
|
|
|
|
|
|
| ||
주기억장치 |
|
|
|
|
|
가변 분할 |
|
|
관리 기법 |
|
|
|
|
|
|
| |
|
|
|
|
페이징 |
|
|
|
|
|
|
비연속 할당 |
|
|
|
|
| |
|
|
|
세그먼테이션 |
|
|
|
| |
|
|
|
|
|
|
|
|
1) 연속 할당
① 단일 프로그래밍 : 한 개의 프로세스만 주기억장치에 적재하여 실행하는 방법.
㉠ 특징
․ 경계레지스터 필요 ․ 프로그램의 크기가 제한됨
․ 기억장치의 낭비가 심함 ․ 사용자 모드와 관리자 모드로 구분됨.
㉡ 적용기술
․ 교체(Swapping) : 어떤 프로그램이 기억장치를 사용하는 도중에 다른 프로그램에서 해당 기억 장치를 사용하고자 할 경우 사용중인 내용을 보조 기억 장치에 보존하고 새로운 프로그램이 주기억 장치를 사용하는 방법.
․ 중첩(Overlay) : 주기억 장치보다 큰 프로그램을 실행하기 위해서 필요한 부분만 기억장치에 읽어 오는 방법.
② 다중 프로그래밍
㉠ 고정 분할 : 주기억장치를 미리 몇 개의 고정된 개수와 크기의 부분으로 분할하여 여러 개의 프로그램이 동시에 적재되어 실행되게 하는 방법.
․절대 번역 : 정해진 공간에서만 실행.
․재배치 가능 번역 : 실행할 수 있는 공간만 있으면 위치에 관계없이 실행.
㉡ 가변 분할 : 주기억장치를 미리 나누어 놓은 것이 아니라, 요구량에 따라 동적으로 필요한 만큼 분할하여 사용하는 방법.
※ 배치전략
․ 최적적합(Best-Fit) : 반입되는 프로그램의 크기에 가장 알맞은 크기의 빈 분할 공간에 적재시키는 방법.
․ 최초적합(First-Fit) : 반입되는 프로그램을 수용할수 있는 크기를 가진 최초의 빈 분할 공간에 적재시키는 방법.
․ 최적적합(Best-Fit) : 반입되는 프로그램의 크기에 가장 큰 빈 분할 공간에 적재시키는 방법.
③ 단편화(Fragmentation) : 주기억장치를 연속할당 기법으로 사용할 경우 사용되지 않고 낭비되는 부분적인 공간.
㉠ 내부 단편화 : 기억공간 > 작업량
㉡ 외부 단편화 : 기억공간 < 작업량
④ 단편화 해결 방안
㉠ 통합(Coalsescing) : 인접되어 있는 두 빈 공간을 하나로 합하는 방법.
㉡ 압축(Compaction) : 빈 분할 영역을 한 곳에 합치는 방법.
2) 비연속 할당
① 페이징(Paging) 기법 : 일정한 크기의 블록을 사용.
② 세크먼테이션(Segmentation) 기법 : 블록이 서로 다른 경우.
2. 가상 기억 장치
- 물리적 주기억 장치 크기보다 더 큰 사용자 프로그램을 실행시킬 수 있도록 하기 위해 개발,
1) 가상 기억 구성
① 페이징(Paging) 기법 : 일정한 크기의 블록을 사용.
㉠ 연관사상 : 연관 기억장치를 이용하여 페이지를 관리하는 기법.
㉡ 직접사상 : 모든 페이지가 페이지 사상표에 있는 경우 사용.
㉢ 직접/연관사상 : 최근에 참조되는 페이지는 연관 사상표에 보관하고 나머지는 페이지 사상표 이용.
② 세크먼테이션(Segmentation) 기법 : 블록이 서로 다른 경우.
※ 세그먼트 접근 제어 : 기억장치 보호키(판독접근,기록접근,수행접근)을 이용.
2) 가상 기억 장치 관리 정책
① 반입(fetch) 전략
- 언제 보조기억 장치에서 주기억장치로 옮길 것인가 결정.
② 배치(placement) 전략
- 주기억장치 어느 곳에 위치시킬 것인가 결정.
③ 교체(replacement) 전략
- 주기억장치에 있던 페이지 중 어느 페이지를 새로운 페이지와 교체할 것인가 결정.
3) 반입전략
① 요구반입 기법
- 각 페이지들이 보조 기억 장치에 저장되어 있다가 프로세스에 의해 그 페이지가 요구 되어 질 때 보조 기억 장치에 주기억 장치로 옮겨지는 기법.
② 예상반입 기법
- 참조될 페이지를 미리 예측하여 보조 기억 장치에 주기억 장치로 옮기는 기법.
4) 페이지 교체 알고리즘
① 최적화 알고리즘 : Belady가 제안한 것으로 페이지 부재를 최소화 하기 위해서 이후에 가장 오랫동안 사용되지 않을 페이지를 대치하는 기법으로 실제 구현 불가능.
② FIFO(First In First Out) 알고리즘 : 가장 먼저 들여온 페이지를 먼저 대치시키는 방법.
※ FIFO의 모순 : FIFO 페이지 대치 기법 하에서 더 많은 수의 페이지 프레임을 할당하더라도 페이지 부제가 더 많이 발생함.(참조의 국부성 때문)
③ LRU(Least Recently Used) 알고리즘 : 가장 오랫동안 사용되지 않은 페이지를 먼저 대치시키는 방법.
④ LFU(Least Frequently Used) 알고리즘 : 참조(호출)된 횟수가 가장 적은 페이지를 대치시키는 방법.
⑤ NUR(Not Used Recently) 알고리즘 : 참조 비트를 이용하여 최근에 사용하지 않은 페이지 대치.
필요로 하는 프레임→ |
A |
B |
C |
D |
B |
A |
C |
A |
E |
FIFO |
A |
A |
A |
A |
A |
A |
A |
A |
E |
|
B |
B |
B |
B |
B |
B |
B |
B | |
|
|
C |
C |
C |
C |
C |
C |
C | |
|
|
|
D |
D |
D |
D |
D |
D | |
* |
* |
* |
* |
|
|
|
|
* | |
|
|
|
|
|
|
|
|
|
|
LRU |
A |
A |
A |
A |
A |
A |
A |
A |
A |
|
B |
B |
B |
B |
B |
B |
B |
B | |
|
|
C |
C |
C |
C |
C |
C |
C | |
|
|
|
D |
D |
D |
D |
D |
E | |
* |
* |
* |
* |
|
|
|
|
* | |
|
|
|
|
|
|
|
|
|
|
LFU |
A |
A |
A |
A |
A |
A |
A |
A |
A |
|
B |
B |
B |
B |
B |
B |
B |
B | |
|
|
C |
C |
C |
C |
C |
C |
C | |
|
|
|
D |
D |
D |
D |
D |
E | |
* |
* |
* |
* |
|
|
|
|
* |
※ *표시는 페이지 폴트(Page Fault)를 의미함
5) 기타 고려 사항
① 스레싱(Thrashing)
- 너무 빈번히 페이지 부재가 일어나는 현상으로, 프로세스 수행에 소요되는 시간보다 페이지 이동에 더 많은 시간이 소요되는 현상. → CPU 이용률 저하
- 다중 프로그램밍의 정도를 낮추어야 스레싱 현상을 방지 할 수 있음.
※ 페이지 부재(Page Fault) : 프로세스에서 원하는 페이지가 주기억장치 내에 존재하지 않는 경우.
→ 보조기억장치에서 읽어 들여 주기억장치에 적재한 다음 사용.
※ 워킹 세트(Working Set) : 주기억장치에 유지되어야 하는(참조되는) 페이지들의 집합.
→ 데닝 : 워킹세트는 주기억 장치에 위치되어야 함.
② 구역성(Locality)
- 실행중인 프로세서는 시간에 따라 공간의 일정 부분만 집중적으로 참조하는 경향이 있음.
㉠ 시간 구역성(Tempral Locality) : 프로세스가 짧은 시간주기 동안 동일한 기억장소를 여러차례 참조하는 경향.
예) 순환(Loop), 부프로그램(Subroutine), 스택(Stack), 카운팅(Counting)과 집계(Sum)에서의 변수
㉡ 공간 구역성(Spatial Locality) :프로세서가 분산지역이 아닌 특정 부분을 집중적으로 참조하는 경향
예) 배열(Array), 순차코드 실행, 관련된 변수의 선언 등.
③ 페이지의 크기
㉠ 페이지의 크기가 작을 경우
- 페이지의 단편화를 감소. → 기억장치의 효율이 좋아짐.
㉡ 페이지의 크기가 클 경우
- 페이지 단편화로 인한 기억공간 낭비
- 페이지의 수가 줄어들어 사상 테이블의 크기가 줄어듬.
- 대량의 페이지 이동으로 인해 디스트 접근 부담이 줄어듬.
3. 보조 기억 장치
1) 기억 장치의 계층구조
- 대부분의 컴퓨터 시스템의 기억장치는 디스크나 테이프 같은 보조 기억장치와 주기억 장치, 그리고 캐시 기억 장치 및 CPU 레지스터들이 계층적으로 구성됨.
2) 자기 디스크(Magnetic Disk)
․트랙(Track) : 디스크의 회전축을 중심으로 한 동심원
․섹터(Sector) : 트랙에 대한 부채꼴의 분할 영역
․실린더(Cylinder) : 회전축으로부터 같은 거리에 있는 트랙의 모임.
․접근시간(Acess Time) = 탐색시간(Seek Time) + 회전지연시간(Search, Latency Time) + 전송시간(Transfer Time)
3) 자기 테이프(Magnetic Tape)
․논리레코드(Logical Record) : 논리적 레코드.
․물리레코드(Physical Record) : 실제 입출력이 되는 단위로 여러개의 논리레코드의 묶음.
․IRG(Inter Record Gap) : 레코드와 레코드 사이의 갭.(레코드 구분)
․IBG(Inter Block Gap) : 블록과 블록사이의 갭.(다음 블록을 읽을 때 읽기위한 속도을 회복하기 위해 사용)
․블럭화 인수(Blocking Factor) : 블록에 포함된 논리 레코드 수.
4) 디스크 공간 할당 기법
① 연속 할당 : 연속 공간이 없으면 파일은 생성될 수 없다.
② 연결 할당 : 각 파일에 할당된 블록들이 여러 곳에 흩어지게 적재하여 연결 리스트로 관리하는 기법
(섹터 지향, 블록 할당, 블록 연결 할당)
③ 인덱스 할당
4. 디스크 스케줄링 기법
1) FCFS 기법
― 입출력 요청 대기 큐에 들어온 순서대로 서비스를 하는 방법.
2) SSTF 기법
― 탐색 거리가 가장 짧은 요청이 먼저 서비스를 받는 기법. (FCFS보다 처리량이 많고, 평균 응답 시간이 짧다.)
3) SCAN 기법
― SSTF와 같은 동작을 하지만, 진행 방향상의 가장 짧은 거리에 있는 요청이 먼저 서비스를 받는다.
4) C-SCAN 기법
― 헤드가 항상 바깥쪽 실린더에서 안쪽 실린더로 이동하면서 가장 짧은 탐색 시간을 갖는 요청을 서비스하는 방법.
'Theory > Operating System' 카테고리의 다른 글
운영체제의 실제 (0) | 2018.08.12 |
---|---|
분산 운영체제의 기본 (0) | 2018.08.12 |
정보관리 (0) | 2018.08.12 |
프로세스 관리 (0) | 2018.08.12 |
운영체제의 개요 (0) | 2018.08.12 |
댓글