暗記メーカー
ログイン
멀코 3장 메모리 일관성
  • ユーザ名非公開

  • 問題数 41 • 10/16/2023

    記憶度

    完璧

    6

    覚えた

    15

    うろ覚え

    0

    苦手

    0

    未解答

    0

    アカウント登録して、解答結果を保存しよう

    問題一覧

  • 1

    PC에서의 메모리 접근은 atomic이다.

    X

  • 2

    피터슨 알고리즘에 volatile을 추가하면 문제가 해결된다.

    X

  • 3

    피터슨 알고리즘에서 volatile을 추가해도 제대로 해결이 안되는 이유는?

    메모리 접근 순서가 프로그램을 짠데로 돌아가지 않기 때문이다.

  • 4

    명령어 위 아래 실행 순서가 절대로 뒤바뀌지 않도록 하는 명령어는?

    _asm_mfence

  • 5

    메모리 접근이 atomic하지 않은 이유는?

    out of order execution이 대표적인 이유이다.

  • 6

    write buffer의 위치가 왜 저기있는가?

    L1 캐시 미스 나면 write buffer에 넣기 위해서이다.

  • 7

    volatile 키워드는 기계어로 번역이 된다. ( O / X )

    X

  • 8

    volatile은 ( A )한테 순서 제대로 하라는 거지 ( B )와는 상관이 없다.

    A: 컴파일러, B: CPU

  • 9

    volatile은 무엇을 위해 나온 키워드였나?

    I/O 작업을 위해 나온 키워드

  • 10

    피터슨 알고리즘이 속하는 type은?

    Type-E

  • 11

    멀티스레드 프로그래밍에서 이러한 식으로 부정확해 보이는 결과가 나오는 이유는?

    CPU의 out of order 실행, 메모리의 접근이 순간적이 아니다., 멀티 코어에서는 옆의 코어의 out of order 실행이 관측된다.

  • 12

    이 코드 실행 결과 error가 0으로 출력되는가? 아니라면 이유는 무엇인가?

    아니다. Cache Line Size Boundary 문제가 일어난다. 메모리를 가져올 때 캐시라인을 통째로 가져오는데 메모리가 캐시 라인 두 개에 걸쳐있다면 두 번에 걸쳐서 가져와야 한다. 하지만 그 사이에 다른 스레드가 끼어들면 제대로 된 값이 나오지 않는다.

  • 13

    여기서 'temp -= 2;'를 'temp -= 1;'로 바꾸면 error 값으로 어떤 것들이 출력되는가?

    ff, ffffff00

  • 14

    무모순성(Consistency)라고도 불리고, Memory Consistency 또는 Memory Ordering이라고도 불리는 것은?

    메모리 일관성

  • 15

    멀티스레드에서의 공유 메모리는 다른 코어에서 보았을 때 업데이트 순서가 틀릴 수 있는데 이것은 쓰는 쪽의 문제이다. ( O / X )

    X

  • 16

    atomic_thread_fence()는 성능저하를 전혀 일으키지 않는다. ( O / X )

    X

  • 17

    멀티스레드 프로그래밍에서 메모리에 대한 쓰기는 언젠가는 완료 된다. ( O / X )

    O

  • 18

    멀티스레드 프로그래밍에서 자기 자신의 프로그램 실행 순서는 잘 지켜지지 않는다. ( O / X )

    X

  • 19

    멀티스레드 프로그래밍에서 캐시의 일관성은 지켜지지 않는다. ( O / X )

    X

  • 20

    캐시라인 내부의 읽기/쓰기는 중간 값을 만들지 않는다. ( O / X )

    O

  • 21

    멀티스레드 프로그래밍에서 <mutex>나 fence없이 SW적인 방법 만으로도 atomic memory를 만들 수 있다. ( O / X )

    O

  • 22

    싱글 코어에서는 모든 메모리가 atomic memory이다. ( O / X )

    O

  • 23

    접근(메모리는 read, write)의 절대 순서가 모든 스레드에서 지켜지는 자료구조는?

    atomic

  • 24

    atomic 자료구조를 통해 cache 문제를 해결할 수 있다. ( O / X )

    X

  • 25

    atomic과 volatile 중에 성능이 더 좋은 것은?

    volatile

  • 26

    일반적인 '=' 연산자도 atomic하게 동작한다. ( O / X )

    O

  • 27

    volatile은 파이프라인을 stall 시킨다. ( O / X )

    X

  • 28

    다음 프로그램이 정상적으로 동작 할까? 이유는?

    아니다. 더 악질적인 버그다. atomic 사이에 있다고 atomic하게 돌아가는 것이 아니다. atomic 변수들끼리만 atomic하게 동작한다.

  • 29

    atomic 자료구조만으로 게임을 만들 수 없는 이유는?

    게임에서는 기본 자료구조만을 가지고 만들지 않는다. 보다 더 복잡한 자료구조를 이용하여 만들기 때문이다. atomic 자료구조는 기본 자료구조에만 해당한다.

  • 30

    atomic memory를 사용하여 만든 자료구조가 atomic한가? ( O / X )

    X

  • 31

    멀티스레드 프로그래밍에서 lock이 없다고 성능저하가 없는가? ( O / X )

    X

  • 32

    멀티스레드에서는 작성한 코드에 블럭킹 알고리즘이 있으면 그 곳이 ( )이 된다.

    바틀넥

  • 33

    Lock을 공유하는 덜 중요한 작업들이 중요한 작업의 실행을 막는 현상은?

    우선순위 역전(Priority Inversion)

  • 34

    Lock을 얻은 스레드가 스케쥴링에서 제외된 경우, lock을 기다리는 모든 스레드가 공회전하는 현상은?

    Convoying

  • 35

    Convoying이 자주 발생하는 상황은 언제인가?

    Core보다 많은 수의 스레드를 생성했을 경우

  • 36

    성능이 낮아도 non-blocking이 필요할 수 있다. ( O / X )

    O

  • 37

    Lock-free 알고리즘은 적어도 한 개의 메소드가 유한한 단계에 실행을 끝마친다. ( O / X )

    O

  • 38

    무대기여도 무잠금이 아닐 수 있다. ( O / X )

    X

  • 39

    lock-free 알고리즘은 기아를 유발하기도 한다. ( O / X )

    O

  • 40

    성능은 무대기가 무조건 무잠금보다 더 좋다. ( O / X )

    X

  • 41

    한 개를 제외한 모든 스레드가 멈추었을 때, 멈추지 않은 스레드의 메소드가 유한한 단계에 종료하는 알고리즘은?

    무간섭(obstruction-free)