오래 못 할 짓 하지 않기
[ 운영체제 ] 22. Page / Frame 본문
외부 단편화의 이유
: 각기 다른 크기의 프로세스가 메모리에 연속적으로 할당되어서
▶ 모든 크기가 같았으면 발생하지 않음
= 그럼 같게 해주자
● 프로세스의 논리 주소 공간을 페이지(page)라는 일정 단위로 자르고
[ 프로세스 공간 → 페이지 ]
● 메모리의 물리 주소 공간을 프레임이(frame)라는 페이지와 동일,일정한 단위로 자른 뒤
[ 메모리의 공간 → 프레임 ]
페이지와 프레임 사이에서 매핑하는 걸 도와주는 Page Table이 있다.
: Physical address의 공간이 연속적이지 않아도 되고, frame은 모두 같은 크기이므로
● 효과 : 외부 단편화 문제를 해결한다!
page = logical address
p는 logical address를 나타내기 위해서 몇 비트가 필요한지.
d 는 하나의 p 블럭에서 얼마나 많은 칸들이 있는지
- Page number
: 책으로 치면 몇 번째 책인지
정확히 말하면 여기에는 Page의 값이 들어가고
page table에 의해 매핑되는 Frame에 값으로 바꿔서
▼ 밑에 있는 offset과 함께 메모리로 들어가는 것이다!
- Page offset
: 책으로 치면 몇 번째 페이지인지
p(age)를 통해서 page table로 가서 frame을 찾는다.
그럼 그 frame으로 바꿔서 offset과 함께 physical memory 주소를 찾아간다.
예1)
예2) 2^n의 page가 있고, 하나의 page는 2^m 개수만큼 자리가 있다.
Free Frames
Process 가 시스템에 실행되려고 들어왔을 때
여유로운(사용 가능한) frame list를 받은 뒤에.
해당 frame에 process가 들어가는 page에 맞게 들어간다.
(사실 위에 있었던 내용들이랑 다 같은 내용임)
PTBR
Page Table Base Register
[ 배경 ]
프로그램의 규모가 커진다 → 페이지 테이블도 같이 커진다.
그럼 내가 원하는 페이지 테이블도 찾기가 힘들어진다.
더군다나 Context switch가 일어날 때마다 Page table도 계속 변하기 때문에
참조하려면 너무 복잡해진다.
[ 해결 방법 ]
메모리에서 페이지 테이블의 시작 번지 주소를 가리키는 Register를 둔다.
= PTBR : Page Table Base Regiser
[ 단점 ]
- Memory 에 두 번 Access해야한다.
1. 페이지 테이블
2. data/instruction
메모리에 있는 페이지 테이블에 접근해서 몇 번 Frame에 데이터가 있는지 확인한다.
▶ 해당 Frame으로 접근해서 데이터를 가져온다.
TLB
Translation Look-aside Buffer
TLB는 Hardware Access(+Cache) 라서 그나마 더 빠름
Table에 접근해서 매핑해야 하는 것들을
다 매핑해놓은 Buffer로 대체한다.
- TLB Hit
= 접근하고자 하는 page가 TLB에 있는 경우
- TLB Miss
= 접근하고자 하는 page가 TLB에 없는 경우
- Hit ratio
= TLB에 우리가 찾고자 하는 게 있을 확률
Effective Access Time
데이터 TLB에 있으면 = 10ns
없 = 20ns
- Hit ratio가 80%라면 EAT는?
- 90% ?
Memory protection
Memory가 제대로 쓰이는지 확인하기 위해서 Valid/Invail를 확인하는 bit를 하나 추가한다.
- Valid하다면, 해당 page는 logical address에 있다고 한다.
- Invalid하다면 , 해당 page는 logical address에 있지 않다.
page #가 memory에 access하려고 page table로 갔는데
6,7번쪽으로 access해서 가려면 invalid하므로 memory 접근이 되지 않는다.
이렇게 해서 Memory를 정해진 page table에서만 접근하게 하여 Protection한다.
Shared Pages
C코드에서 Lib파일같은 경우에는 여러 process들이 접근할 수 있고
실행 시간동안은 변할 일이 절대 없다는 특징이 있다. = Reentrant code
이러한 코드들을 Shared page로 두는데,
각 프로세스들의 Page table Entry를 보면
모두가 가리키는 게 같다.
Physical memory에는 한 번만 저장하고
Logical address로 Copy하여 여러 프로세스에서 가지고 있는 것이다.
(= page )
(출처)
한동대학교 고윤민교수님 - 운영체제
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 24. Virtual memory (0) | 2024.05.28 |
---|---|
[ 운영체제 ] 23. Page Table / Swapping (0) | 2024.05.24 |
[ 운영체제 ] 21. Main memory (0) | 2024.05.20 |
[ 운영체제 ] 20. Deadlock 예방/회피/감지 , Recovery (0) | 2024.05.16 |
[ 운영체제 ] 19. DeadLock (0) | 2024.05.10 |