티스토리 뷰

 

 

https://namu.wiki/w/%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EA%B3%84%EC%B8%B5%20%EA%B5%AC%EC%A1%B0

 

 

1. 기억장치는 왜 나뉘어져 있을까?

- 컴퓨터는 각각의 특징이 있는 서로 다른 여러 종류의 저장장치를 함께 사용해서 "최적의 효율"을 낼 수 있어야 한다. 

저장장치 계층 구조의 특징

- 주기억장치는 각기 자신의 주소를 가지는 워드 또는 바이트들로 구성되어 주소를 이용하여 접근

- 보조기억장치에 있는 프로그램이나 데이터는 CPU가 직접 액세스 할 수 없음

- 보조기억장치에 있는 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스

 

 

2. 주기억장치와 보조기억장치(하드디스크)

레지스터

 

- 주기억장치 => 레지스터, 캐시, RAM

- 보조기억장치 => 하드디스크 

 

 

기억장치의 관리 전략의 개요

- 3 : 반입(Fetch), 배치(Placement), 재배치(Replacement) 전략

 

반입 배치 재배치

- 보조기억장치에 보관중인 데이터를 언제 주기억장치에 적재할 것인지를 결정하는 전략

- 요구 반입 : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재

- 예상 반입 : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재

- 새로 반입되는 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략

- 최초 적합(First Fit) : 배치가 가능한 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치

- 최적 적합(Best Fit) : 배치가 가능한 크기의 빈 영역 중에서 단편화를 가장 적게 남기는 분할 영역에 배치

최악 적합(Worst Fit) : 배치가 가능한 크기의 빈 영역중에서 단편화를 가장 많이 남기는 분할 영역에 배치

- 단편화

    -> 내부 단편화 : 배치 후 남은 공간

    -> 외부 단편화 : 배치를 못해 빈 공간으로 남아있는 공간

- 주기억장치의 모든 영역이 이미 사용중인사용 중인 상태에서 새로운 프로그램이나 데이터가 배치하려고 할 때, 이미 사용 중인 영역에서 어느 영역을 교체할 것인지를 결정하는 전략

- FIFO, OPT, LRU, LFU, NUR, SCR 

 

 

 

3. 주기억장치(Computer Memory) 할당 기법

- 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용

- 연속할당기법 - 단일분할 할당기법 / 다중분할할당기법

- 분산할당기법 - 페이징기법 , 세그멘테이션기법

 

- 단일 분할 할당 기법 : 오버레이, 스와핑

- 다중 분할 기법 : 고정 분할 할당 기법, 동적 분할 할당 기법

- 분산 할당 기법 : 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법, 페이징기법, 세그멘테이션 기법 

 

3.1 단일 분할 할당 기법

- 주기억장치를 운영체제영역과 사용자 영역으로 나누어 한순간에는 오직 한명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법 

 

(1) 오버레이(Overlay) 

- 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법

- 보조기억장치에 저장된 하나의 프로그램을 여러개의 조각으로 분할한 후 필요한 조각을 차례로 주기억장치에 적재하여 프로그램을 실행

 

(2) 스와핑 (Swapping) 

- 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법

- 주 기억장치에 있는 프로그램이 보조기억장치로 이동되는 것은 Swap out, 보조 기억장치에 있는 프로그램이 주 기억장치로 이동되는 것을 Swap In 

- 하나의 사용자 프로그램이 완료될때까지 교체과정을 여러번 수행가능

- 가상기억장치의 페이징기법으로 발전 

 

 

3.2 다중 분할 기법

(1) 고정 분할 할당 기법(Multiple contiguous Fixed Partition Allocation , MFT) 기법 

프로그램에 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비 중인 프로그램을 각 영역에서 할당하여 수행하는 기법

- 프로그램 전체가 주기억장치에 위치해야함 , 주 기억장치를 고정 분할 

 

(2) 가변 분할 할당 기법(Multiple Contiguous Variable Partition Allocation, MVT) 기법 

미리 주기억장치에 분할해 놓는 것이 아닌 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할

- 주 기억장치를 효율적으로 사용할 수 있으며, 다중 프로그래밍의 정도를 높일 수 있음

- 고정 분할 할당 기법에 비해 실행될 프로세스의 크기에 대한 제약이 적음 

 

cf) 내부 단편화와 외부단편화

- 내부단편화? 분할된 영역이 할당될 프로그램의 크기보다 크기때문에 프로그램이 할당된 후 사용되지 않고 남아있는 빈공간

- 외부단편화? 분할된 영역이 할당될 프로그램의 크기보다 작기 때문에 프로그램이 할당될 수 없어 사용되지 않고 빈 공간으로 남아있는 분할된 전체 영역 

 

 

4. 가상기억장치

- 보조기억장치(하드디스크)의 일부를 주 기억장치 처럼 사용하는 것으로, 용량이 작은 주기억장치를 마치 큰 용량을 가진것처럼 사용하는 기법

- 가상 기억 장치에 저장된 프로그램을 실행하려면, 가상 기억 장치의 주소를 주기억장치의 주소로 바꾸는 주소 변환 작업이 필요 

- 분산할당기법 ---> 가상 기억 장치의 일반적인 구현 방법 1. 페이징 기법 2. 세그멘테이션

 

(1) 페이징 기법 (paging

- 가상기억장치의 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법

- 프로그램을 일정한 크기로 나눈 크기를 페이지라 하고 페이지 크기로 일정하게 나누어진 주기억장치의 단위를 페이지 프레임이라고 함

- 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있음

- Mapping 작업을 위해서 페이지 맵 테이블이 필요함

 

 

(2) 세그먼트 기법

- 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 방법

- 프로그램을 논리적인 크기로 나눈 단위를 세그먼트라고 함

- 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있음

- Mapping 작업을 위해서 세그먼트 맵 테이블이 필요함

- 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며 이를 위해 기억장치 보호키가 필요

 

페이징기법 세그멘테이션기법
- 주소 변환을 위해 앱 페이지 필요 
- 내부 단편화 발생
- 페이지? 프로그램을 일정한 크기로 나눈것
- 고정된 크기 
- 하나의 작업을 크기가 각각 다른 여러 논리적 단위로 나누어 사용
- 외부 단편화 발생
- 세그먼트 맵테이블 필요
- 각 세그먼트는 고유한 이름과 크기를 갖음
- 기억장치 보호키가 필요
- 가변적 크기 

 

* 페이지 교체 알고리즘

- 페이지 부재가 발생했을 때 가상 기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데 이럴 경우 주기억장치의 모든 페이지 프레임이 사용 중이면 어떤 페이지 프레임을 선택하여 교체할 것인지 결정하는 기법

- 페이지부재란? CPU가 액세스한 가상 페이지가 주 기억장치에 없는 경우, 페이지 부재가 발생하면 해당 페이지를 디스크에서 주기억장치로 가져와야함 

 

- OPT(OPTimal replacement, 최적 교체)

    -> 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체(예상)

 

- FIFO(First In First Out)

    -> 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 오래 있었던 페이지를 교체

    -> 먼저 들어온 것이 먼저 나감

 

- LRU(Least Recently Used)

    -> 최근에 가장 오랫동안 사용하지 않은 페이지를 교체

    -> 페이지마다 CounterStack을 두어 현시점에서 가장 오래전에 사용된 페이지 교체

- LFU(Least Frequently Used)

    -> 사용 빈도가 가장 적은 페이지를 교체

 

- NUR(Not Used Frequency)

    -> 최근에 사용하지 않은 페이지를 교체

    -> 최근 사용 여부를 확인하기 위해 페이지마다 참조 비트변형 비트를 사용

    -> 교체 우선순위

    -> 참조비트? 페이지가 호출되지 않았을때는 0, 호출되었을 때는 1

    -> 변형비트? 페이지 내용이 변경되지 않았을때는 0, 변경되었을때는 1 

 

 

 

5. 가상 기억장치 기타 관리 사항

- 가상 기억장치를 구현할때 시스템의 성능에 영향을 미치는 것

- 페이지크기, Locality, 워킹셋, 페이지 부재빈도, 프리페이징

- 페이지 크기에 따른 특징

페이지 크기가 작을 경우 페이지 크기가 클 경우

단편화와 주기억장치로 이동하는 시간 감소

불필요한 내용이 적재될 확률이 낮아 워킹 셋이 효율적으로 유지

 Locality에 더욱 일치하여 기억장치에 효율 상승

페이지 맵 테이블 크기가 커지므로 매핑 속도가 늦어짐

디스크 접근 횟수가 많아져 전체적인 입출력 시간이 늘어남

단편화와 주기억장치로 이동하는 시간이 증가

프로세스 수행에 불필요한 내용까지 적재될 수 있음

페이지 맵 테이블 크기가 작아지므로 매핑 속도가 빨라짐

디스크 접근 횟수가 줄어들어 전체적인 입출력 시간이 줄어듦

 

Locality

- 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론

- 스래싱을 방지하기 위한 워킹 셋 이론의 기반

- 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법

- 시간 구역성

    -> 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스 하는 현상

    -> 시간 구역성이 이루어지는 기억 장소 : 반복, 스택, 부프로그램, 1씩 증감, 집계에 사용되는 변수

- 공간 구역성

    -> 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상

    -> 공간 구역성이 이루어지는 기억 장소 : 배열 순회, 순차적 코드의 실행, 프로그래머들이 관련된 변수들을 서로 근처에 선언하여 할당되는 기억 장소

 

워킹 셋(Working Set) 

- 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합

- 자주 참조되는 워킹 셋을 주기억장치에 상주시켜 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정됨

- 워킹 셋은 시간에 따라 변화

 

페이지 부재 빈도 방식(Page Fault Frequency) 

- 페이지 부재 빈도는 페이지 부재가 일어나는 횟수

- 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임 수를 조정하여 적정 수준으로 유지하는 방식

- 운영체제는 프로세스 실행 초기에 임의의 페이지 프레임 할당 후 페이지 부재율에 따라 프레임을 할당하거나 회수

 

프리 페이징(Prepaging)

- 처음의 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 기법

 

스래싱(Thrashing) 

- 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상

- 다중 프로그래밍 시스템이나 가상 기억장치를 사용하는 시스템에서 하나의 프로세스 수행 중 자주 페이지 부재가 발생하면서 나타나는 현상

- 전체 프로세스 선응이 저하됨

- 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고 CPU의 이용률은 급격히 감소됨

- 스래싱 현상 방지 방법

    -> 다중 프로그래밍의 정도를 적정 수준으로 유지

    -> 페이지 부재 빈도를 조절하여 사용

    -> 워킹 셋 유지

    -> 부족한 자원 증설, 일부 프로세스 중단

    -> CPU 성능에 대한 자료의 지속적 관리 및 분석으로 임계치를 예상하여 운영

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함