RAM 사진
1. 주기억장치(Main Memory)
=주기억 장치란?
컴퓨터의 주요 구조는 크게 중앙처리장치(CPU),주기억장치,보조기억장치 및 입출력장치로 구분할 수 있습니다. 주기억장치는 프로그램을 기억하는 프로그램 영역과 입력자료를 기억하는 영역, 출력자료를 기억하는 영역, 작업을 실행하여 중간 계산 결과를 기억하는 작업 영역으로 구성되어 있습니다. 현주 주기억장치는 반도체 기억장치를 사용하며 전원이 끊어져도 기억된 내용이 보존되는 롬(ROM), 전원이 꺼지면 모든 내용이 지워지는 휘발성 메모리 램(RAM)으로 분류됩니다.
=주기억장치 관리전략
주기억장치의 관리를 위해 운영체제는 보조기억장치에 보관 중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 반입(Fetch) 전략/ 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 배치(Placement) 전략/ 주기억장치의 모든 영역이 이미 사용 중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 교체(Replacement) 전략을 사용합니다.
반입 전략은 실행프로그램이 요구할 때 적재하여 속도가 느린 요구반입 방법과 앞으로 요구될 가능성이 큰 데이터 또는 프로그램을 예상하여 주기억장치로 미리 옮기는 예상반입 방법이 존재 합니다.
배치 전략에는 적재 가능한 공간 중에서 첫번째 공간에 배치하는 최초적합(First Fit), 적재 가능한 공간 중 단편화가 가장 적은 공간에 배치하는 최적적합(Best Fit) 과 적재 가능한 공간 중 가장 큰 공간에 배치 하는 최악적합(Worst Fit)이 존재합니다. 최악적합을 사용하면 메모리를 낭비하는 결과를 가져오게 되지만 속도를 올릴수 있다는 장점도 존재합니다.
=단편화(Fragmentation)
분할된 주기억 장치에 프로그램을 할당하고 반납하는 과정을 반복하면서 사용되지 않고 남는 기억장치의 빈 공간 조작을 의미하며, 분할된 영역이 할당된 프로그램의 크기보다 크기 때문에 프로그램이 할당된 후 사용되지 않고 남게되는 빈공간을 내부 단편화라 하고, 분할된 영역이 할당될 프로그램의 크기보다 작기 때문에 프로그램이 할당 될 수 없어 사용되지 않고 빈 공간으로 남게 되는 영역을 외부 단편화라 합니다.
단편화를 해결하기 위해 주기억 장치 내에 인접해 있는 단편화된 공간을 하나의 공간으로 통합하는 통합(Coalescing)기법과 주기억장치내에 서로 떨어져 있는 여러개의 낭비 공간을 모아서 하나의 큰 기억 공간을 만드는 작업인 압축(Compaction)기법을 사용합니다.
=주기억장치 할당기법
주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한 순간에 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 단일 분할 할당 기법과 프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할 하고 준비상태 큐에서 준비 중인 프로그램을 각 영역에 할당하여 수행하는 고정 분할 할당 기법, 고정 분할 할당 기법의 단편화를 줄이위해 미리 주기억장치를 분할해 놓는 것이 아니라 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 가변 분할 할당 기법이 존재합니다.
단일 분할 할당기법에는 작업의 모든 부분들이 동시에 주기억 장소에 상주해 있을 필요가 없을 때 작업을 분할하여 필요한 부분만 교체하여 사용하는 오버레이 기법과 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 스와핑 기법이 존재합니다. 스와핑 기법과 오버레이 기법의 장점들을 모아 만들어진 기법이 가상메모리 기법입니다.
2. 가상기억장치(Virtual Memory)
=가상기억장치란?
주기억장치 안의 프로그램 양이 많아질 때, 사용하지 않는 프로그램을 보조기억장치 안의 특별한 영역으로 옮겨서, 그 보조기억장치 부분을 주기억장치처럼 사용할 수 있는데, 이때 사용되는 보조기억장치의 일부분을 가상기억장치라고 합니다. 프로그램을 여거 개의 작은 블록 단위로 나누어서 보관해 놓고, 프로그램 실행시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리하는 가상기억장치를 사용하면 주기억장치의 크기보다 큰 프로그램을 실행하기 위해 사용하며 주기억장치의 이용률과 다중프로그램의 효율을 높일 수 있습니다.
=블록 분할 방법
프로그램을 블록 단위로 분할 할때는 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜서 실행하는 페이징(Paging)기법과 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜서 실행시키는 세그먼테이션(Segmentation)기법으로 분류 할수 있습니다.
페이징기법은 프로그램을 일정한 크기로 나눈 단위를 페이지(Page)라고 하고, 페이지 크기로 일정하게 나누어진 주기억장치의 단위를 페이지 프레임(Page Frame)이라고 합니다. 페이징 기법을 사용하게 되면 외부 단편화는 발생하지 않지만 내부 단편화는 발생할수 잇습니다.
메인메모리의 용량이 45K 일떄 동일한 크기(7K)로 분할된 페이지를 주기억장치에 적재 시키면 마지막에 내부 단편화가 발생 세그먼테이션 기법은 배열이나 함수 등과 같은 논리적인 방법으로 분할한 방법입니다. 세그먼테이션 기법은 기억공간을 최대한 낭비없이 효율적으로 사용하기 위해서 사용됩니다. 세그먼테이션 기법은 페이징 기법과 반대로 내부 단편화는 발상해지 않지만 마지막에 외부 단편화가 1번 발생 할수도 있습니다. =페이지 교체 알고리즘 -최적교체(OPT, Optimal Replacement) : 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법으로 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘입니다. 하지만 각 페이지의 호출 순서와 참조 상황을 미리 예측해야 하므로 실현 불가능한 기법입니다. -FIFO(First In First Out) : 가장 간단하게 들어온 순서대로 나가는 선입선출 방법입니다. 초기에 쓰였던 알고리즘으로 설계가 간단하지만 프로세스에 할당된 페이지 프레임 수가 증가하면 페이지 부재의 수가 감소하는 것이 당연하시만 페이지 프레임 수가 증가할 때, 현실적으로 페이지 부재가 더 증가하는 모순적인 현상이 발생하는 기법입니다. -LUR(Least Recently Used) : 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법으로 각 페이지마다 계수기나 스택을 두어 현 시점에서 가장 오랫동안 사용하지 않은 페이지를 교체 하는 기법입니다. -NUR(Not Used Recently) : LRU와 비슷한 알고리즘으로 최근에 사용하지 않은 페이지를 교체하는 기법입니다. 최근의 사용 여부를 확인하기 위해 각 페이지 마다 참조비트와 변형비트 2개의 비트를 사용합니다. 참조비트와 변형 비트의 값에 따라 순서가 결정되고 페이지를 교체하는 기법입니다. -LFU(Least Frequently Used) : 사용빈도가 가장 낮은 페이지를 교체하는 기법입니다.
[출처] [운영체제] 6. 기억장치(주기억장치/가상기억장치)|작성자 보리
'Security > System' 카테고리의 다른 글
[07] 동기화 기법 (0) | 2015.08.17 |
---|---|
[06] 디스크 관리(디스크 스케줄링 기법) (0) | 2015.08.17 |
[04] 프로세스 교착상태 (0) | 2015.08.17 |
[03] Process Scheduling (0) | 2015.08.17 |
[02] 태스크(프로세스, 스레드)의 상태 전이도 (0) | 2015.08.17 |