Written by
xi-jjun
on
on
운영체제 - 21
KOCW 운영체제 21강
양희재 교수님 강의를 듣고 쓴 글입니다.
Paging
- external fragmentation
- 프로세스를 page으로 나눔
- 메모리를 frame으로 나눔.
Protection and Sharing
- protection : 해킹 등등 방지
- 모든 주소는 page table을 경유하기에 page table entry 마다
r, w, x
bit를 둬서 해당 page에 대한 접근 제어가 가능하다.
- 모든 주소는 page table을 경유하기에 page table entry 마다
- Sharing : 메모리 낭비 방지
- 같은 프로그램이 쓰는 복수개의 thread가 있다면, code영역은 공유 가능하다.
- 같은 프로세스에 대해 page table의 코드 영역이 같은 곳을 가리키게 한다 → 코드 영역을 공유함으로써 메모리 낭비 방지
Segmentation
- 프로세스를 논리적으로 잘라서 메모리에 배치.
- 프로세스는
segment
의 집합이다. segment
의 크기는 같지 않을 수 있다.
- 프로세스는
segment
를 memory에 할당- MMU 내의 relocate register의 값을 바꿔서 CPU는 프로세스가 연속된 메모리 공간에 위치한다고 착각하게 된다.
- MMU는
segment table
이 된다.
Segment table
이전 포스팅에서 했던 page table
과 흐름이 비슷하다. 대신에 크기가 일정하지 않기에 limit
가 필요하다.
MMU의 base, limit를 참고하여 메모리에 접근함을 알 수 있다. 접근하는 것은 paging 포스팅이랑 비슷하다. 하지만 limit
를 넘어서게 되면, Segment violation
으로 예외처리가 된다.
Protection and Sharing
- protection
- paging과 마찬가지로
segment table
마다r, w, x
bit 둬서 접근을 제어한다.
- paging과 마찬가지로
- Sharing
- paging과 비슷하다
Paging vs Segmentation
- Paging : 일정 크기로 잘라서 loading
- Segmentation : 논리적 크기로 잘라서 loading
근데 프로세스는 code, data, stack 영역으로 이뤄져 있다. 그 뜻은 paging같은 경우 code와 data영역이 동시에 존재하는 page가 생길 수 있다는 뜻이다. 따라서 논리적으로 분리하는 segmentation이 더 우월하다고 한다.
BUT!! 대부분의 OS는 paging을 쓴다고 한다. 자세한 이유는 다음 포스팅 때…