■ 메모리(기억장치) 관리 전략
- 기억장치를 관리하는 운영체제 일부를 기억장치 관리자(Memory Manager)라고 한다
- 기억장치 관리자는 기억장치의 어느 부분이 사용 중인지, 어느 부분이 사용되고 있지 않은지를 조사하고, 프로세스가 요구할 때마다 기억장치를 할당하고 사용이 끝나면 회수한다
1. 메모리(기억장치) 관리
ⓐ 단일 연속 주기억장치 관리
- 단일 연속 주기억장치 관리는 주기억장치에 운영체제 외에 한 개의 사용자 프로그램만 저장하는 관리 기법이다
- 이 기법에서는 주기억장치를 두 영역으로 나누어 한 영역에는 운영체제를 저장하고, 다른 영역에는 한 개의 사용자 프로그램을 저장한다
- 이런 방식은 한 순간에 오직 하나의 프로그램만 주기억장치에 저장되어 실행될 수 있는데, 이런 개념을 단일 프로그래밍이라 한다
ⓑ 분할 주기억장치 관리
- 최근 대부분의 시스템은 단일 프로그래밍이 아니라 다중 프로그래밍 방식으로 동작하여 여러 개의 프로세스를 주기억장치에 저장해서 동작 시킨다
- 이런 다중 프로그래밍을 지원하는 간단한 방법은 주기억장치를 n개의 영역으로 분할하여 각 영역에 서로 다른 프로세스를 동시에 저장하는 것이다
- 각 영역의 크기는 다르게 하는 것이 바람직하다
할당 방식 | 설명 |
최초 적합 (first fit) | 프로세스의 크기보다 큰 최초의 영역에 할당한다 |
최적 적합 (best fit) | 프로세스의 크기보다 큰 영역 중 가장 작은 영역에 할당한다 |
최악 적합 (worst fit) | 프로세스의 크기보다 큰 영역 중 가장 큰 영역에 할당한다 |
2. 스와핑
- 윈도우에서 메모리에 저장하는 것처럼 자주 사용되거나 방금 사용했던 프로그램을 하드디스크에 일정한 공간을 설정하여 그곳에 저장하는 기능
- 하드디스크 스와핑 공간은 윈도우에서 1개의 파일로 저장되며 메모리의 역할을 대신하게 되고, 이 파일은 지우거나 움직일 수 없는 파일 형태로써 메모리가 적은 개인용 컴퓨터(PC)는 스와핑 파일의 크기가 크고, 메모리가 넉넉한 PC는 스와핑 파일의 크기가 작아진다
3. Swap Space = Swap File
- 스왑파일은 컴퓨터의 실제 메모리, 즉 램의 가상 메모리 확장으로 사용되는 하드디스크상의 공간이다
- 스왑파일을 가짐으로써 컴퓨터 운영체제는 실제보다 더 많은 양의 램을 가지고 있는 것처럼 동작할 수 있다
- 팸에 있는 것 중 가장 오래 전에 사용되었던 파일들은 새로운 파일이 램에 들어올 수 있는 공간을 내주기 위해 다시 필요해질 때까지 하드디스크로 스왑된다
★ 장점
- 스왑파일이 하나의 연속된 공간으로 구성될 수 있게 됨으로써, 보다 적은 회수의 입ㆍ출력 연산으로도 한 개의 파일을 완전히 읽거나 쓸 수 있게 된다
- 실제 메모리가 부족할 경우 디스크 부분을 마치 메모리처럼 사용할 수 있다. 즉 메모리가 부족할 때 사용할 수 있는 하드디스크 공간이다
★ Swap 관련 명령어
① swap 공간 확인 : /etc/vfsab (본 파일로 Swap 공간 할당을 확인함)
② swap -l : swap space list 표시
③ swap -a : space 추가
④ swap -d : swap space 삭제
■ 메모리 할당
1. 정적 메모리 할당
- 정적 메모리 할당은 메모리 할당 방법 중의 하나로, 메모리의 크기가 하드 코딩되어 있기 때문에 프로그램이 실행될 때 이미 해당 메모리의 크기가 결정되는 것이 특징이다
ㆍ장점 : 해제하지 않음으로 인한 메모리 누수와 같은 문제를 신경 쓰지 않아도 된다. 정적 할당된 메모리는 실행 도중에 해제되지 않고 프로그램이 종료할 때 알아서 운영체제가 회수한다
ㆍ단점 : 메모리의 크기가 하드 코딩되어 있어서 나중에 조절할 수 없다. 스택에 할당된 메모리이므로 동적 할당에 비해 할당받을 수 있는 최대 메모리에 제약을 받는다
2. 동적 메모리 할당
- 동적 메모리 할당 또는 메모리 동적 할당은 컴퓨터 프로그래밍에서 실행 시간 동안 사용할 메모리 공간을 할당하는 것을 말한다. 사용이 끝나면 운영체제가 쓸 수 있도록 반납하고 다음에 요구가 오면 재할당을 받을 수 있다. 이것은 프로그램이 실행하는 순간 프로그램이 사용할 메모리 크기를 고려하여 메모리의 할당이 이루어지는 정적 메모리 할당과 대조적이다
- 동적으로 할당된 메모리 공간은 프로그래머가 명시적으로 해제하거나 쓰레기 수집이 일어나기 전까지 그대로 유지된다. C/C++과 같이 쓰레기 수집이 없는 언어의 경우, 동적 할당하면 사용자가 해제하기 전까지는 메모리 공간이 계속 유지된다
ㆍ장점 : 상황에 따라 원하는 크기만큼의 메모리가 할당되므로 경제적이며, 이미 할당된 메모리라도 언제든지 크기를 조절할 수 있다
ㆍ단점 : 더 이상 사용하지 않을 때 명시적으로 메모리를 해제해 주어야 한다
■ 메모리 관리 정책
- 메인 메모리는 운영체제를 위한 영역과 실행 중인 프로그램을 위한 영역으로 구분된다
- 다중 프로그래밍 시스템에서는 운영체제에 의해 동적으로 메모리의 사용자 영역을 여러 프로세스가 상주할 수 있도록 세분화하는 과정이다
※ 메모리 관리 기법의 종류
기법 | 설명 | 정책 |
반입(Fetch) 정책 | - CPU로 실행하거나 참조하기 위해 주기억장치에 적재할 다음 프로그램이나 자료를 언제(When) 메모리로 적재할 것인지 결정하는 전략이다 - 메인 메모리에 적재할 다음 프로세스의 반입시기를 결정한다 |
- 요구반입 기법 - 예상반입 기법 |
배치(Placement) 정책 | - 새로 반입된 자료나 프로그램을 주기억장치의 어디(Where)로 위치시킬 것인지 결정하는 전략이다 - 디스크에서 반입한 프로세스를 메인 메모리의 어느 위치에 저장할 것인지를 결정하는 방법이다 |
- 최초 적합 (first fit) - 최적 적합 (best fit) - 최악 적합 (worst fit) |
교체(Replacement) 정책 | - 새로 들어온 프로그램이 들어갈 장소를 마련하기 위해 메모리의 어느 영역(What)을 교체하여 사용할 것인지 결정하는 전략이다 - 교체(Replacement) 정책은 페이지 부재가 발생하면 운영체제가 들어올 페이지의 공간을 만들어 주기위해 주기억장치에서 제거할 페이지를 선택하는 정책이다 |
- 프로세스 Swap In/Out |
① 요구 반입 정책 (Demand Fetch Strategic) : 프로그램이나 자료가 이용되는 시점에 그것을 주기억장치로 옮기는 기법으로, 수행 중인 프로세서를 통해 특정 페이지나 세그먼트를 주기억장치로 이동한다
② 예상 반입 정책 (Anticipatory Fetch Strategic) : 현 프로그램 수행 중에 앞으로 요구될 가능성이 큰 자료 또는 프로그램을 예상하여 주기억장치로 미리 옮기는 방법이다
③ 최초 적합 (First Fit) : 첫 번째 사용 가능한 가용 공간을 할당한다
④ 최적 적합 (Best Fit) : 사용 가능한 공간들 중에서 가장 작은 것을 택한다
⑤ 최악 적합 (Worst Fit) : 가장 큰 가용 공간을 택한다
■ 페이지 교체 기법
- 페이지는 주기억장치의 물리적 용량을 구분하는 단위
- 주기억장치와 보조기억장치 사이의 전송 단위를 나타내며, 한 페이지는 물리적 기억장소의 한 블록에 해당하며, 대개 1kB, 2kB, 4kB의 크기를 갖는다
ⓐ 선입선출 (FIFO : First-In-First-Out)
- 디스크 스케줄링 정책 중 큐의 항목을 순차적으로 처리하는 방식이다
- 스케줄링의 가장 간단한 형태는 선입선처리(FIFO : First-In-First-Out)이다. 이를 사용하면 요청 큐에 먼저 도착한 요청이 우선적으로 서비스 받게 된다
ⓑ 최소 사용 빈도 (LFU : Least Frequently Used) 기법
- 각 페이지들이 얼마나 자주 사용되었는가에 중점을 두어 참조 횟수가 가장 적은 페이지를 대체시키는 기법이다
ⓒ OPT (Optimal) 기법 (=Belady의 MIN 기법)
- 최적의 성과를 올리기 위해서 앞으로 가장 오랫동안 사용되지 않을 페이지를 대체하는 기법으로, 가장 효율적이지만 구현이 불가능하다
ⓓ 최저 사용 빈도 (LRU : Least Recently Used) 기법
- 페이지가 호출되면 현 시점에서 가장 오랫동안 사용하지 않는 페이지를 교체할 페이지로 선택한다(LRU 기법의 기준은 사용 횟수가 아니고 미사용 기간이다)
- 각 페이지의 사용기간을 기억해 두어야 하므로 Overhead가 크다
ⓔ 최근 미사용 페이지 교체 (NUR : Not Used Recently) 기법(=Page Classes)
- 최근에 쓰이지 않은 페이지들은 가까운 장래에도 쓰이지 않을 가능성이 있으므로 이러한 페이지들을 자주 호출되는 페이지들과 교체하는 것으로써, 적은 오버헤드로 LRU에 근사하며 실제로 자주 쓰이는 기법의 하나이다
■ 자료구조
1. SSTF 알고리즘
- SSTF 알고리즘은 현재 헤드 위치에서 출발하여 탐색 시간이 가장 적은 요청을 선택한다. 즉 SSIF는 대기 중인 요청 중에서 현재의 헤드위치와 가장 가까운 요청을 선택한다
2. SCAN 알고리즘
- SCAN 알고리즘은 디스크 암(Disk Arm)이 디스크의 한 끝에서 시작하여 다른 끝으로 이동하며 가는 길에 있는 요청을 모두 처리한다
3. C-SCAN(Circular-SCAN)
- C-SCAN(Circular-SCAN) 스케줄링은 각 요청에 걸리는 시간을 좀 더 균등하게 하기 위한 SCAN의 변형이다. C-SCAN은 SCAN과 같이 한쪽 방향으로 헤드를 이동해 가면서 요청을 처리하지만, 한쪽 끝에 다다르면 반대방향으로 헤드를 이동하며 서비스하는 것이 아니라 처음 시작했던 자리로 되돌아가서 서비스를 시작한다
'정보보호론 > 시스템 보안' 카테고리의 다른 글
스래싱 (Thrashing) (0) | 2020.10.14 |
---|---|
프로세스 동기화 (0) | 2020.10.14 |
CPU 스케줄링 (CPU Scheduling) (0) | 2020.10.13 |
프로세스 관리 (0) | 2020.10.13 |
운영체제의 기술 발전 흐름과 입ㆍ출력 방식 (0) | 2020.09.16 |