SHARING MEMORY IN LINUX exampel
در لینوکس میشود با دستور fork یک پروسس جدید ساخت که از همان خطی که این تابع صدا زده شده ، همراه با پروسس اصلی بصورت موازی برنامه را اجرا میکند . در این حال میتوانیم با دستور if برای هر پروسس ایجاد شده(که یک pid دارد) یک قطعه کد اختصاص دهیم . تااینجا که کاری نداشت .
این پروسس ها نمیتونن همزمان از متغیرهای عمومی استفاده کنن . درحقیقت اولین پروسسی که به توابع عمومی دسترسی پیدا کنه صاحب اون میشه و بقیه نمیتونن به اون متغیر دست بزنن(میتونین امتحان کنین) . برای اینکه یه حافظه مشترک بسازیم باید از روش های خاصی استفاده کنیم . یکی از این روشها روش MEMORY SHARING هست .
روش دیگه PIPE هست که فعلا توضیح نمیدم(چون بلدنیستم). در روش SHARING MEMORY در حالت ساده از این دستورات استفاده میشه :
دستور shmget برای تخصیص حافظه مشترک با اندازه خاص .
دستور shmat برای اتصال یک پوینتر به حافظه مشترک با id خاص .
دستور shmdt برای جدا کردن پوینتر از حافظه مشترک .
دستور shmctl برای تخریب حافظه مشترک .
این برنامه مثالی از sharing memory هستش که یک آرایه رو در یه ماتریس ضرب میکنه . پروسس پدر صبر میکنه تا پروسس فرزند کار خوندن دو آرایه رو انجام بده ، بعد اونها رو در هم ضرب میکنه .اگه اشکالی داشت ببخشید به بزرگی خودتون .
سلام دوست عزیز وبلاگتون بسیار زیباست.اگه میشه به سایت من هم سر بزنید.ممنون