내부 단편화
기억 장치가 의도된 바 없이 할당될 때 일어난다. 공간이 낭비된다. "내부"라는 용어는 필요 없는 기억 자료가 할당된 영역 안에 있지만 쓰이지 않는 것을 말한다.
운영체제의 메모리 관리기법 중 페이징을 이용할 때 발생할 수 있다. 일정 크기의 페이지에 프로세스 할당시, 프로세스의 크기가 페이지보다 작을 경우 내부 단편화가 발생한다.외부 단편화
여유 공간이 여러 조각으로 나뉘는 현상을 말한다. 프로그램이 다양한 크기의 기억 장소의 남은 영역을 할당하고 할당을 해제할 때 일어나며, 할당 알고리즘이 약화된다. 비록 남은 기억 공간을 사용할 수 있지만, 조각이 너무 작게 나 있어서 응용 프로그램의 성능을 뒷받쳐 주지 못하기 때문에 효과적으로 사용하지 못하게 된다. "외부"라는 용어는 사용할 수 없는 기억 장소가 할당된 영역 밖에 있다는 것을 뜻한다.
프레임과 페이지는 메모리를 일정한 크기의 공간으로 나누어 관리하는 단위이며, 프레임과 페이지의 크기는 같다.
- 프레임(Frame) : 물리 메모리를 일정한 크기로 나눈 블록이다.
- 페이지(Page) : 가상 메모리를 일정한 크기로 나눈 블록이다.
어떤 프로세스가 현재 참조하고 있는 페이지가 주기억장치 내에 있다면 그 프로세스는 수행될 수 있다.
반대로 주기억장치 내에 없다면 그 해당 페이지를 보조기억장치로부터 읽어와서 페이지 프레임의 한 블록에 저장한다.
페이지 테이블(Page Table)은 프로세스의 페이지 정보를 저장하고 있으며, 하나의 프로세스는 하나의 페이지 테이블을 가진다.
논리 주소를 물리 주소로 변환된 결과를 page table을 사용해 관리
페이지 테이블은 (물리) 메인 메모리에 저장
페이지 테이블 엔트리 수는 논리 메모리의 페이지 개수 만큼
페이지 테이블 엔트리(Page Table Entry, 줄여서 PTE)는 페이지 테이블의 레코드이다.
PTE의 각 필드에는 일반적으로 다음 내용이 기록된다.
- 페이지 기본주소(Page base address)
- 플래그 비트
- 접근 비트(Accessed bit) : 페이지에 대한 접근이 있었는지를 나타낸다.
- 변경 비트(Dirty bit) : 페이지 내용의 변경이 있었는지를 나타낸다.
- 현재 비트(Present bit) : 현재 페이지에 할당된 프레임이 있는지를 나타낸다.
- 읽기/쓰기 비트(Read/Write bit) : 읽기/쓰기에 대한 권한을 표시한다.
- CPU에서 논리 주소 제공 |s(number) | d(offset)|
- 세그먼트 테이블을 찾아감(STBR) | segment length | page table base |
- d < segment length 확인
- d를 나눔 |p(number)|d'(page offset)|
- 해당 세그먼트의 페이지 테이블의 시작 위치를 찾음(page table base)
- page table base에서 p 위치에 f (frame number)를 찾음
- f + d'로 변환
No. | Key | Paging | Paging |
---|---|---|---|
1 | Memory Size | 페이징에서 프로세스 주소 공간은 페이지라고 하는 고정 크기 블록 | Segmentation에서 프로세스 주소 공간은 섹션이라고 하는 다양한 크기의 블록 |
2 | Accountability | 운영 체제는 메모리를 페이지로 나눔 | 컴파일러는 세그먼트 크기, 가상 주소 및 실제 주소를 계산 |
3 | Size | 페이지 크기는 사용 가능한 메모리에 의해 결정 | 섹션 크기는 사용자가 결정 |
4 | Speed | 페이징 기술은 메모리 액세스 측면에서 더 빠름 | 페이징보다 느림 |
5 | Fragmentation | 일부 페이지가 제대로 활용되지 않을 수 있으므로 페이징으로 인해 내부 조각화가 발생 | 분할은 일부 메모리 블록이 전혀 사용되지 않을 수 있으므로 외부 단편화를 유발 |
6 | Logical Address | 페이징하는 동안 논리 주소는 페이지 번호와 페이지 오프셋으로 나눈다. | 분할하는 동안 논리 주소는 섹션 번호와 섹션 오프셋으로 나눈다. |
7 | Table | 페이징하는 동안 논리 주소는 페이지 번호와 페이지 오프셋으로 나눈다. | 분할하는 동안 논리 주소는 섹션 번호와 섹션 오프셋으로 나눈다. |
8 | Data Storage | 페이지 테이블은 페이지 데이터를 저장. | 분할 테이블은 분할 데이터를 저장. |