The concurrent execution of “counter++” and “counter--” is equivalent
to a sequential execution in which the lower-level statements presented
previously are interleaved in some arbitrary order (but the order within each
high-level statement is preserved). One such interleaving is the following:
-> but the order withen each high-level statement is preserved 각각의 하이레벨 문장 내에서의 순서는 보존된다? 이게 무슨 말임? 내가 해석을 잘못한건가??
아니개인적으로공부하는거 학교에서 운영체제 수업들을 때는 다른책(교수님이 번역에 참여하신책)으로 했었음
말 그대로임. counter++와 counter-- 명령이 동시에(concurrently) 실행될 경우 기계어(어셈블리어) 레벨에서는 순서가 서로 뒤죽박죽이 된 채 순서대로 실행되는 거랑 같지만 고급 언어 문장 counter++, counter--로만 보면 명령어 한 줄 뿐이기 때문에 counter++가 먼저 실행되고 counter--가 실행되든, counter--가 먼저 실행되고 counter++가 실행되든 그런 식으로 명령 순서대로 실행되는 게 보장된다는 뜻임.
counter++는 내부적으로 LOAD counter, ADD register, 1, STORE counter 이렇게 세 개의 어셈 명령어로 구현될 거고(LOAD는 메모리에서 레지스터로 값 이동, ADD는 레지스터의 값 증가, STORE는 레지스터의 값을 메모리로 이동), counter--는 내부적으로 LOAD counter, SUB register, 1, STORE counter 식으로 구현될 텐데 어셈 레벨에서 이 두 명령어가 동시 실행되면 LOAD counter LOAD counter ADD register, 1, STORE counter, SUB register, 1, STORE register 식으로 어셈 명령어끼리 순서가 뒤죽박죽이 될 수 있다는 걸 말하는 거임. 이렇게 되면 결과는
counter 변수는 원래 값에서 -1이 된 값이 됨. 둘 다 LOAD를 먼저 해 버렸으니깐.
쉽게 말해 atomic operation의 필요성을 이해시키기 위해 든 예시일 듯.
오월신금 // 너야 말로. 나는 지금 수크라제가 올린 저 원문만 보고는 잘 이해가 가지 않아서 직접 원서랑 영어 강의 교안을 찾아보고 온 거니까.
오월신금의 설명이 틀렸고 내 설명이 맞아.
아 그렇군 뭔 말인지 이해감 땡큐 땡큐
ㅅㅅㅅ 님 감사
오월신금 // 우기지 좀 마. 낮은 레벨 영역과 높은 레벨 영역에 대한 설명도 틀리게 했고, 스레드 동시 실행에 대한 설명도 이상하게 했잖아.
저기서 lower-level statement, high-level statement는 저급/고급 프로그래밍 언어 문장을 말하는 거야.
concurrent execution과 counter라는 말만 봐도 알 수 있는 내용이고 그건. arbitrary에 대한 문맥도 제대로 해석 못했는데 그걸 맞았다고 칠 수 없지. 아무리 너의 해석에서 lower-level, high-level 부분을 빼고 본다고 해도.
덧붙여서 우리 학교 운영체제 과목 수업이 Operating System Concepts 영어 원서가 강의 교재고 수업은 영어 강의 교안으로 진행됐음. 공룡 책 내용은 내가 누구보다도 잘 안다.
영어 부심 부린 적 없고, 우리 학교는 영어 스피킹 안한다. 카이스트를 제외하고 연고대 등 영어 스피킹 안하는 학교 많아. ^^ 아니 그니까 까놓고 말해서. 니가 니 머리 속으로는 그거에 대해서 제대로 알고 있던 모르고 있던 그건 중요하지 않고, 지금 니가 디씨 덧글에 대외적으로 써 놓은 덧글을 보면 누가 봐도 틀린 말인데 그걸 "내말이 그말임"으로 묻어가려고 하지 말라고. 내 덧글은 정확한 내용인데 니 덧글은 설명이 이상하고 lower-level statement, high-level statement, arbitrary 등은 완전히 틀렸으니까. 밑에 bounded buffer 부분도 아주 소설을 써 놨던데 제대로 모르는 내용은 늅늅이들 혼동주지 말고 제발 나서지 좀 마라.
수크라제가 올린 Bounded buffer 질문 글에 대한 네 덧글도 엉터린 거 아냐?
그니까. 부분 기술만 해 놓고 이해하기를 바라는 건 너의 설명력 부족 때문이 아닐까. 다짜고짜 넣을 수 있는 게 bounded라고? 풉ㅋㅋ
이제부터 컴퓨터 분야에서 bounded라는 표현이 나오면 다짜고짜 넣을 수 있는 걸로 이해해야 겠네. 너의 설명대로라면. bounded라는 용어 자체를 설명해야지 그런 애매한 말로 설명하면 되냐? 그 다짜고짜가 언제든지라는 건지, 수량이 무한하다는 건지도 애매모호한 중의적인 말인데?
문법나찌 빙의인가
아니 unbounded. 아무튼 니 설명이 하도 이상해서 나도 헷갈린다.
ㅇㅇ 평가는 사람들이 해 주겠지. 뭐.
한글로 써주면 안돠냐능?
뭐 그렇지. 질문자가 물어보는 게 그 부분 기술이 아니라는 것만 빼고. 니가 말한 부분은 질문자의 궁금증을 충족시켜 주기에 부족한 부분이었다 이 말임. 오히려 혼동을 줄 수도 있고. 예를 들어 남자랑 여자랑 그게 뭔지 전혀 모르는 사람이 남자가 뭐냐고 물어봤는데 고추 달려있는 게 남자라고 답을 하면 사람이 아니라도 고추를 달고 있는 동물은 남자라고 착각할 테니까.
어떤 질문에 대해서 답을 할 거면 한 마디만 틱 던지지 말고 좀 오해의 소지가 없게 두번 세번 검토해서 답변을 달아라. 무슨 장난으로 질문을 하고 답을 하는 것도 아니고, 남자가 뭐냐고 묻는 말에 고추가 달려있는 거다 라고 설명하면 그게 모범 답안이냐? 레포트로 남자의 정의에 대해서 논하라고 쓰면 고추가 달린 거 라고 쓸 사람이네. 음이온에 대해서 설명하라고 하면 "몸에 좋은 거"라고 설명할 사람.
쑥그라제는 대충 설명해줘도 됨
니 논리대로라면 음이온이 뭐냐고 물었을 때 몸에 좋은 거라고 답변하면 아주 훌륭한 답변이냐? ㅋㅋㅋ 웃고 간다.
(관노에게 한 말 아님.)
오월신금이 말한 '영역'이란 단어의 정의가 매우 불확실함. 대체 각각의 영역이 뭘 말하는지 모르겠음, 하이 레벨에서든 로우 레벨에서든 counter는 접근이 공유되는 영역이고, 단지 하이 레벨에서의 연산의 결과가 로우 레벨 연산 순서에 관계없이 보존됨을 설명하는 내용이기 때문에 내가 보기엔 오월신금이 처음 언급한 내용이 불확실한 것 같음. 말하려는 의도가 어쨌는진 모르겠고 전달이 잘못 되었음
잘못을 지적을 해 주면 고마워하면서 받아들이고 이제부터라도 정확하게 알려고(뭐 니 말대로라면 "제대로 설명하려고") 노력을 하지는 않고 변명질만 하는 태도에 노답임을 느끼고 간다.