캐시 플러시 관련 궁굼한게 있어서 질문 드립니다!!
컨텍스트 스위칭에서 캐시 플러시가 발생한다고 되어 있는데,
이는 프로세스 간의 컨텍스트 스위칭이 아니라 스레드간 컨텍스트 스위칭에서도 발생하는지 궁굼합니다.
왜냐하면 스레드는 주소 공간을 공유하기 때문에 데이터 영역은 플러시해야겠지만, 명령어 영역은 플러시 하지 않아도 되는거 아닌가 생각이 듭니다.
또한 캐시를 플러시 한다는 뜻이 캐시의 데이터를 메모리에 반영하는, 즉 write-back 동작인지도 궁굼합니다.
제가 검색을 통해 찾아봤을 때는 캐시 flush는 캐시를 invalidate 하여 캐시를 메인 메모리에 반영하지 않고 초기화만 하는 것으로만 나왔습니다.
그런데 캐시 플러시가 메인 메모리에 반영하지 않는다면 데이터가 없어져 버리니, 제가 알아본 개념이 잘못된 것이 아닌가 합니다.
제가 자바로 실행했을 때 역시 컨텍스트 스위칭이 발생하면서 캐시 데이터가 메인 메모리로 반영이 되고, 그 값을 가져옴으로써 스레드가 종료될 수 있었습니다.
Answer 2
0
답변 감사합니다!
그렇게 된다면 캐시에 쓴 데이터가 메인 메모리에 반영되는 시점은 플러시 되는 시점이라기 보다는 어느 시점에 되기는 한다 정도로만 이해하면 될까요??
0
.
맞습니다. 일반적으로 스레드간의 컨텍스트 스위칭은 Cache Flush가 발생하지 않습니다. 말하고자 한 것은 Context Switching을 피하자라는 것이었는데 강의를 쉽게 만들기 위해 복잡한 부분은 제거 하였는데 이 부분을 감안하더라도 최악의 경우 Cache Flush가 발생한다라고 말했어야 했습니다.
.
자세하게 설명드리지 않다보니 혼란을 겪으신거 같습니다. Cache에 쓰기를 할 때 쓴 데이타는 CPU의 Write Buffer에 남게 됩니다. 별도의 Buffer가 있기 때문에 Cache를 Flush해도 데이타가 유실되지 않습니다. Write-Back이냐 Write-Through냐는 CPU 아키텍처에 따라 다릅니다. 요즘 CPU는 이 두가지 보다 훨씬 복잡합니다. 다만 Write-Back에 가깝다라고 말 할 수 있을 거 같습니다.
보장할 수 있는 건 어떤 경우에도 Write한 Data는 Main Memory에 써진다는 겁니다.
이 그림을 보시면 더 이해가 잘 되실거 같습니다.

.
답변이 되었나요?
관리자 페이지 질문
0
11
1
19강 15_2) 템블릿에 List가 없는경우는 어떻게 해야되나요?
0
11
1
Spider와 Monster 구현 방식을 구분한 이유
1
16
1
Sprute Sheet에 대해서.
0
13
1
15강 12-3) 값 제출후 mysql 저장이 안됩니다.
0
15
2
드랍 테이블로 지운 ordes에 대해서 질문
0
23
1
실무 내용 문의드려요
0
24
2
혹시 언리얼 CEF기반 UI에서 한글 입력 오류 해결하신분??
0
29
2
문제 풀이 1번 질문
0
28
1
ResourceManager 클래스 관련 질문
1
33
2
twitterdb 연결이 안돼요
1
28
2
크레딧 충전
0
41
1
Kafka Cluster 구성도 질문
0
23
1
아주 작은 정오표 전달드립니다.
0
52
2
수업자료 관련
0
28
1
첨부된 수업자료와 강의 내용이 다릅니다.
0
51
2
몬스터 HP 게이지바 이동
0
23
1
mysql워크벤치를 실행할때마다 오류가 뜹니다. 해결 방법좀 가르켜주세요.
0
44
1
실제로 작은 기업에서 기획 롤
1
27
1
어떻게 상호배제가 이루어지는지 잘 이해가 안갑니다
1
459
2
임계영역에 2개 이상의 스레드가 올 수 있는지요?
0
418
2
1_Process와 Thread protobuf 부분 질문
0
313
1
혹시 학습한 내용을 블로그에 정리해도 될까요?
1
473
1
코틀린으로 해당 C# 예제를 비슷하게 만들어봤는데, 제가 잘못 작성한 걸까요?
1
740
4

