در رایانش، حافظه مشترک یا حافظه اشتراکی حافظه ای است که می تواند به طور هم زمان توسط چندین برنامه مورد دستیابی قرار گیرد. این کار به منظور برقراری ارتباط بین برنامه ها و همچنین پرهیز از قرار دادن کپی های زائد اطلاعات در حافظه انجام می شود. حافظه اشتراکی راهی مؤثر برای رد و بدل کردن داده ها مابین برنامه ها می باشد. بسته به زمینه، برنامه ها می توانند بر روی یک پردازنده واحد یا بر روی چندین پردازنده مستقل اجرا شوند.
استفاده از حافظه برای ارتباط داخل یک برنامه، برای مثال میان ریسه های آن، نیز حافظه مشترک محسوب می گردد.
در سخت افزار کامپیوتر، حافظه مشترک به یک بلوک یا خانه از حافظه رم به صورت تصادفی دسترسی دارد که می تواند توسط چندین واحد پردازش مختلف ( CPU ) در یک سیستم کامپیوتری چند پردازنده ای قابل دسترس باشد.
سیستم های حافظه مشترک ممکن است از موارد زیر استفاده کنند[ ۱]
دسترسی به حافظه یکنواخت ( UMA ) : همه پردازنده ها حافظه فیزیکی را به یک شکل به اشتراک می گذارند.
دسترسی غیر یکنواخت به حافظه ( NUMA ) : زمان دسترسی به حافظه به مکان حافظه به پردازنده بستگی دارد.
معماری حافظه فقط کش ( COMA ) : حافظه های موقت برای پردازنده های هر گره به جای حافظه اصلی واقعی به عنوان کش استفاده می شود.
برنامه ریزی یک سیستم حافظه مشترک نسبتاً آسان است زیرا همه پردازنده ها یک واحد از داده ها را به اشتراک می گذارند و ارتباط بین پردازنده ها می تواند به همان سرعتی باشد که به یک خانه از حافظه دسترسی دارد. مشکل سیستم های حافظه مشترک این است که بسیاری از پردازنده ها به دسترسی سریع به حافظه نیاز دارند و احتمالاً حافظه پنهان را ذخیره می کنند که دو عارضه دارد:[ ۲]
کاهش زمان دسترسی: وقتی چندین پردازنده سعی می کنند به یک خانه از حافظه رم دسترسی پیدا کنند، باعث ایجاد اختلال می شود. تلاش برای دسترسی به مکان های حافظه نزدیک ممکن است باعث اشتراک گذاری نادرست شود .
عدم انسجام داده ها: هر زمان که یک کش با اطلاعاتی که ممکن است توسط پردازنده های دیگر استفاده شود به روز می شود، تغییر باید به سایر پردازنده ها منعکس شود، در غیر این صورت پردازنده های مختلف با داده های نامنسجم کار می کنند. چنین پروتکل های انسجام حافظه پنهان ، زمانی که به خوبی کار می کنند، می توانند دسترسی با کارایی بسیار بالایی به اطلاعات مشترک بین چندین پردازنده فراهم کنند.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفاستفاده از حافظه برای ارتباط داخل یک برنامه، برای مثال میان ریسه های آن، نیز حافظه مشترک محسوب می گردد.
در سخت افزار کامپیوتر، حافظه مشترک به یک بلوک یا خانه از حافظه رم به صورت تصادفی دسترسی دارد که می تواند توسط چندین واحد پردازش مختلف ( CPU ) در یک سیستم کامپیوتری چند پردازنده ای قابل دسترس باشد.
سیستم های حافظه مشترک ممکن است از موارد زیر استفاده کنند[ ۱]
دسترسی به حافظه یکنواخت ( UMA ) : همه پردازنده ها حافظه فیزیکی را به یک شکل به اشتراک می گذارند.
دسترسی غیر یکنواخت به حافظه ( NUMA ) : زمان دسترسی به حافظه به مکان حافظه به پردازنده بستگی دارد.
معماری حافظه فقط کش ( COMA ) : حافظه های موقت برای پردازنده های هر گره به جای حافظه اصلی واقعی به عنوان کش استفاده می شود.
برنامه ریزی یک سیستم حافظه مشترک نسبتاً آسان است زیرا همه پردازنده ها یک واحد از داده ها را به اشتراک می گذارند و ارتباط بین پردازنده ها می تواند به همان سرعتی باشد که به یک خانه از حافظه دسترسی دارد. مشکل سیستم های حافظه مشترک این است که بسیاری از پردازنده ها به دسترسی سریع به حافظه نیاز دارند و احتمالاً حافظه پنهان را ذخیره می کنند که دو عارضه دارد:[ ۲]
کاهش زمان دسترسی: وقتی چندین پردازنده سعی می کنند به یک خانه از حافظه رم دسترسی پیدا کنند، باعث ایجاد اختلال می شود. تلاش برای دسترسی به مکان های حافظه نزدیک ممکن است باعث اشتراک گذاری نادرست شود .
عدم انسجام داده ها: هر زمان که یک کش با اطلاعاتی که ممکن است توسط پردازنده های دیگر استفاده شود به روز می شود، تغییر باید به سایر پردازنده ها منعکس شود، در غیر این صورت پردازنده های مختلف با داده های نامنسجم کار می کنند. چنین پروتکل های انسجام حافظه پنهان ، زمانی که به خوبی کار می کنند، می توانند دسترسی با کارایی بسیار بالایی به اطلاعات مشترک بین چندین پردازنده فراهم کنند.
wiki: حافظه مشترک