Aesthetic Algorithm

[혼공학습단] Week 6: 가상 메모리, 파일 시스템혼공학습단] Week 6: 가상 메모리, 파일 시스템 본문

Computer Science/컴퓨터구조&운영체제

[혼공학습단] Week 6: 가상 메모리, 파일 시스템혼공학습단] Week 6: 가상 메모리, 파일 시스템

미니튜링 2025. 8. 24. 23:00

🟪 이번 주 범위 🟪

Chapter 14. 가상 메모리

14-1. 연속 메모리 할당

14-2. 페이징을 통한 가상 메모리 관리

14-3. 페이지 교체와 프레임 할당

Chapter 15. 파일 시스템

15-1. 파일과 디렉터리

15-2. 파일 시스템

 


<이번 주 숙제>

1. 400p 1번

최초 적합 - 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식

최악 적합 - 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식

최적 적합 - 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식

 

2. 추가 숙제

Ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 ‘2313523423’일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기

 

 


Chapter 14. 가상 메모리

14-1. 연속 메모리 할당

✔️ 스와핑

✔️ 메모리에 프로세스를 할당하는 방식

✔️ 외부 단편화

 

 스와핑

현재 실행되지 않는 프로세스들을 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 생긴 메모리상 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식이다.

그 보조기억장치의 일부 영역을 스왑 영역, 스왑 영역으로 옮겨지는 것을 스왑 아웃, 다시 메모리로 옮겨오는 것을 스왑 인이라고 한다. 

스와핑을 이용하면, 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시 실행할 수 있다.

 

✅ 메모리 할당

프로세스는 메모리 내 빈 공간에 적재되어야 하는데, 메모리 내 빈 공간이 여러 개 있다면 프로세스를 어떻게 배치해야 할까?

3가지 방법이 있다:

 

1) 최초 적합

OS가 메모리 내 빈 공간을 순서대로 검색하다가, 공간을 발견하면 프로세스를 배치한다.

검색을 최소화할 수 있고 빠른 할당이 가능하다.

2) 최적 적합

OS가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식이다. 

3) 최악 적합

OS가 빈 공간을 모두 검색한 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식이다.

 

외부 단편화

연속 메모리 할당이 갖고 있는 문제로, 메모리에 여유 공간을 충분하나 작은 조각으로 흩어져 있어 프로세스가 연속된 공간을 확보하지 못하는 것이다. 프로세스 바깥에 생기는 이러한 빈 공간들은 비어 있지만 그보다 큰 프로세스를 적재하기 힘든 상황을 초래하며, 메모리를 낭비하게 된다.

이를 해결하기 위해서는, 메모리 내 프로세스를 한쪽으로 몰아 빈 공간을 모아주는 압축이 있다.

 

14-2. 페이징을 통한 가상 메모리 관리

✔️ 페이징이 왜 생겨났으며, 어떤 원리로 작동될까?

 

✅ 가상 메모리

실행하고자 하는 프로그램의 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 한다.

 

✅ 페이징

메모리의 물리 주소 공간을 프레임 단위로 자르고, 프로세스의 논리 주소 공간을 페이지 단위로 자른 뒤 각 페이지를 프레임에 할당하는 가상 메모리 관리 기법

 

페이징 시스템에서의 스왑 아웃은 페이지 아웃, 스왑 인은 페이지 인이라고 부른다.

한 프로세스를 실행하기 위해 프로세스 전체가 메모리에 적재될 필요는 없다는 것이다. 

 

✅ 페이지 테이블

페이지 번호와 프레임 번호를 짝지어 주는 역할을 한다. CPU가 페이지 번호만 보고도 해당 페이지가 적재된 프레임을 찾을 수 있게 해준다. 

프로세스마다 각자의 페이지 테이블을 갖고 있으며, 각 프로세스의 페이지 테이블들은 메모리에 적재된다.

CPU 내 페이지 테이블 베이지 레지스터(PTBR)는 각 프로세스의 페이지 테이블이 적재된 주소를 가리킨다.

그런데, 페이지 테이블을 메모리에 두면 메모리 접근 시간이 크게 늘어난다. 이를 해결하기 위해서는, TLB라는 캐시 메모리를 두어 페이지 테이블의 일부 내용을 저장할 수 있다.

CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우에는, 이를 TLB 히트라고 하며, 이 경우에는 메모리 접근을 1번만 하면 된다. 

 

✅ 페이징에서의 주소 변환

1개의 페이지, 프레임은 여러 주소를 포괄하고 있으며, 2가지 정보가 필요하다:

1) 어떤 페이지, 프레임에 접근하고 싶은지

2) 접근하려는 주소가 그 페이지나 프레임으로부터 얼마나 떨어져 있는지

 

따라서 페이징 시스템에서는 모든 논리 주소가 페이지 번호(접근하고자 하는 페이지 번호로, 페이지가 어떤 프레임에 할당되었는지 알 수 있다.)와 변위(접근하려는 주소가 프레임의 시작 번지로부터 얼만큼 떨어져 있는지를 알기 위한 정보)로 이루어져 있다. 

 

✅ 페이지 테이블 엔트리

페이지 테이블의 각 엔트리, 즉 각각의 행들을 페이지 테이블 엔트리라고 한다.

 

✅ 유효 비트: 해당 페이지에 접근 가능한지 여부를 알려줌

✅ 참조 비트: CPU가 이 페이지에 접근한 적 있는지 여부를 나타냄

✅ 수정 비트: 해당 페이지에 데이터를 쓴 적이 있는지 없는지 수정 여부로, 더티 비트라고도 부른다.