일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인사이드아웃
- 해시
- 자바스크립트
- javascript
- 웅진씽크빅
- #프로젝트캠프 #프로젝트캠프후기 #유데미 #스나이퍼팩토리 #웅진씽크빅 #인사이드아웃 #IT개발캠프 #개발자부트캠프 #리액트 #react #부트캠프 #리액트캠프
- 리액트
- typescript
- 메모리
- 타입스크립트
- CS
- Algorithm
- 유데미
- 스나이퍼팩토리
- 네트워크
- cs #네트워크
- react-query
- 프로세스
- BFS
- ip
- html
- React.js
- IT개발캠프
- 개발자부트캠프
- 스레드
- App Runner
- react
- 프로젝트캠프
- 알고리즘
- 프로그래머스
- Today
- Total
Bin's Blog
오늘의 CS(메모리 - 메모리 관리(상)) 본문
운영체제의 대표적인 할 일 중 하나가 메모리 관리이다. 컴퓨터 내의 한정된 메모리를 극한으로 활용해야 하는 것이다.
가상 메모리
가상 메모리(Virtual Memory)는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다.

이때 가상적으로 주어진 주소를 가상 주소(local address)라고 하며, 실제 메모리상에 있는 주소를 실제 주소(phsyical address)라고 한다. 가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환되며, 이 덕분에 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있게 된다.
가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어 있는 "페이지 테이블"로 관리한다. 이때 속도 향상을 위해 TLB를 쓴다.
스와핑
만약 가상 메모리에는 존재하지만 실제 메모리인 RAM에는 현재 없는 데이터나 코드에 접근할 경우 페이지 폴트가 발생한다.
이때 메모리에서 당장 사용하지 않는 영역을 하드디스크로 옮기고 하드디스크의 일부분을 마치 메모리처럼 불러와 쓰는 것을 스와핑이라고 한다. 이를 통해 마치 페이지 폴트가 일어나지 않은 것처럼 만든다.
페이지 폴트
페이지 폴트(page fault)란 프로세스의 주소 공간에는 존재하지만 지금 이 컴퓨터의 RAM에는 없는 데이터에 접근했을 경우에 발생한다. 페이지 폴트와 그로 인한 스와핑은 다음 과정으로 이루어진다.
1. CPU는 물리 메모리를 확인하여 해당 페이지가 없으면 트랩을 발생해서 운영체제에 알린다.
2. 운영체제는 CPU의 동작을 잠시 멈춘다.
3. 운영체제는 페이지 테이블을 확인하여 가상 메모리에 페이지가 존재하는지 확인하고, 없으면 프로세스를 중단하고 현재 물리 메모리에 비어 있는 프레임이 있는지 찾는다. 물리 메모리에도 없다면 스와핑이 발동된다.
4. 비어 있는 프레임에 해당 페이지를 로드하고, 페이지 테이블을 최신화한다.
5. 중단되었던 CPU를 다시 시작한다.
스레싱
스레싱(thrashing)은 메모리의 페이지 폴트율이 높은 것을 의미하며, 이는 컴퓨터의 심각한 성능 저하를 초래한다.

스레싱은 메모리에 너무 많은 프로세스가 동시에 올라가게 되면 스와핑이 많이 일어나서 발생한다. 페이지 폴트가 일어나면 CPU 이용률이 낮아진다.
CPU 이용률이 낮아지게 되면 운영체제는 "CPU가 한가한가?"라고 생각하며 가용성을 높이기 위해 더 많은 프로세스를 메모리에 올리게 된다. 이와 같은 악순환이 반복되며 스레싱이 일어나게 된다.
이를 해결하기 위한 방법으로는 메모리를 늘리거나, HDD를 사용한다면 HHD를 SSD로 바꾸는 방법이 있다. 이외에 운영체제에서 이를 해결할 수 있는 방법은 작업 세트와 PFF가 있다.
작업 세트
작업 세트는 프로세스의 과거 사용 이력인 지역성을 통해 결정된 페이지 집합을 만들어서 미리 메모리에 로드하는 것이다. 미리 메모리에 로드하면 탐색에 드는 비용을 줄일 수있고 스와핑 또한 줄일 수 있다.
PFF
PFF(Page Fault Frequency)는 페이지 폴트 빈도를 조절하는 방법으로 상한선과 하한선을 만드는 방법이다. 만약 상한선에 도달한다면 프레임을 늘리고 하한선에 도달한다면 프레임을 줄이는 것이다.
📚용어 정리
1️⃣ TLB
메모리 CPU 사이에 있는 주소 변환을 위한 캐시이다. 페이지 테이블에 있는 리스트를 보관하며 CPU가 페이지 테이블까지 가지 않도록 해 속도 향상시킬 수 있는 캐시 계층이다.
2️⃣ 페이지
가상 메모리를 사용하는 최소 크기 단위
3️⃣ 프레임
실제 메모리를 사용하는 최소 크기 단위
'CS' 카테고리의 다른 글
오늘의 CS(프로세스와 스레드 - 1편) (0) | 2023.09.14 |
---|---|
오늘의 CS(메모리 - 메모리 관리(하)) (0) | 2023.09.12 |
오늘의 CS(메모리 - 메모리 계층) (0) | 2023.08.29 |
오늘의 CS(운영체제와 컴퓨터- 컴퓨터의 요소) (0) | 2023.08.28 |
오늘의 CS(운영체제와 컴퓨터- 운영체제의 역할과 구조) (0) | 2023.08.25 |