همگام سازی
معنی کلمه همگام سازی در دانشنامه عمومی
نیاز به همگام سازی صرفاً در سیستم های چند پردازنده ای نیست، بلکه برای هر نوعی از فرایند های همزمان استفاده می شود، حتی در یک سیستم تک پردازنده ای نیز کاربرد دارد. در زیر برخی از نیازهای اساسی به همگام سازی ذکر شده است:
انشعاب و الحاق ( fork - join ) : زمانی که یک کار به یک نقطه انشعاب می رسد به ریز کارهای متعددی تقسیم می شود که بعداً توسط تسک های ( به انگلیسی: task ) متعددی سرویس دهی می شوند. بعد از انجام سرویس دهی، هر ریز کار منتظر می ماند تا پردازش تمام ریز کارهای دیگر انجام شود. سپس ریز کارها مجدداً به هم ملحق می شوند و از سیستم خارج می گردند؛ بنابراین برنامه های موازی نیازمند همگام سازی هستند، زیرا تمام فرایند های موازی منتظر چندین فرایندٔ دیگر می مانند تا اجرا شوند.
تولیدکننده - مصرف کننده: در یک رابطهٔ تولیدکننده - مصرف کننده، فرایند مصرف کننده وابسته به فرایند تولیدکننده است تا زمانی که داده مورد نیاز تولید شود.
منابعی با استفاده انحصاری: زمانی که فرایند های متعدد وابسته به یک منبع هستند و نیاز است تا به طور همزمان به آن دسترسی پیدا کنند، سیستم عامل باید این اطمینان را پیدا کند که فقط یک پردازنده در یک نقطهٔ مشخص از زمان به آن دسترسی پیدا کند. این کار باعث کاهش همروندی می شود.
همگام سازی به این شکل تعریف می شود که مکانیسمی است که باعث می شود دو یا بیش از دو فرایند یا ریسمانٔ همروند، برخی اجزا خاص از برنامه به نام قسمت بحرانی را به صورت همزمان اجرا نکنند. دسترسی فرایند ها به قسمت بحرانی توسط تکنیک های همگام سازی کنترل می شود. زمانی که یک ریسمان شروع به اجرای قسمت بحرانی می کند ( بخش متوالی برنامه ) ، ریسمان دیگر باید منتظر بماند تا ریسمان اول تمام شود. اگر تکنیک های همگام سازی مناسب وجود نداشته باشد این وضعیت ممکن است موجب یک شرایط مسابقه ای شود که در آن مقادیر متغیرها ممکن است غیرقابل پیش بینی باشد و بسته به زمان بندی تعویض های زمینه ای فرایند ها یا ریسمان ها، متغیر باشد. برای مثال فرض کنید که سه فرایند با نام های ۱، ۲ و ۳ وجود دارند. هر سه فرایند به صورت هم روند اجرا می شوند و این نیاز به وجود می آید که آنها یک منبع مشترک ( بخش بحرانی ) را مشابه شکل ۱ به اشتراک بگذارند. در اینجا باید از همگام سازی استفاده شود تا هیچگونه تقابلی برای دسترسی به این منبع مشترک به وجود نیاید. از این رو زمانی که فرایند ۱ و ۲ هر دو سعی می کنند تا به منبع دسترسی پیدا کنند، منبع مورد نظر باید در هر لحظه فقط به یکی از این دو اختصاص پیدا کند. اگر منبع به فرایند ۱ اختصاص پیدا کند، فرایند دیگر یعنی فرایند ۲ باید منتظر بماند تا فرایندٔ ۱ منبع را آزاد کند، چنانچه که در شکل ۲ نشان داده شده است.
جملاتی از کاربرد کلمه همگام سازی
یک برنامه ممکن است کد را در چندین رشته بهطور همزمان در یک فضای آدرس مشترک اجرا کند که در آن هر یک از آن رشتهها تقریباً به تمام حافظه هر رشته دیگر دسترسی دارد. امنیت ریسمان خاصیتی است که با برقراری مجدد برخی از تناظرهای بین جریان واقعی کنترل و متن برنامه، با استفاده از همگام سازی به کد اجازه میدهد در محیطهای چند رشتهای اجرا شود.
قبل انتشار آیسینک، پالم نرم افزار همگام سازی شخصی خود را به نام «پالم دسکتاپ» برای مک منتشر کرده بود که پس از مدتی آن را کنار گذاشت. اپل نیز نرم افزار خود را به اسم «کانال پالم» ایجاد کرد تا آیسینک را با پروتکل «هات سینک پالم» سازگار کند. ای سینک نسخه ۲٫۲ به طور مستقیم «پالم کاندوینت» را یکپارچه کرده بود. بعد از اینکه «پالم پری» در سال ۲۰۰۹، «هات سینک» را کنار گذاشت، اپل در اقدامی مشابه پشتیبانی پالم را آیسینک نسخه ۳٫۱ در مک اواِس اسنو لیپورد کنار گذاشت.
ولمن همزمان با کار تجربی خود، در نظریهپردازی تحلیل شبکههای اجتماعی نقش داشتهاست. جامعترین بیانیه در مقاله مقدماتی وی با ساختارهای اجتماعی است که با اس دی برکوویتز همگام سازی شدهاست.
در ابتدا خدماتی همچون وام قرض الحسنه از طریق صندوقهای خیریه تأمین کرد. از سال ۱۹۵۰ توانست شعبات خود را در سراسر ترکیه ایجاد و گستره فعالیتهای خود را افزایش دهد. این بانک در سال ۱۹۶۴ با برنامهریزی و اصلاح ساختار بانکی و همگام سازی به روز رسانی شیوه خدمات و مدیریت فعال توانست سرمایه هنگفتی را در کنار ایجاد شبکه سراسری در داخل کشور جذب نماید.
در ژانویه ۲۰۰۳، رجیستر گزارش داد که اشکالی در آیسینک مدل ۱٫۱ میتواند منجر به پاک شدن مخاطبانی که شماره تلفن انها در سیستم وجود نداشت از گوشیهایی که همگام سازی شده است شود. آیسینک از پورت ۳۰۰۴ استفاده میکرد که در صورت فعال بودن فایروال میتوانست باعث مسدود شدن مک اواِس اکس نیز شود.
در بعضی موارد، موازیسازی برای برنامهنویس شفاف است، مانند موازیسازی در سطح بیت یا در سطح دستورالعمل، اما نوشتن الگوریتمهای صریحاً موازی، به ویژه آنهایی که از همروندی استفاده میکنند، دشوارتر از موارد متوالی است، زیرا همروندی باعث بوجود آمدن چندین کلاس جدید از اشکالات نرمافزاری بالقوه میشود، که شرایط مسابقهای شایعترین آنها است. ارتباط و همگام سازی بین زیر-وظایف مختلف معمولاً از بزرگترین موانع دستیابی به عملکرد بهینه در برنامهٔ موازی است.
اینستنت میتواند با برنامههای گوگل فیت و اپل هلث همگام سازی شود.