정보보호론/시스템 보안

메모리(기억장치) 관리

retro_blue 2020. 10. 14. 01:32
반응형

■ 메모리(기억장치) 관리 전략

 - 기억장치를 관리하는 운영체제 일부를 기억장치 관리자(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