خواندن و نوشتن در ثبات به طور پیشفرض اتمیه؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۲۴۳ نفر آنلاین
۷۲ عضو و ۱۷۱ مهمان در سایت حاضرند

خواندن و نوشتن در ثبات به طور پیشفرض اتمیه؟

+2 امتیاز

می خواستم بدونم وقتی تو ی ثبات 32 بیتی تراز شده ی چی می خونیم یا می نویسیم به صورت اتمی هست یا نه؟

مثلا فرض کنید Thread1 داره می نویسه و چند بیت اول رو نوشته و از اونور Thread2 میاد همون ادرس رو می خونه .

;Thread1
MOV [0xFFFF32], EAX

;Thread2
MOV EAX, [0xFFFF32]

 

سوال شده اردیبهشت 21, 1393  بوسیله ی سارینا (امتیاز 17)   1 3 5
دوباره تگ گذاری شد مرداد 21, 1393 بوسیله ی BlueBlade

1 پاسخ

+3 امتیاز

کلا هر هسته ی CPU تنها یک سری Register داره که با استفاده از روش Context Switch اون ها رو بین Process ها و Thread ها تقسیم میکنه . و در یک زمان فقط یک Thread در هر هسته درحال اجرا شدن هست .

داده های مخصوص و وضعیت هر Thread (زمینه‌) مانند Register هاش و Stack و ... در RAM نگهداری میشه . و وقتی زمان به اجرای هر Thread میشه سیستم عامل با استفاده از Context Switching زمینه Thread رو بازیابی میکنه و اون ها رو به Register های اصلی انتقال میده و شما با اون Register ها کار میکنید و وقتی که دوباره سیستم عامل میخواد که نوبت رو به Thread بعدی بده دوباره زمینه Thread رو ذخیره میکنه تا بتونه اونها رو تو نوبت بعدی Thread بازیابی کنه و به همین روال ادامه داره .

پس میشه گفت که هر Thread ثبات های (مثلا EAX ) مخصوص خودش رو داره و از Thread دیگه جدا هست و Thread دیگه تو اونها دخالتی نداره و ثبات هاشون Atomic هست .

پاسخ داده شده تیر 31, 1393 بوسیله ی Ali Rahbar (امتیاز 4,240)   6 16 46
...