1. COW
🐂 ?
웬 소?
ㅋㅋ 사실 COW는 (Copy - on - Write)의 약자이다.
컴퓨터가 프로그래밍에서 복사 동작을 할 때, 실제 원본이나 복사본이 수정되기 전까지는 복사를 하지 않고,
원본 리소스를 공유하다가 원본이나 복사본에서 수정이 일어날 경우 그때 복사하는 작업을 한다.
var array1 = [1, 2, 3]
var array2 = array1 // 여기서는 복사가 발생하지 않음, array1과 array2는 동일한 메모리를 참조
array2.append(4) // 여기서 복사가 발생, array2는 새로운 메모리 공간을 할당받고, array1과 분리됨
print(array1) // 출력: [1, 2, 3]
print(array2) // 출력: [1, 2, 3, 4]
위 개념은 보통 운영 체제에서 가상 메모리를 관리할 때 자주 사용된다. 프로세스가 새로운 메모리 페이지를 요청할 때,
CoW는 실제 복사를 지연시켜 메모리 사용을 최적화 한다.
위 예시코드까지 봤으니 한 번 이해해보자.
array1 에 [1,2,3]이라는 값이 들어가있지?
그 값을 array2에서 똑같이 받아왔을 때 우리는
array1 -> 1,2,3
array2 -> 1,2,3
과 같이 값을 복사해서 같은 값을 가지고 있어야 한다고 생각한다.
BUT!
그렇지 않다.
CoW를 사용하면 처음에 봤던 코드의 내용처럼 array2가 array1값을 참조하게 된다.
알겠어.. 그럼 도대체 array2는 값을 언제 가지는건데?
그것은 바로! array2의 값에 대해 첫 수정이 일어날 때 메모리에 할당된다.
와.. 공부할 수록 무언가 계속 배워갈게 생긴다.. 재밌다. 하하하
하... 프로그래밍 쉽지않다.
🐂🐂🐂🐂🐂🐂🐂🐂🐂🐂🐂🐂🐂
'Swift' 카테고리의 다른 글
Swift Delegate Pattern (0) | 2024.06.30 |
---|---|
Swift Optional (0) | 2024.06.28 |
Swift LifeCycle - 추가 예정 (미완) (1) | 2024.06.26 |
Swift preview (0) | 2024.06.25 |
Swift Lint란? (0) | 2024.06.24 |