엔지니어가 되고 싶은 공돌이
26. Virtual Memory - Advanced VM Functionality 본문
26. Virtual Memory - Advanced VM Functionality
Geca 2021. 5. 24. 17:31
13. 4 Advanced VM Functionality
- Virtual Memory Tricks
1) Shared Memory
2) Copy on Write
3) Memory-mapped Files
<Shared Memory> ex) Web Server
- private virtual address space는 애플리케이션을 보호하므로, 데이터 공유가 어렵다.
- shared memory를 사용하여, 프로세스가 direct memory reference를 통해 데이터를 공유할 수 있다.
implementation: page table을 사용하여 공유 메모리를 어떻게 구현할 수 있는가?
- answer: 두 테이블의 PTE가 동일한 physical frame에 매핑되도록 한다.
각 PTE는 서로다른 protection values를 가질 수 있다.
- 각 프로세스 address space안에 있는 virtual address를 shared memory에 맵핑할 때 같게 할래? 다르게 할래?
1) Different: Flexible(주소 공간 충돌 없음), 공유 메모리 세그먼트 내부의 포인터가 유효하지 않음
2) Same: Less Flexible하지만 공유 포인터가 유효함.
<Copy on Write>
- 프로세스 생성: 상위 프로세스의 전체 공간을 하위 프로세스로 복사해야함/비효율적
- solution 1) Use Threads
- solution 2) Use vfork() system call
1) vfork()는 부모의 메모리 주소 공간을 공유하는 프로세스를 만든다.
2) 부모가 자식에게 필요한 데이터를 덮어쓰는 것을 방지하기 위해 자식이 종료될 때까지 부모는 기다린다.
3) 자식이 즉시 exec()를 할 때 유효.
- solution 3) Copy on Write(COW)
1) Linux(Unix)에서는 자식 프로세스(child process)를 생성(fork)하면 같은 메모리 공간을 공유하게 된다.
2) 그런데 부모 프로세스가 데이터를 수정하면 같은 메모리 공간을 공유할 수 없게 된다. 또한 자식이 사용하고 있으면 작업이 끝날 때 까지 기다려야 한다. 그러므로 부모 프로세스는 해당 페이지를 복사한 다음 수정한다.
장점: 페이지를 수정할 때에만 복사되므로, fork()를 사용하여 페이지 전체를 복사하는 것보다는 빠르다.
<Memory-mapped Files>
- 정의: 프로세스의 가상 메모리 주소 공간에 파일을 매핑한 뒤 가상 메모리에 직접 접근하는 것으로 파일 읽기/쓰기를 대신하는 것.
- mmap: 가상 메모리 영역에 파일을 바인딩
- 처음에는 page fault가 발생 => OS는 잘못된 page에 액세스 할 때마다 파일에서 page를 읽는다. => 파일이 메모리에서 제거될 때 파일에 page를 쓴다.(쓰기가 수행되었다면)
- 장점
1) 파일 및 메모리에 대한 균일한 액세스(포인터만 사용)
2) 적은 복사 횟수
3) 여러 프로세스가 동일한 파일을 매핑하여 메모리의 페이지를 공유할 수 있다.
- 단점
1) 프로세스가 데이터 이동에 대한 제어력이 떨어짐
2) streamed I/O(pipe, socket) 혜택을 받지 못한다.
- anonymous VM(page): 메모리에는 있는데 디스크에 의해 백업되지 않은 페이지
'Computer Science > Operating System' 카테고리의 다른 글
28. I/O System(2) (0) | 2021.05.26 |
---|---|
27. I/O System (1) (0) | 2021.05.25 |
25. Virtual Memory - Thashing, Working Set, PFF (0) | 2021.05.23 |
24. Virtual Memory - Page Replacement Algorithm (0) | 2021.05.22 |
23. Virtual Memory - TLB&Memory Reference (0) | 2021.05.21 |