강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của reewoo46743300
reewoo46743300

câu hỏi đã được viết

Lý thuyết hệ điều hành tối thiểu có thể dễ dàng học được với Bear Book

Tài nguyên được chia sẻ và các lĩnh vực quan trọng

공유자원과 임계구역

Đã giải quyết

Viết

·

311

0

안녕하세요 선생님

강의 정말 잘 듣고 있습니다..!

레지스터에 대한 설명이 잠깐 나와서 궁금한 점이 생겼는데요..!

생산자-소비자 문제를 설명하시면서,

sum = sum + 1;

sum -= 1;

기계어로 쪼개보면 원자성이 보장되지 않아 문제가 발생하는 것을 확인했습니다.
그런데 값을 읽고, 연산할 때 eax 레지스터를 사용하는 것으롭 봤는데요..!

두 곳에서 사용되는 각 eax는 이름만 같을 뿐 사용되는 영역은 달라서 위에 eax는 1이고, 아래의 eax는 -1을 가지는 건가요??

운영체제

Câu trả lời 2

1

nullnull8537님의 프로필 이미지
nullnull8537
Người chia sẻ kiến thức

EAX 레지스터 뿐만 아니라 각 스레드마다 개별적인 레지스터 값들 별도로 저장해 갖고 있습니다. 😄

1

nullnull8537님의 프로필 이미지
nullnull8537
Người chia sẻ kiến thức

만일 두 연산이 순차적으로 한 스레드 내에서 실행된다면 서로 영향을 주지 않습니다. 그러나 sum이 전역변수이고 1씩 누산하거나 감산하는 연산을 별도 스레도 분리해 동시에 실행한다면 동기화 문제가 발생할 있겠습니다. 이 경우 EAX에 저장된 값은 서로 다를 수 있습니다. 참고하시기 바랍니다. 😄

HELLO님의 프로필 이미지
HELLO
Người đặt câu hỏi

답변 감사드립니다.

그러면 eax는 스레드마다 독립적으로 있다라고 봐도 되는 걸까요?

Hình ảnh hồ sơ của reewoo46743300
reewoo46743300

câu hỏi đã được viết

Đặt câu hỏi