https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/9_VirtualMemory.html의 9.3 copy on write 만
발번역했다.
9.3 Copy-On-Write
- copy-on-write fork의 아이디어는 자식 프로세스 또는 다른 프로세스가 페이지를 변경할 때까지 부모 프로세스의 페이지를 자식 프로세스로 실제로 복사되지 않아야 한다. 잠시 동안 두 개의 프로세스는 메모리를 공유할 수 있고, 수정해야 할 것들은 따로 페이지를 복사되어야 한다. fork후 자식 프로세스가 종종 exec() 시스템 호출을 즉시 호출되기 때문에 타당한 접근 방식이다.
Figure 9.7 - Before process 1 modifies page C.
Figure 9.8 - After process 1 modifies page C.
- 수정될 페이지만 copy-on-write 라벨으로 붙여야 한다. 코드 세그먼트는 공유될 수 있다.
- copy-on-write 복제본을 만족하기 위해 쓰이는 페이지는 기존 데이터를 zero로 처리하는 zero-fill-on-demand를 일반적으로 사용하여 할당한다.
- 일부 시스템은 for() 시스템 콜을 virtual memory fork라 불리는 vfork()의 대안으로 제공한다. 부모프로세스가 정지되는 경우, 자식 프로세스는 부모 프로세스의 메모리 페이지를 사용한다. 이 방법을 사용하면 프로세스 생성이 굉장히 빠르지만, exec() 시스템 콜을 호출하기 전, 자식 프로세스는 어떠한 공유된 메모리 페이지를 수정하지 않도록 한다. 본질적으로이 과정은 fork의 호출후 , 부모 프로세스 또는 자식 프로세스 중 어느 프로세스가 먼저 실행되는지에 대한 의문을 다룬다. vfork를 이용하면, 부모 프로세스는 중지되고, 자식 프로세스가 exec() 호출시까지 잠깐 동안 부모 프로세스의 페이지와 공유하면서, 자식 프로세스가 먼저 실행되도록 한다.
'scribbling' 카테고리의 다른 글
[펌] ngxpagespeed.com (0) | 2016.02.03 |
---|---|
웹 페이지를 Mac 앱으로 실행하기 - nativefier (0) | 2016.01.29 |
[펌] 일본 동경대 교수가 만든 홀로그램 - haptoclone (0) | 2016.01.03 |
[펌] 인메모리 캐쉬 서버 성능 비교 - redis, couchbas, memcached, tarantool (0) | 2016.01.03 |
[펌] druid.io (https://github.com/druid-io/druid) (0) | 2015.12.30 |