- 정리의 기반은 학교 강의 노트와 [Operating System Concepts]를 참고하였습니다.
22-1학기 운영체제를 들으면서 중간고사에 대비하면서 정리해놓은 개념들입니다…ㅎ 다른 핵심 내용이나 기본이라고 생각되는 내용들은 제외하고 제가 시험에서 중요하다고 생각하는 것들만 중구난방으로 정리되어있습니다.
Virtual Memory(가상 메모리)
물리 메모리 크기보다 더 큰 프로세스를 수행하기 위해 만듦
목적
- Transparency : 이 메모리를 내가(프로세스) 혼자 쓰는 것 같은 착각을 하도록, 프로그래밍을 위해 다른 프로그램을 실행하지 않은 것처럼 생각하도록.
- Effieciency : 단편화 최소화, 하드웨어 도움
- Protection : 프로세스 실행을 독립적으로 하기 위해
- 각각의 프로세스는 각각의 가상 주소 공간이 있음
- Address translation은 run time에 실행
- 프로그램이 자신에게 필요한 메모리 공간만 할당 받도록 도와줌
Static Relocation
- software 기반
- os가 프로그램을 메모리 주소에 맞게 재작성하여 메모리에 옮김
- 장점 : 하드웨어 지원이 필요 없다
- 단점 : Protection 없음, 주소 공간 이동 불가(메모리 주소에 맞게 프로그램을 재작성하기 때문에)
Dynamic Relocation
- hardware 기반
- MMU가 주소 변환
- Protection 가능
- 활용 기술
- Fixed partitions
- Variable partitions
- Segmentation
- Paging
1. Fixed Partitions
- Physical Memory가 똑같은 크기로 나뉜다. = partitions
- Partition의 수 = degree of 멀티 프로그래밍
- base register(하드웨어) 필요
- Physical 주소 = virtual 주소 + base register
- 장점 : 구현 쉬움, context switch 빠름
- 단점 : 내부 단편화, partition 크기가 똑같아서 모든 프로그램을 실행할 순 없음
내부 단편화 : partition의 크기가 50MB인데 거기에 적재된 프로세스가 40MB이면, parition이 10MB만큼 남는다. 이 공간은 다른 작업이 사용하기에 작기 때문에, 그대로 낭비된다.
외부 단편화 : 나눠진 partition의 크기가 50MB인데, 적재되어야할 프로세스의 크기는 100MB이면, 메모리가 비어있음에도, 적재가 되지 못하는 것
2. Variable Partitions
- 프로세스에 필요한 만큼만 할당
- base register + limit register(protection을 위해) 필요
- 장점 : 구현 쉬움, 저비용, 내부 단편화 x
- 단점 : 메모리에 순차적으로 인접하여 올라감, 외부 단편화, share 불가능
3. Segmentation
- 프로세스를 logical하게 나눔 -> Physical Memory에 각각의 위치에 올림
- ex) code, data, stack, heap 등 (각각 독립적)
- virtual address : <Segment #, offset>
- 첫 일정 bit는 segment 구분자
- virtual 주소를 limit register로 다른 segment를 침범하는지 확인
- limit register를 통과하면 base register에 가상 주소를 더해서 physical memory에서 찾는다
- 장점
- 주소 공간 할당의 분리 가능
- segment 보호 쉬움
- segment 공유 쉬움
- 각 segment의 동적 할당 지원
- 단점
- 각 segment는 연속 할당된다
- segment 테이블의 크기도 적지 않게 메모리를 잡아먹는다
- segment pointer를 공유하려면 segment 번호가 동일해야 한다.
4. Paging
- logical메모리와 physical을 동일한 크기로 자른다.(page)
- logical메모리에서의 잘라진 부분을 page, physical메모리에서의 잘라진 부분을 frame이라고 부른다. 이 둘의 크기는 같다.
- 연속 할당 x
- 페이지의 크기는 2^n
- page table 필요
os가 관리하며, 각 페이지마다 PTE(page table entry)가 한개 있다
PTE 구성요소
- Valid bit : PTE가 사용 가능한지 여부 알려줌
- Reference bit : page에 access 되었는지 여부 알려줌
- Modify bit : page의 dirty 여부 알려줌
- Protection bit : 명령 수행 통제
- PFN : Frame 결정
- Valid bit : PTE가 사용 가능한지 여부 알려줌
- virtual 주소 = <virtual page number(VPN), offset>
ex) 32bit이고, 페이지 크기 4KB일 경우, 0x00000FFF에서 뒤에 3자리 FFF가 offset 2^32 / 2^12(페이지 크기) = 2^20(20이 페이지 개수)
- physical 주소 = <physical frame number(PFN), offset>
- 일반적으로, VPN >= PFN
- 모든 프로세스가 아무 페이지에 접근할 순 없다.
- access control이 변환 시점에 있어야한다.
- 가상 메모리 시스템의 오늘날 두가지 기능 : address translation(물리 메모리가 무한하다는 착각), access control