운영체제의 대표적인 할 일 중 하나 : 메모리 관리 = 컴퓨터 내의 한정된 메모리를 극한으로 활용
1. 가상 메모리(virtual memory) : 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것 (메모리 관리 기법의 하나)

- 가상 주소(logical address) : 가상적으로 주어진 주소
- 실제 주소(physical address) : 실제 메모리 상에 있는 주소
-> 가상 메모리는 메모리관리장치(MMU)에 의해 실제 주소로 변환됨 (= 사용자 : 실제 주소를 의식할 필요 없이 프로그램 구축 가능)
- 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고, 프로세스의 주소 정보가 들어 있는 '페이지 테이블'로 관리됨
* TLB(속도 향상을 위해 사용) : 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시. 페이지 테이블에 있는 리스트를 보관하며 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시킬 수 있는 캐시 계층
1) 스와핑(swapping) : 당장 사용하지 않는 영역을 하드디스크로 옮기고 하드디스크의 일부분을 마치 메모리처럼 불러와 쓰는 것
-> 페이지 폴트가 일어나지 않은 것처럼 만듦
2) 페이지 폴트(page fault) : 프로세스의 주소 공간에는 존재하지만 지금 이 컴퓨터의 RAM에는 없는 데이터에 접근했을 경우에 발생
- 페이지 : 가상 메모리를 사용하는 최소 크기 단위
- 프레임 : 실제 메모리를 사용하는 최소 크기 단위
2. 스레싱(thrashing) : 메모리의 페이지 폴트율이 높음 -> 컴퓨터의 심각한 성능 저하 초래

1) 작업 세트(working set) : 지역성(locality, 프로세스의 과거 사용 이력)을 통해 결정된 페이지 집합을 만들어서 미리 메모리에 로드
-> 탐색에 드는 비용, 스와핑 줄일 수 있음
2) PFF(Page Fault Frequency) : 페이지 폴트 빈도를 조절하는 방법, 상한선과 하한선을 만듦
-> 상한선에 도달한다면 프레임을 늘리고, 하한선에 도달한다면 프레임을 줄임
3. 메모리 할당 : 메모리에 프로그램을 할당할 때 - 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당
1) 연속 할당 : 메모리에 연속적으로 공간을 할당
- 고정 분할 방식
- 가변 분할 방식
* 내부 단편화
* 외부 단편화
* 홀(hole)
2) 불연속 할당 : 메모리를 연속적으로 할당x, 현대 운영체제가 쓰는 방법
- 페이징(paging)
- 세그멘테이션(segmentation)
- 페이지드 세그멘테이션(paged segmentation)
4. 페이지 교체 알고리즘
- 오프라인 알고리즘 : 먼 미래에 참조되는 페이지와 현재 할당하는 페이지를 바꾸는 알고리즘, 이론적으로 가장 좋으나 현실에서 사용x
(다른 알고리즘과의 성능 비교에 대한 기준 제공)
- FIFO : 가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓는 방법
- LRU(Least Recentle Used) : 참조가 가장 오래된 페이지를 바꿈
- NUR(Not Used Recently) : LRU에서 발전
- LFU(Least Frequently Used) : 가장 참조 횟수가 적은 페이지를 교체 (=많이 사용되지 않은 것을 교체)
'CS > 운영체제' 카테고리의 다른 글
| [OS]CPU 스케줄링 알고리즘 (1) | 2023.12.23 |
|---|---|
| [OS]컴퓨터의 요소: CPU(CU, ALU, Register), DMA Controller, Memory, Timer, Device Controller (0) | 2023.12.15 |
| [OS]운영체제의 역할, 구조 (0) | 2023.12.14 |