ㅇ ㅂㅇ
기억장치 관리
가상기억 장치의 구성과 관리
> 개요
- 가상기억장치의 개념은 프로그램, 데이터, 스택의 결합된 크기가 이용할 수 있는 물리적인 기억장치를 초과한다는 데 있음
- 정기적으로 실행되는 프로그램의 일부는 주기억장치에 유지하고, 더 이상 빈번하게 사용되지 않는 나머지는 가상기억장치나 디스크에 유지
- 가상기억장치는 사용자 논리 메모리를 실제 메모리와 분산시킴으로써 주기억장치를 매우 큰 저장장치의 균일한 배열로 생각하여 사용 할 수 있으므로, 프로그래머가 주기억장치의 한계를 걱정할 필요는 없음
> 동작원리
- 가상기억공간과 실 기억공간을 연결하는 주소의 매핑(Mapping)과정이 필요함
- 논리 주소 공간을 블록으로 나누고 실제 주기억장치 용량에 맞는 블록만을 불러오는 데, 이 때 어떤 블록을 주기억장치에 불러올 것인지는 주소 변환 테이블을 사용하여 결정함
- 가상주소(virtual address)는 실행 중 인 프로세스가 참조하는 주소, 실 주소(real address)는 주기억장치에서 사용가능한 실제 주소
> 가상기억장치의 구현
- 가상기억장치의 구현 방법에 따라 페이징/세그멘테이션/페이징과 세그멘테이션 혼용기법으로 나뉨
- 사상표 색인을 찾는 방법에 따라서 직접 사상 / 연관 사상 / 직접과 연관 사상 혼용 방법으로 나뉨
>> 페이징(Paging) 기법
- 블록 사이즈가 고정된 방식으로 사용자가 작성한 프로그램은 기계적으로 동일한 크기의 페이지 단위로 분해되어 구현됨
- 내부 단편화가 발생 할 수 있음
- 스레싱(Thrashing) : 자주 페이지의 교체가 일어나는 현상(프로세스 처리 시간 < 페이지 교체 시간)
- 워킹 셋(Working Set) : 자주 사용되는 페이지들을 묶어 주기억장치에 계속 상주 시키는 방법, 스레싱의 대책
>> 세그멘테이션(Segmentaion) 기법
- 블록 사이즈가 가변적인 Segment로 나누어 구현된 방식
- 프로그램을 Segment로 나누는 일은 프로그래머가 직접해야 함
- 외부 단편화가 발생 할 수 있음
>> 페이지/세그멘테이션 혼용 기법
- 세그먼트가 너무 가변적이고, 때로는 그 크기가 지나치게 커서 주기억장치에 적재 할 수 없는 경우의 문제점을 극복하기 위한 방식
- 프로그램을 논리적인 세그먼트 단위로 분할하고, 각 세그먼트들을 다시 각각 페이지 단위로 분할함
* 단편화(Fragmentation)
- 내부 단편화(Internal Fragmentation) : 할당 받은 페이지를 다 사용하지 못한 경우 자투리 공간이 발생하는 것(영향이 적음)
-- 압축(Compaction)으로 해결 가능 : 분산되어 있는 단편화도니 빈 공간들을 결합(Garvage Collection)
- 외부 단편화(External Fragmentation) : 할당과 제거를 반복하면서, 적재하기 애매해진 공간들이 발생하는 것
-- 통합(Coalescing)으로 해결 가능 : 인접해 있는 단편화된 공간을 하나의 공간으로 통합
> 연관 사상 방법(associative mapping)
- 빠른 주소변환을 수행하기 위해서 위치지정(location addressed)이 아닌 내용지정(content addresed)의 연관 기억장치에 사상 페이지 테이블을 유지함
- 두 번의 기억장치 접근문제는 연관기억장치 또는 변환 버퍼(TLB; Translation Look-aside Buffers)라고 하는 특별한 하드웨어 캐시를 사용함으로써 해결 할 수 있다.
- 주기억장치보다 훨씬 빠른 접근시간을 가지는 연관기억장치에 페이지 사상표 전체를 넣는 방법으로 가장 빠르고 융통성 있는 사상구조
> 직접/연관 사상 혼용 방법
- 연관/직접 사상의 혼용 페이징 방법은 더 저렴한 비용으로 캐시나 연관기억장치의 장점을 살릴 수 있는 절충 방안이다.
- 가장 최근에 참조된 페이지는 조만간 다시 사용되기 쉽다는 지역성의 원리를 이용
> 직접 사상 방법
- 페이지 사상표는 주기억장치에 있으며, 프로세스의 가상기억장치를 구성하는 모든 페이지에 대한 항목이 페이지 사상표에 있음
- 명령어 수행주기 외에 추가적인 장치 수행주기가 수행됨
- 페이지 테이블을 위해서 한 번, 그 메모리 자체를 위해서 한 번, 두 번의 기억장치 접근이 필요
보조기억장치
> 디스크 스케줄링
- FIFO(=FCFS)
-- 작업 요청 순서대로 처리
-- 구현이 쉽고, 공평
-- 트랙 탐색 패턴의 최적화 시도가 없으며 따라서 응답시간이 길어지는 영향 발생
- SSTF(Short Seek Time First)
-- 현재위치에서 탐색거리가 가장 짧은 요청을 먼저 처리
-- FCFS보다 처리량이 많고 평균 응답시간이 짧음
-- 응답시간 편차가 심함(기아 상태 발생 가능)
-- 처리량 중심인 일괄시스템에 유용함
- SCAN
-- 헤드가 한 방향으로 쭉가면서 처리하는 방법, 실린더 끝까지 가서 방향을 전환함(가장 바깥쪽 실린더에 도달할 때까지 진행방향을 바꾸지 않음)
-- 진행방향상의 가장 가까운 곳에 있는 요청을 서비스 함
-- 부하가 적을 대 우수한 기법
-- SSTF의 차별대우를 많이 없애고 낮은 편차를 가짐
-- 바깥쪽 트랙이 가운데 트랙보다는 차별대우를 받음
- C-SCAN
-- 헤드가 실린더 끝에서 안쪽으로 이동하며 처리
-- 한쪽 방향으로만 헤드를 이동하며, 끝에 도착하면 다시 처음부터 다시 진행
-- 안쪽과 바깥쪽 트랙의 차별대우를 제거함
-- 응답시간의 편차가 적으며 부하가 많은 상황에서 효과적
- N-Step SCAN
-- 헤드의 방향이 전환 될 때, 이미 대기 중이던 요청만 처리(도중에 생긴 요청은 무시)
-- SCAN 알고리즘에서 방향 전환시 먼저 요구한 N개의 요청만 서비스 함
-- 헤더가 있는 실린더에 요청이 집중될 때 발생하는 무한대기를 제거한 방법
댓글 없음:
댓글 쓰기