Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

locking/Doc/ko_KR: Clarify limited control-dependency scope

This commit applies upstream change, commit ebff09a6ff16
("locking/Documentation: Clarify limited control-dependency scope"), to
Korean translation.

Signed-off-by: SeongJae Park <sj38.park@gmail.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>

authored by

SeongJae Park and committed by
Jonathan Corbet
7b855a12 75a163c4

+36
+36
Documentation/ko_KR/memory-barriers.txt
··· 823 823 오퍼레이션을 위한 코드를 정말로 만들도록 하지만, 컴파일러가 그렇게 만들어진 824 824 코드의 수행 결과를 사용하도록 강제하지는 않습니다. 825 825 826 + 또한, 컨트롤 의존성은 if 문의 then 절과 else 절에 대해서만 적용됩니다. 상세히 827 + 말해서, 컨트롤 의존성은 if 문을 뒤따르는 코드에는 적용되지 않습니다: 828 + 829 + q = READ_ONCE(a); 830 + if (q) { 831 + WRITE_ONCE(b, p); 832 + } else { 833 + WRITE_ONCE(b, r); 834 + } 835 + WRITE_ONCE(c, 1); /* BUG: No ordering against the read from "a". */ 836 + 837 + 컴파일러는 volatile 타입에 대한 액세스를 재배치 할 수 없고 이 조건 하의 "b" 838 + 로의 쓰기를 재배치 할 수 없기 때문에 여기에 순서 규칙이 존재한다고 주장하고 839 + 싶을 겁니다. 불행히도 이 경우에, 컴파일러는 다음의 가상의 pseudo-assembly 언어 840 + 코드처럼 "b" 로의 두개의 쓰기 오퍼레이션을 conditional-move 인스트럭션으로 841 + 번역할 수 있습니다: 842 + 843 + ld r1,a 844 + ld r2,p 845 + ld r3,r 846 + cmp r1,$0 847 + cmov,ne r4,r2 848 + cmov,eq r4,r3 849 + st r4,b 850 + st $1,c 851 + 852 + 완화된 순서 규칙의 CPU 는 "a" 로부터의 로드와 "c" 로의 스토어 사이에 어떤 853 + 종류의 의존성도 갖지 않을 겁니다. 이 컨트롤 의존성은 두개의 cmov 인스트럭션과 854 + 거기에 의존하는 스토어 에게만 적용될 겁니다. 짧게 말하자면, 컨트롤 의존성은 855 + 주어진 if 문의 then 절과 else 절에게만 (그리고 이 두 절 내에서 호출되는 856 + 함수들에게까지) 적용되지, 이 if 문을 뒤따르는 코드에는 적용되지 않습니다. 857 + 826 858 마지막으로, 컨트롤 의존성은 이행성 (transitivity) 을 제공하지 -않습니다-. 이건 827 859 x 와 y 가 둘 다 0 이라는 초기값을 가졌다는 가정 하의 두개의 예제로 828 860 보이겠습니다: ··· 914 882 합니다. 주의 깊은 READ_ONCE() 나 atomic{,64}_read() 의 사용이 컨트롤 915 883 의존성이 사라지지 않게 하는데 도움을 줄 수 있습니다. 더 많은 정보를 916 884 위해선 "컴파일러 배리어" 섹션을 참고하시기 바랍니다. 885 + 886 + (*) 컨트롤 의존성은 컨트롤 의존성을 갖는 if 문의 then 절과 else 절과 이 두 절 887 + 내에서 호출되는 함수들에만 적용됩니다. 컨트롤 의존성은 컨트롤 의존성을 888 + 갖는 if 문을 뒤따르는 코드에는 적용되지 -않습니다-. 917 889 918 890 (*) 컨트롤 의존성은 보통 다른 타입의 배리어들과 짝을 맞춰 사용됩니다. 919 891