7장 주기억장치 관리 200512035 2A박도하
1. 기억장치의 계층 구조 기억장치는 CPU가 어떤 작업을 실행시키기 위해 일련의 프로그램 또는 데이터를 일시적으로 저장하기 위한 장치. ←Cache Memory ←Virtual Memory
2. 구성과 관리기법 주기억장치의 구성과 정책 → 효율적인 주기억장치의 운영을 위해 구성 정책을 결정 주기억장치를 동시에 할당 받을 수 있는 프로세스 수 각 프로세스에게 할당되는 주기억장치의 양 주기억장치 분할 방법 각 프로세스에게 할당된 분할 영역의 교체 가능성 프로세스에게 할당되는 주기억장치 영역의 연속성
주기억장치의 구성 주 기억 장치 내에 동시에 몇 명의 사용자를 둘 것인가? - 한 명의 사용자만 둠 / 동시에 여러 명의 사용자 둠. 주기억장치의 분할 방법에 따라 - 고정 분할 / 가변 분할 사용자의 작업이 수행될 분할 선정 방법에 따라 - 지정된 분할에서만 수행 / 수행 가능한 어느 분할도 가능 사용자의 작업이 연속된 분할에 할당되어야 하는가? - 연속된 block에 할당 / 여러 개 block에 할당
주기억장치의 관리기법 반입 기법(Fetch Strategy) 배치 기법(Placement Strategy) 주기억장치 구성 정책이 결정된 상태에서 시스템의 성능을 최대로 높이기 위해 사용할 수 있는 주기억장치 관리 기법은 반입기법, 배치기법, 교체기법, 할당 기법이 있다. ⇒ 특정 시스템에 어떤 기억장치 구성을 채택하느냐에 관계없이, 최적의 효율을 얻기 위해서 어떤 전략을 사용해야 할 것인가를 결정해야 한다. 반입 기법(Fetch Strategy) 배치 기법(Placement Strategy) 교체 기법(Replacement Strategy) 할당 기법(Allocation Strategy)
① 요구 반입 전략(Demand fetch) 필요로 할 때 적재(load)하는 방법으로 overhead(부담)의 최소화가 1. 반입 기법(Fetch Strategy) 주기억장치에 넣을 다음 프로그램 또는 자료를 “언제 가져올 것인가” 하는 문제이다. ① 요구 반입 전략(Demand fetch) 필요로 할 때 적재(load)하는 방법으로 overhead(부담)의 최소화가 가능하나 대기 시간 문제가 발생 할 수 있다. 즉 추가로 어떤 페이지 를 적재할 때 이미 적재되어 있는 많은 페이지들이 대기할 수 있다. ② 예상 반입 전략(Anticipatory fetch) 미리 적재해 놓는 방법으로 막대한 overhead를 초래할 수 있다. 2. 배치 기법(Placement Strategy) 주기억장치에 자유 공간이 여러 군데 있을 경우 새로 반입될 프로그램 을 “어디에 적재할 것인가”하는 문제이다. 종류로는 최초 적합, 최적 적합, 최악 적합 등이 있다.
2. 배치 기법(Placement Strategy) ① 최초 적합(first fit) 적재 가능한 자유 공간 중 첫 번째 공간 에 할당하는 방식인데 할당과 회수가 여러 번 반복되고 나면 작은 자유 공간 들이 앞 쪽으로 모이는 경향이 있어 자 유 공간 검색에 시간이 길어질 수 있다. 이 문제를 보완 하기 위하여 직전 검색 이 끝난 다음 부분부터 검색하는 방식 을 순환 최초 적합(next fit)라 한다. ② 최적 적합(best fit) 적재 가능한 자유 공간 중 프로그램의 크기에 가장 적당 한 곳에 할당하는 방식으로 사용되지 않는 공간이 최소 가 된다. 직관적으로 가장 좋은 전략인 것처럼 보인다.
3.주기억장치의 할당 방식 연속 할당 방법 불연속 할당 방법 초기의 단일 사용자 시스템은 연속적으로 기억정치를 할당 하였으나 가변분할 다중 프로그래밍 기법이 나온 뒤 여러 단편화를 효율적으로 사용하기 위해 불연속 기억장치 할당을 사용한다. 연속 할당 방법 실행될 프로그램 전체를 연속적인 주기억장치의 장소에 할당시켜 실행하는 방법 ⇒ 주기억장치의 낭비 불연속 할당 방법 실행될 프로그램과 주기억장소를 일정한 크기의 페이지와 같은 논리적 크기로 나눈 후 실행될 페이지 또는 세그먼트 단위의 프로그램만 여러 주기억장치에 분산 할당하여 실행 하는 방법.
4.단일 프로그래밍 시스템 주기억장치 전체가 한 작업(프로그램)에 배정되므로 메모리의 낭비가 많고 한 작업이 끝나야 다음 작업이 수행되므로 보호 장치가 필요 없고 multi programming이 아니다. 만일 보조 기억 장치에 있는 프로그램의 크기가 주기억장치의 크기보다 클 경우 한꺼번에 모두 적재할 수 없으므로 부분적으로 가져가서 수행할 수 있는데 이를 overlay라 한다. ◆ 장단점 ① 장점 : 단순하며 이해하기 쉽다. ② 단점 : 기억장치의 빈 공간을 이용하지 못하기 때문에 기억장치의 낭비 : 한 사용자만이 기억장치로 전용하므로 자원낭비가 심하다 : 입출력 시 CPU는 유휴상태 : 사용하지 않는 프로그램이 기억장치 내에 위치 ◆ 문제점 ① 주기억장치에 적재될 프로그램이 주기억장치보다 클 경우 문제 발생 ⇒ 중첩 구조(overlay Structure) 기법을 사용하여 해결 ② 커널을 보호하는 기법이 필요 하다. ⇒ 경계 레지스터(Boundary Register)을 사용하여 해결
5. 분할 다중 프로그래밍 시스템 고정 분할 다중 프로그래밍 시스템 [단일 사용자 시스템에서 CPU의 활용도]
고정 분할 다중프로그래밍 시스템 ■ 단일 프로그래밍 시스템의 단점을 보완한 것 ■ CPU의 활용도를 높이기 위해 주기억장치에 고정된 크기의 영역 을 사전에 분할하여 프로그램들을 주기억장치에 동시에 같이 적 재 시키는 방법이다. ■ 각 영역(Partition)에서는 하나의 프로그램만 적재가 가능하며 하 나의 프로그램이 2개 이상의 영역을 사용하지 못 한다. ■ 각 프로세스는 주기억장치를 연속적으로 할당 받게 된다. ■ 구현방법 : 절대번역과 로딩과 재배치 가능 번역과 로딩 방법 사용
고정 분할 다중프로그래밍 시스템의 장단점 ■ 장점 ① 주기억장치의 관리가 용이하고, 오버헤드가 적다. ② 다중 프로그래밍이 가능하므로 CPU를 보다 효율적으로 사용. ■ 단점(문제점) ① 커널과 다른 프로세스에게 할당된 분할 영역들에 대한 보호가 필요 ⇒ 해결책 : 경계 레지스터 사용 ② 단편화(Fragment) 문제 발생(주기억장치의 낭비가 크다) - 한 영역에서 한 작업이 차지하고 남은 영역은 사용할 수 없는데 이 부분을 internal fragmentation이라 - 한 영역보다 프로그램이 커서 할당 자체를 할 수 없어 영역전체가 낭비되면 이를 external fragmentation이라 한다. ⇒ 해결책 : 가변 분할 다중프로그래밍 기법 출현