Skip to content

Commit 6fad4e6

Browse files
sjp38Jonathan Corbet
authored andcommitted
kokr/memory-barriers.txt: Apply atomic_t.txt change
This commit applies memory-barriers.txt part of upstream change, commit 706eeb3 ("Documentation/locking/atomic: Add documents for new atomic_t APIs") to Korean translation. Signed-off-by: SeongJae Park <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
1 parent 53e3153 commit 6fad4e6

File tree

1 file changed

+7
-87
lines changed

1 file changed

+7
-87
lines changed

Documentation/translations/ko_KR/memory-barriers.txt

Lines changed: 7 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -523,11 +523,11 @@ CPU 에게 기대할 수 있는 최소한의 보장사항 몇가지가 있습니
523523
즉, ACQUIRE 는 최소한의 "취득" 동작처럼, 그리고 RELEASE 는 최소한의 "공개"
524524
처럼 동작한다는 의미입니다.
525525

526-
core-api/atomic_ops.rst 에서 설명되는 어토믹 오퍼레이션들 중에는 완전히
527-
순서잡힌 것들과 (배리어를 사용하지 않는) 완화된 순서의 것들 외에 ACQUIRE 와
528-
RELEASE 부류의 것들도 존재합니다. 로드와 스토어를 모두 수행하는 조합된 어토믹
529-
오퍼레이션에서, ACQUIRE 는 해당 오퍼레이션의 로드 부분에만 적용되고 RELEASE 는
530-
해당 오퍼레이션의 스토어 부분에만 적용됩니다.
526+
atomic_t.txt 에 설명된 어토믹 오퍼레이션들 중 일부는 완전히 순서잡힌 것들과
527+
(배리어를 사용하지 않는) 완화된 순서의 것들 외에 ACQUIRE 와 RELEASE 부류의
528+
것들도 존재합니다. 로드와 스토어를 모두 수행하는 조합된 어토믹 오퍼레이션에서,
529+
ACQUIRE 는 해당 오퍼레이션의 로드 부분에만 적용되고 RELEASE 는 해당
530+
오퍼레이션의 스토어 부분에만 적용됩니다.
531531

532532
메모리 배리어들은 두 CPU 간, 또는 CPU 와 디바이스 간에 상호작용의 가능성이 있을
533533
때에만 필요합니다. 만약 어떤 코드에 그런 상호작용이 없을 것이 보장된다면, 해당
@@ -1854,8 +1854,7 @@ Mandatory 배리어들은 SMP 시스템에서도 UP 시스템에서도 SMP 효
18541854
이 코드는 객체의 업데이트된 death 마크가 레퍼런스 카운터 감소 동작
18551855
*전에* 보일 것을 보장합니다.
18561856

1857-
더 많은 정보를 위해선 Documentation/core-api/atomic_ops.rst 문서를 참고하세요.
1858-
어디서 이것들을 사용해야 할지 궁금하다면 "어토믹 오퍼레이션" 서브섹션을
1857+
더 많은 정보를 위해선 Documentation/atomic_{t,bitops}.txt 문서를
18591858
참고하세요.
18601859

18611860

@@ -2474,86 +2473,7 @@ _않습니다_.
24742473
전체 메모리 배리어를 내포하고 또 일부는 내포하지 않지만, 커널에서 상당히
24752474
의존적으로 사용하는 기능 중 하나입니다.
24762475

2477-
메모리의 어떤 상태를 수정하고 해당 상태에 대한 (예전의 또는 최신의) 정보를
2478-
리턴하는 어토믹 오퍼레이션은 모두 SMP-조건적 범용 메모리 배리어(smp_mb())를
2479-
실제 오퍼레이션의 앞과 뒤에 내포합니다. 이런 오퍼레이션은 다음의 것들을
2480-
포함합니다:
2481-
2482-
xchg();
2483-
atomic_xchg(); atomic_long_xchg();
2484-
atomic_inc_return(); atomic_long_inc_return();
2485-
atomic_dec_return(); atomic_long_dec_return();
2486-
atomic_add_return(); atomic_long_add_return();
2487-
atomic_sub_return(); atomic_long_sub_return();
2488-
atomic_inc_and_test(); atomic_long_inc_and_test();
2489-
atomic_dec_and_test(); atomic_long_dec_and_test();
2490-
atomic_sub_and_test(); atomic_long_sub_and_test();
2491-
atomic_add_negative(); atomic_long_add_negative();
2492-
test_and_set_bit();
2493-
test_and_clear_bit();
2494-
test_and_change_bit();
2495-
2496-
/* exchange 조건이 성공할 때 */
2497-
cmpxchg();
2498-
atomic_cmpxchg(); atomic_long_cmpxchg();
2499-
atomic_add_unless(); atomic_long_add_unless();
2500-
2501-
이것들은 메모리 배리어 효과가 필요한 ACQUIRE 부류와 RELEASE 부류 오퍼레이션들을
2502-
구현할 때, 그리고 객체 해제를 위해 레퍼런스 카운터를 조정할 때, 암묵적 메모리
2503-
배리어 효과가 필요한 곳 등에 사용됩니다.
2504-
2505-
2506-
다음의 오퍼레이션들은 메모리 배리어를 내포하지 _않기_ 때문에 문제가 될 수
2507-
있지만, RELEASE 부류의 오퍼레이션들과 같은 것들을 구현할 때 사용될 수도
2508-
있습니다:
2509-
2510-
atomic_set();
2511-
set_bit();
2512-
clear_bit();
2513-
change_bit();
2514-
2515-
이것들을 사용할 때에는 필요하다면 적절한 (예를 들면 smp_mb__before_atomic()
2516-
같은) 메모리 배리어가 명시적으로 함께 사용되어야 합니다.
2517-
2518-
2519-
아래의 것들도 메모리 배리어를 내포하지 _않기_ 때문에, 일부 환경에서는 (예를
2520-
들면 smp_mb__before_atomic() 과 같은) 명시적인 메모리 배리어 사용이 필요합니다.
2521-
2522-
atomic_add();
2523-
atomic_sub();
2524-
atomic_inc();
2525-
atomic_dec();
2526-
2527-
이것들이 통계 생성을 위해 사용된다면, 그리고 통계 데이터 사이에 관계가 존재하지
2528-
않는다면 메모리 배리어는 필요치 않을 겁니다.
2529-
2530-
객체의 수명을 관리하기 위해 레퍼런스 카운팅 목적으로 사용된다면, 레퍼런스
2531-
카운터는 락으로 보호되는 섹션에서만 조정되거나 호출하는 쪽이 이미 충분한
2532-
레퍼런스를 잡고 있을 것이기 때문에 메모리 배리어는 아마 필요 없을 겁니다.
2533-
2534-
만약 어떤 락을 구성하기 위해 사용된다면, 락 관련 동작은 일반적으로 작업을 특정
2535-
순서대로 진행해야 하므로 메모리 배리어가 필요할 수 있습니다.
2536-
2537-
기본적으로, 각 사용처에서는 메모리 배리어가 필요한지 아닌지 충분히 고려해야
2538-
합니다.
2539-
2540-
아래의 오퍼레이션들은 특별한 락 관련 동작들입니다:
2541-
2542-
test_and_set_bit_lock();
2543-
clear_bit_unlock();
2544-
__clear_bit_unlock();
2545-
2546-
이것들은 ACQUIRE 류와 RELEASE 류의 오퍼레이션들을 구현합니다. 락 관련 도구를
2547-
구현할 때에는 이것들을 좀 더 선호하는 편이 나은데, 이것들의 구현은 많은
2548-
아키텍쳐에서 최적화 될 수 있기 때문입니다.
2549-
2550-
[!] 이런 상황에 사용할 수 있는 특수한 메모리 배리어 도구들이 있습니다만, 일부
2551-
CPU 에서는 사용되는 어토믹 인스트럭션 자체에 메모리 배리어가 내포되어 있어서
2552-
어토믹 오퍼레이션과 메모리 배리어를 함께 사용하는 게 불필요한 일이 될 수
2553-
있는데, 그런 경우에 이 특수 메모리 배리어 도구들은 no-op 이 되어 실질적으로
2554-
아무일도 하지 않습니다.
2555-
2556-
더 많은 내용을 위해선 Documentation/core-api/atomic_ops.rst 를 참고하세요.
2476+
더 많은 내용을 위해선 Documentation/atomic_t.txt 를 참고하세요.
25572477

25582478

25592479
디바이스 액세스

0 commit comments

Comments
 (0)