暗記メーカー
ログイン
멀코 4장 동기화 연산과 cas
  • ユーザ名非公開

  • 問題数 20 • 10/20/2023

    記憶度

    完璧

    3

    覚えた

    7

    うろ覚え

    0

    苦手

    0

    未解答

    0

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

    問題一覧

  • 1

    실제 메모리로 wait-free를 유지하면서 atomic memory를 만들 수 있는 알고리즘이 존재하는가? ( O / X )

    O

  • 2

    기존의 싱글스레드 자료구조도 wait-free를 유지하면서 atomic memory를 사용해서 멀티스레드 자료구조로 변환하는 것이 가능한가? ( O / X )

    X

  • 3

    일반적인 자료구조를 wait-free를 유지하면서 멀티스레드 자료구조로 변환하려면 atomic memory말고 무엇이 더 필요한가?

    CompareAndSet() 연산이면 충분하다. CAS

  • 4

    스레드끼리의 동기화는 ( )을 통해서 이루어 진다.

    동기화 연산

  • 5

    동기화 연산은 ( )로 구현되어 있어야 한다.

    wait-free

  • 6

    bool 메모리::CAS(expected, update)는 어떻게 동작하는가?

    메모리의 값이 expected와 같으면 update로 값을 바꾸고 true 반환. 메모리의 값이 expected와 다르면 false 반환.

  • 7

    소프트웨어적으로 cas를 구현할 방법이 있는가? ( O / X )

    X

  • 8

    CAS는 atomic load/store로 구현이 가능한가? ( O / X )

    X

  • 9

    모든 기존 자료구조를 wait-free multithread로 변환해 주는 알고리즘은 존재하지 않는다. ( O / X )

    X

  • 10

    이것은 무슨 코드인가?

    모든 기존 자료구조를 Lock-free multithread로 변환해주는 알고리즘

  • 11

    지워진 곳에 위에서부터 알맞은 코드를 넣으시오.

    r.CAS(FIRST, i) decide(&prefer) SeqObject myObject;

  • 12

    이 알고리즘을 사용하지 못하는 이유는?

    오버헤드가 너무 커서 성능이 너무 안좋다.

  • 13

    CPU가 제공하는 CAS를 사용하면 모든 싱글스레드 알고리즘을 lock-free한 멀티스레드 알고리즘으로 변환할 수 있다. ( O / X )

    O

  • 14

    멀티스레드 알고리즘은 범용적일 수록 성능이 떨어진다. ( O / X )

    O

  • 15

    Data Race는 ( ) 떄문에 발생한다.

    공유 객체

  • 16

    빈칸에 들어갈 것은?

    atomic_int

  • 17

    빈칸에 들어갈 것은?

    volatile atomic_int *

  • 18

    한 줄인데 왜 함수를 만들어서 사용하는가?

    call by reference로 사용하기 위해서이다. 밖에 CAS 함수는 실패한 것만 알고 안에 있는 atomic_compare_exchange_strong은 왜 실패했는지도 알 수 있다.

  • 19

    여기서 CAS_LOCK()과 CAS_UNLOCK()에 들어갈 것은?

    CAS_LOCK(): while (false == CAS(&LOCK, 0, 1)); CAS_UNLOCK(): LOCK = 0;

  • 20

    convoying이 의심되면 ( )를 사용하면 된다.

    yield()