Copy on Write (COW)

지니🧸·2023년 4월 9일
0

Swift

목록 보기
2/4

생성자로 클래스 변수를 만들면 메모리 할당, 주소값 받음

Swift의 COW

이 변수를 참조하는 변수는 같은 메모리 주소값을 가르킴

이 변수의 속성을 바꾸면 메모리에 있는 값이 바뀜

  • 두 변수 모두 주소 값을 가르키기 때문에 값의 변경이 두 변수 모두에 반영됨

참조 변수의 속성이 바뀌면 새로 메모리를 할당하여 주소 값 받음

리소스가 복제되었지만 수정되지 않은 경우에 새 리소스를 만들 필요 없이 복사본과 원본이 리소스를 공유하고, 복사본이 수정되었을 때만 새 리소스를 만드는 리소스 관리 기법을 말한다.

운영체제의 COW

fork()를 수행 > 부모프로세스의 복사본으로 자식 생성

그런데 이때 대부분 fork() 이후 exec()를 수행함 > 새로운 프로세스를 overwrite하게 복사를 하고 바로 exec()를 통해 새로운 프로세스를 만듬

overhead 발생 > 비효율적

COW를 이용해 자식 프로세스가 같은 페이지를 공유
만약 자식 프로세스에 수정이 일어난다면 그때 Copy를 수행

page C의 복사본을 할당하고, 이를 가리키게 하면 됨

내용이 바뀌지 않는 동안: 페이지 공유
내용이 변경되면: 새로운 페이지 할당 & 복사

대부분의 OS에서 COW 방식을 채택


참고: [운영체제] Copy On Write(COW)란? | Copy On Write 예시

profile
우당탕탕

0개의 댓글

관련 채용 정보