작성
·
30
0
슬라이드 내에서 메모리 안전성에 대해 "하나의 값에 대해서 하나의 코드만 접근한다" 라는 부분이 있던데, 단순히 lexical 하게 보았을 때를 의미하는건가요 아니면 memory operation이 항상 atomic 하게 보장된다는 의미인가요?
만약 memory operation에 대한 의미라면 perCPU variable인 경우도 이러한 메모리 안전성이 보장되는 건가요?
답변 1
1
하나의 메모리 주소에 대해서 단 하나의 접근자만 접근을 허용한다는 의미입니다. 예를 들어 하나의 값에 대해 여러 개의 포인터를 실제로 가지고 있더라도, 해당 메모리 주소에 접근하고 값을 읽고 수정하는 과정을 모두 atomic 하게 처리합니다. 물론 이는 어디까지나 safe 러스트의 이야기이고, unsafe 러스트로 들어가면 직접 메모리 주소에 접근하는 C 스타일 포인터처럼 사용도 가능합니다.
결론적으로 러스트에서 제공하는 문법과 도구들만 사용한다면 항상 원자적 연산이 보장된다고 이해하셔도 좋을 것 같습니다.