멀코 5-2장 배경이론
問題一覧
1
O
2
컴파일 에러
3
동기화
4
X
5
합의(Consensus)
6
O
7
decide는 모든 호출에 대해 같은 값을 반환한다., decide가 반환하는 값은 전달된 value 중 하나이다.
8
두번째 호출한 애의 값을 쓰려면 첫번째 호출한 애가 기다려야 하기 때문이다.
9
아니다. wait-free가 아니기 때문이다.
10
CAS(&d_value, INIT, value); d_value;
11
합의 수가 1인 합의 객체
12
프로토콜
13
X
14
O
15
길어진다.
16
아니다.
17
그렇다.
18
O
19
이동은 동기화 메모리를 읽고 쓰는 것이기 때문이다.
20
일가(univalent) 상태
21
이가(bivalent) 상태
22
임계(critical) 상태
23
X
24
초기 상태이자 이가 상태 중 임계 상태이다.
25
O
26
X
27
O
28
아니다. A가 읽었으면 B는 0이 나와야하고, A가 안읽었으면 B는 1이 나와야 하는데 이것을 알 도리가 없다. 따라서 이러한 알고리즘은 만들 수 없다.
29
어느 순서로 썼는지 구분할 수 없다. 불가능하다.
30
A의 write r을 B의 write r이 덮어 쓴 경우와 아닌 경우를 B는 구분할 수 없다. 따라서 불가능하다.
31
X
32
atomic 메모리의 합의 수는 1이고, 2 Dequeuer QUEUE의 합의수는 적어도 2이기 때문이다. atomic 메모리의 합의 수가 적어도 2는 되어야 한다. 모순이어서 안된다.
33
O
34
O
35
2
36
다중 대입 객체
37
다중 대입 객체
38
O
39
RMW(Read-Modify-Write) 연산
40
명백하지 않은(nontrivial)
41
2
42
O
43
fi와 fj는 교환이 가능하거나 : fi (fj (v)) = fj (fi (v)), 한 함수가 다른 함수를 덮어쓰는 경우 : fi (fj (v)) = fi (v) 이거나 fj (fi (v)) = fj(v)
44
합의 수 2를 갖는다., 최근의 프로세서들에서는 제거되는 추세이다.
45
누가 먼저 실행했는지 알 수 없기 때문이다. 3 이상이 되려면 누가 실행했는지 알 수 있어야 한다.
46
O
47
무한대
48
X
49
LL-SC(Load Linked - Store Conditional)
50
만능 객체
51
n
52
클래스 C 객체들과 원자적 메모리로 모든 객체를 무대기 구현으로 변환하는 것이 가능하다면 클래스 C는 만능이다.
53
Invocation 객체
54
Reponse
55
O
56
decide(&prefer) apply(current->invoc) apply(current->invoc)
57
//prefer가 성공적으로 head에 추가 되었는지 검사 Node *before = tail.max(head); // Log의 head를 찾지만 다른 스레드와 겹쳐져서 잘 못 찾을 수도 있음 Node *after = before->decideNext->decide(&prefer); // before의 합의는 항상 유일하다! before->next = after; after->seq = before->seq + 1; // 여러 스레드가 같은 작업을 반복 할 수 있지만, 상관없다. head[i] = after; // 자신이 본 제일 앞의 head는 after니까 업데이트 시켜준다 // 이러지 않으면 동일한 합의 객체를 두 번 호출할 수 있다. // 운좋게 after가 prefer가 되면 성공이다!
58
노드마다 합의 객체를 갖고 있다., 순차객체 A는 매 호출마다 새로 생성된다., 합의 객체로 인해 한 Node의 next node는 어떤 스레드에서도 유일하다는 것을 보장받는다.
59
모든 스레드가 볼 수 있다. 혹시 계속 decide가 실패해서 헛돌고 있는 invok가 있는지 보는 것이다.
60
O
61
O
멀코 2장 멀티스레드 프로그래밍
멀코 2장 멀티스레드 프로그래밍
ユーザ名非公開 · 9問 · 2年前멀코 2장 멀티스레드 프로그래밍
멀코 2장 멀티스레드 프로그래밍
9問 • 2年前멀코 3장 메모리 일관성
멀코 3장 메모리 일관성
ユーザ名非公開 · 41問 · 2年前멀코 3장 메모리 일관성
멀코 3장 메모리 일관성
41問 • 2年前고법 2장 헌법
고법 2장 헌법
ユーザ名非公開 · 41問 · 2年前고법 2장 헌법
고법 2장 헌법
41問 • 2年前고법 3장 근로계약
고법 3장 근로계약
ユーザ名非公開 · 42問 · 2年前고법 3장 근로계약
고법 3장 근로계약
42問 • 2年前고법 4장 노동법의 역사
고법 4장 노동법의 역사
ユーザ名非公開 · 23問 · 2年前고법 4장 노동법의 역사
고법 4장 노동법의 역사
23問 • 2年前고법 6장 직장내 성희롱
고법 6장 직장내 성희롱
ユーザ名非公開 · 31問 · 2年前고법 6장 직장내 성희롱
고법 6장 직장내 성희롱
31問 • 2年前멀코 4장 동기화 연산과 cas
멀코 4장 동기화 연산과 cas
ユーザ名非公開 · 20問 · 2年前멀코 4장 동기화 연산과 cas
멀코 4장 동기화 연산과 cas
20問 • 2年前멀코 5장 non-blocking 알고리즘 - list
멀코 5장 non-blocking 알고리즘 - list
ユーザ名非公開 · 84問 · 2年前멀코 5장 non-blocking 알고리즘 - list
멀코 5장 non-blocking 알고리즘 - list
84問 • 2年前1. 컴퓨터 그래픽스 개요 (컴그)
1. 컴퓨터 그래픽스 개요 (컴그)
ユーザ名非公開 · 34問 · 2年前1. 컴퓨터 그래픽스 개요 (컴그)
1. 컴퓨터 그래픽스 개요 (컴그)
34問 • 2年前2. 2차원 그래픽스의 기본 요소 (컴그)
2. 2차원 그래픽스의 기본 요소 (컴그)
ユーザ名非公開 · 30問 · 2年前2. 2차원 그래픽스의 기본 요소 (컴그)
2. 2차원 그래픽스의 기본 요소 (컴그)
30問 • 2年前3. 2차원 그래픽스 변환 (컴그)
3. 2차원 그래픽스 변환 (컴그)
ユーザ名非公開 · 15問 · 2年前3. 2차원 그래픽스 변환 (컴그)
3. 2차원 그래픽스 변환 (컴그)
15問 • 2年前4. 2차원 그래픽스의 윈도우와 뷰포트 (컴그)
4. 2차원 그래픽스의 윈도우와 뷰포트 (컴그)
ユーザ名非公開 · 16問 · 2年前4. 2차원 그래픽스의 윈도우와 뷰포트 (컴그)
4. 2차원 그래픽스의 윈도우와 뷰포트 (컴그)
16問 • 2年前멀코 6장. 병렬 알고리즘 - QUEUE
멀코 6장. 병렬 알고리즘 - QUEUE
ユーザ名非公開 · 26問 · 2年前멀코 6장. 병렬 알고리즘 - QUEUE
멀코 6장. 병렬 알고리즘 - QUEUE
26問 • 2年前멀코 7장. STACK, SKIP-LIST
멀코 7장. STACK, SKIP-LIST
ユーザ名非公開 · 42問 · 2年前멀코 7장. STACK, SKIP-LIST
멀코 7장. STACK, SKIP-LIST
42問 • 2年前멀코 8장. 병렬 라이브러리
멀코 8장. 병렬 라이브러리
ユーザ名非公開 · 77問 · 2年前멀코 8장. 병렬 라이브러리
멀코 8장. 병렬 라이브러리
77問 • 2年前고법 7장. 임금의 이해
고법 7장. 임금의 이해
ユーザ名非公開 · 46問 · 2年前고법 7장. 임금의 이해
고법 7장. 임금의 이해
46問 • 2年前고법 9장. 인사명령과 징계
고법 9장. 인사명령과 징계
ユーザ名非公開 · 21問 · 2年前고법 9장. 인사명령과 징계
고법 9장. 인사명령과 징계
21問 • 2年前고법 11장. 노동조합법
고법 11장. 노동조합법
ユーザ名非公開 · 45問 · 2年前고법 11장. 노동조합법
고법 11장. 노동조합법
45問 • 2年前컴그 7장. 3차원 객체의 모델링
컴그 7장. 3차원 객체의 모델링
ユーザ名非公開 · 13問 · 2年前컴그 7장. 3차원 객체의 모델링
컴그 7장. 3차원 객체의 모델링
13問 • 2年前컴그 8장. 은면의 제거
컴그 8장. 은면의 제거
ユーザ名非公開 · 9問 · 2年前컴그 8장. 은면의 제거
컴그 8장. 은면의 제거
9問 • 2年前問題一覧
1
O
2
컴파일 에러
3
동기화
4
X
5
합의(Consensus)
6
O
7
decide는 모든 호출에 대해 같은 값을 반환한다., decide가 반환하는 값은 전달된 value 중 하나이다.
8
두번째 호출한 애의 값을 쓰려면 첫번째 호출한 애가 기다려야 하기 때문이다.
9
아니다. wait-free가 아니기 때문이다.
10
CAS(&d_value, INIT, value); d_value;
11
합의 수가 1인 합의 객체
12
프로토콜
13
X
14
O
15
길어진다.
16
아니다.
17
그렇다.
18
O
19
이동은 동기화 메모리를 읽고 쓰는 것이기 때문이다.
20
일가(univalent) 상태
21
이가(bivalent) 상태
22
임계(critical) 상태
23
X
24
초기 상태이자 이가 상태 중 임계 상태이다.
25
O
26
X
27
O
28
아니다. A가 읽었으면 B는 0이 나와야하고, A가 안읽었으면 B는 1이 나와야 하는데 이것을 알 도리가 없다. 따라서 이러한 알고리즘은 만들 수 없다.
29
어느 순서로 썼는지 구분할 수 없다. 불가능하다.
30
A의 write r을 B의 write r이 덮어 쓴 경우와 아닌 경우를 B는 구분할 수 없다. 따라서 불가능하다.
31
X
32
atomic 메모리의 합의 수는 1이고, 2 Dequeuer QUEUE의 합의수는 적어도 2이기 때문이다. atomic 메모리의 합의 수가 적어도 2는 되어야 한다. 모순이어서 안된다.
33
O
34
O
35
2
36
다중 대입 객체
37
다중 대입 객체
38
O
39
RMW(Read-Modify-Write) 연산
40
명백하지 않은(nontrivial)
41
2
42
O
43
fi와 fj는 교환이 가능하거나 : fi (fj (v)) = fj (fi (v)), 한 함수가 다른 함수를 덮어쓰는 경우 : fi (fj (v)) = fi (v) 이거나 fj (fi (v)) = fj(v)
44
합의 수 2를 갖는다., 최근의 프로세서들에서는 제거되는 추세이다.
45
누가 먼저 실행했는지 알 수 없기 때문이다. 3 이상이 되려면 누가 실행했는지 알 수 있어야 한다.
46
O
47
무한대
48
X
49
LL-SC(Load Linked - Store Conditional)
50
만능 객체
51
n
52
클래스 C 객체들과 원자적 메모리로 모든 객체를 무대기 구현으로 변환하는 것이 가능하다면 클래스 C는 만능이다.
53
Invocation 객체
54
Reponse
55
O
56
decide(&prefer) apply(current->invoc) apply(current->invoc)
57
//prefer가 성공적으로 head에 추가 되었는지 검사 Node *before = tail.max(head); // Log의 head를 찾지만 다른 스레드와 겹쳐져서 잘 못 찾을 수도 있음 Node *after = before->decideNext->decide(&prefer); // before의 합의는 항상 유일하다! before->next = after; after->seq = before->seq + 1; // 여러 스레드가 같은 작업을 반복 할 수 있지만, 상관없다. head[i] = after; // 자신이 본 제일 앞의 head는 after니까 업데이트 시켜준다 // 이러지 않으면 동일한 합의 객체를 두 번 호출할 수 있다. // 운좋게 after가 prefer가 되면 성공이다!
58
노드마다 합의 객체를 갖고 있다., 순차객체 A는 매 호출마다 새로 생성된다., 합의 객체로 인해 한 Node의 next node는 어떤 스레드에서도 유일하다는 것을 보장받는다.
59
모든 스레드가 볼 수 있다. 혹시 계속 decide가 실패해서 헛돌고 있는 invok가 있는지 보는 것이다.
60
O
61
O