6주차 (2/5 ~ 2/12)
chapter. 14 : 가상 메모리
chapter. 15 : 파일 시스템
➡️ 운영체제의 핵심 서비스 : 자원 접근 및 할당 - 메모리
1.메모리크기(물리적 크기)는 정해져 있다.
2.프로세스는 메모리 빈 공간에 적재된다.
🫠 메모리에 빈 공간이 없을 경우 새로운 프로세스 실행되려면 어떻게 해야하는가? 고정된 메모리 공간에 여러개의 프로세스 동시에 실행하려면 어떻게 해야 하는가?
📌 스와핑(Swapping)
메모리에서 당장 필요로 하지 않는 프로세스는 빼고
, 당장 필요한 프로세스를 메모리에 적재
하여 메모리의 공간을 활용하여 프로세스 적재하는 방법을 스와핑이라고 한다.
당장 필요로 하지 않는 프로세스는 뺀다
필요한 프로세스를 메모리에 적재
: 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것을 말한다.예를 들어 프로세스 A는 메모리 주소 10번지에서 50번지까지 할당, 프로세스 B는 메모리 주소 60번지에서 110번지까지 할당된다.
메모리 내 빈공간이 여러개 있다면 프로세스 어디에 배치해야 하나?
✔️ 최초 적합(first fit)
✔️ 최적 적합(best fit)
✔️ 최악 적합(wortst fit)
메모리 연속 할당에 따른 한계
외부 단편화란?
프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인하여 메모리가 낭비되는 현상
🫠 예를 들어 프로세스들 사이에 두 개의 빈 공간이 생겼다. 하나는 20MB크기의 빈 공간, 다른 하나는 30MB크기의 빈 공간이다.
이때, 50MB의 프로세스 적재할 수 있나?
적재 할 수 없다. 그러므로 그 공간들이 낭비된다.
✔️ 연속 메모리 할당의 한계
1. (물리)메모리보다 큰 프로세스 실행 할 수 없음
2. 외부 단편화
일부만 가져와서 메모리에 적재
하는 기술 1. 페이징이란?
가상 메모리 관리 기법 중 하나로,
✔️
메모리와 프로세스를 일정한 단위로 자르고
✔️ 이를 메모리에불연속적으로 할당
하는 방식
페이지 : 프로세스의 논리 주소 공간을 자르는 단위
프레임 : 메모리 물리 주소 공간을 페이지와 같은 크기로 자른 단위
2. 연속 메모리 할당의 한계 극복
✔️ 메모리와 프로세스를 일정한 단위로 자르고
➡️ 외부단편화 극복
➡️ 메모리보다 큰 프로세스도 실행 가능
페이징기법의 특징 중 하나인 메모리에 불연속적으로 할당
한다는 점 때문에 CPU 입장에서 '다음에 실행할 명령어 위치'찾기 어려움
📌 페이지 테이블
✔️ 하지만 이때, CPU가 페이지 테이블로 인해 메모리 접근 시간이 두배로 늘어나는 문제 발생함
📌 TLB
: 페이지 테이블의 캐시메모리 역할을 수행하기 위해 TLB(Transalation Lookaside Buffer)에는 페이지 테이블의 일부를 가져옴
: 참조 지역성에 근거해 주로 최근에 사용된 페이지 위주로 가져와 저장
✔️ 페이지 =논리주소
, 프레임 = 물리주소
로 보면
CPU가 메모리와 상호작용해서 프로세스 실행하려면 논리주소(페이지)를 물리주소(프레임)로 변환하는 과정 거처야 한다.
고려사항
논리주소 구성<페이지 번호, 변위>
물리주소 구성<프레임 번호, 변위>
참고 : Chapter 6. 메모리의 주소공간(p. 188)에서 학습한 것과 같은 개념
페이지 테이블을 구성하는 행들
✔️ 페이지 테이블 엔트리에 들어가는 정보
1 페이지 번호
2 프레임 번호
3 유효 비트
현재 해당 페이지에 접근 가능한지 여부 알려줌
✔️ 페이지 폴트(page fault)
예외(exception) : CPU가 유효비트가 0인 메모리에 적재되어 있지 않은 페이지로 접근하려 할 때 발생
✔️ 페이지 폴트 처리과정
1. CPU는 기존의 작업 내역 백업
2. 페이지 폴트 처리 루틴 실행
3. 페이지 처리 루틴은 원하는 페이지를 메모리로 가져온 뒤 유효비트를 1로 변경해 줌
4. 페이지 폴트를 처리했다면 이제 CPU는 해당 페이지에 접근할 수 있음
4 보호 비트
페이지 보호 기능
5 참조 비트
CPU가 페이지에 접근한 적 있는지 여부 나타냄
6 수정 비트
해당 페이지 데이터를 쓴 적 있는지 여부 나타냄.
페이지가 메모리에서 사라질 때, 보조기억장치에 쓰기 작업을 해야 하는지, 할 필요가 없는지 판단하기 위해 필요
요구페이징(demand paging)이란?
프로세스를 메모리에 적재할 때 필요한 페이지만 메모리에 적재
하는 기법
요구페이징 시스템 안정적 작동을 위한 전제
페이지 폴트 적게 발생하여야 한다.
✔️ 페이지 폴트(page fault)
유효비트가 0인 상태로 CPU가 접근하려는 페이지가 현재 메모리에 적재되어 있지 않음을 나타냄. 보조기억장치에서 페이지를 가져와야 해서 컴퓨터 성능 저하됨
페이지교체 : 필요없는 페이지 보조기억장치로 보낸다.
프레임 할당 : 충분한 메모리공간(프레임) 확보. 최소 프레임 유지해야 한다.
필요없는 페이지 보조기억장치로 보낼 때(페이지 교체), 어떤 페이지를 보낼 지 결정하는 방식
가정
프레임 갯수 : 3개
페이지 참조열 : 2 3 1 3 5 2 3 4 2 3
페이징 교체가 빈번히 일어나느 것을 막기 위해 충분한 메모리공간(프레임)가지는 방식, 즉 최소한의 프레임 수를 유지하는 방식
스레싱(thrashing)
: 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제
p. 400의 확인 문제 1번 풀고 인증하기
Ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423' 일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기
3번의 페이지 폴트 발생
LRU(Least Recently Used Page Replacement Algorithm) 교체 알고리즘 :
페이지마다 가장 마지막으로 사용한 시간을 토대로 최근에 가장 사용이 적었던 페이지
를 교체하는 방식
페이지 참조열 2-3-1-3-5-2-3-4-2-3
프레임(2,3,1)
프레임(5,3,1) : 페이지 폴트 5 - 보조기억장치 : 2
프레임(5,3,2) : 페이지 폴트 2 - 보조기억장치 : 1
프레임(4,3,2) : 페이지 폴트 4 - 보조기억장치 : 5