File locking
فائل لاکنگ ایک ایسا طریقہ کار ہے جو کمپیوٹر فائل، یا فائل کے کسی علاقے تک رسائی کو محدود کرتا ہے، صرف ایک صارف یا عمل کو ایک مخصوص وقت پر اس میں ترمیم یا حذف کرنے کی اجازت دیتا ہے اور فائل کو پڑھنے سے روکتا ہے جب کہ اس میں ترمیم یا حذف کیا جا رہا ہو۔ سسٹم کلاسیکی انٹرسیڈنگ اپ ڈیٹ کے منظر نامے کو روکنے کے لیے لاکنگ کو نافذ کرتے ہیں، جو کہ کسی بھی فائل میں اپ ڈیٹ کے عمل کی سیریلائزیشن کو نافذ کرکے ریس کی حالت کی ایک عام مثال ہے۔ مندرجہ ذیل مثال انٹرسیڈنگ اپ ڈیٹ کے مسئلے کی وضاحت کرتی ہے: پروسیس اے اکاؤنٹ کی معلومات پر مشتمل فائل سے کسٹمر ریکارڈ پڑھتا ہے، جس میں کسٹمر کا اکاؤنٹ بیلنس اور فون نمبر شامل ہے۔ پروسیس بی اب اسی فائل سے وہی ریکارڈ پڑھتا ہے، اس لیے اس کی اپنی کاپی ہے۔ پروسیس اے کسٹمر ریکارڈ کی اپنی کاپی میں اکاؤنٹ بیلنس کو تبدیل کرتا ہے اور ریکارڈ کو فائل میں واپس لکھ دیتا ہے۔ پروسیس بی، جس کے پاس اب بھی کسٹمر ریکارڈ کی اپنی کاپی میں اکاؤنٹ بیلنس کی اصل باسی قیمت ہے، اکاؤنٹ بیلنس کو اپ ڈیٹ کرتا ہے اور کسٹمر ریکارڈ کو فائل میں واپس لکھ دیتا ہے۔ پروسیس بی نے اب فائل میں اپنا باسی اکاؤنٹ بیلنس ویلیو لکھ دیا ہے، جس کی وجہ سے پروسیس اے کی طرف سے کی گئی تبدیلیاں ختم ہو جاتی ہیں۔ زیادہ تر آپریٹنگ سسٹم ریکارڈ لاکنگ کے تصور کی حمایت کرتے ہیں، جس کا مطلب ہے کہ کسی بھی فائل کے اندر انفرادی ریکارڈ کو لاک کیا جا سکتا ہے، اس طرح بیک وقت اپ ڈیٹ کے عمل کی تعداد میں اضافہ ہوتا ہے۔ ڈیٹا بیس کی دیکھ بھال فائل لاکنگ کا استعمال کرتی ہے، جس کے ذریعے یہ ڈیٹا بیس کے نیچے موجود پوری فزیکل فائل تک رسائی کو سیریلائز کر سکتی ہے۔ اگرچہ یہ کسی بھی دوسرے عمل کو فائل تک رسائی سے روکتا ہے، لیکن یہ ہر لاک کو حاصل کرنے اور جاری کرنے کے اوور ہیڈ کو ہٹا کر فائل کے بہت سے علاقوں کو انفرادی طور پر لاک کرنے سے زیادہ موثر ہو سکتا ہے۔ فائل لاک کا ناقص استعمال، کسی بھی کمپیوٹر لاک کی طرح، ناقص کارکردگی یا ڈیڈ لاک کا باعث بن سکتا ہے۔ فائل لاکنگ سے مراد کمپیوٹر صارف کی طرف سے ونڈوز سیکیورٹی، این ٹی ایف ایس اجازتوں کا استعمال کرکے یا تھرڈ پارٹی فائل لاکنگ سافٹ ویئر انسٹال کرکے لاگو کی جانے والی اضافی سیکیورٹی بھی ہو سکتی ہے۔ مین فریموں میں آئی بی ایم نے 1963 میں او ایس/360 کا استعمال کرتے ہوئے مین فریم کمپیوٹرز میں استعمال کے لیے فائل لاکنگ کا آغاز کیا، جہاں اسے "خصوصی کنٹرول" کہا جاتا تھا۔ مائیکروسافٹ ونڈوز میں مائیکروسافٹ ونڈوز مشترکہ فائلوں تک رسائی کا انتظام کرنے کے لیے تین الگ الگ میکانزم استعمال کرتا ہے: شیئر ایکسیس کنٹرولز کا استعمال کرتے ہوئے جو ایپلی کیشنز کو پڑھنے، لکھنے یا حذف کرنے کے لیے مکمل فائل تک رسائی کے اشتراک کی وضاحت کرنے کی اجازت دیتا ہے، بٹ رینج لاک کا استعمال کرتے ہوئے ونڈوز فائل سسٹم کے ذریعے ایک فائل کے اندر کے علاقوں تک پڑھنے اور لکھنے کی ثالثی کے لیے، جو فائلوں کو چلانے کو لکھنے یا حذف کرنے کے لیے کھولنے کی اجازت نہیں دیتا ہے، ونڈوز کو ایم ایس-ڈاس سسٹم سے شیئر تک رسائی کے کنٹرول کے الفاظ وراثت میں ملتے ہیں، جہاں شیئرنگ کو ایم ایس-ڈاس 3 میں متعارف کرایا گیا تھا۔ اس طرح، ایک ایپلیکیشن کو فائل کھولتے وقت واضح طور پر شیئرنگ کی اجازت دینی چاہیے ؛ بصورت دیگر اس کے پاس بند ہونے تک فائل تک خصوصی طور پر پڑھنے، لکھنے اور حذف کرنے کی رسائی ہوتی ہے (رسائی کی دیگر اقسام، جیسے کہ فائل کی صفات کو بازیافت کرنے کی اجازت ہے۔) مشترکہ رسائی کے ساتھ کھولی گئی فائل کے لیے، ایپلی کیشنز پھر فائل کے مخصوص علاقوں تک رسائی کو کنٹرول کرنے کے لیے بائٹ رینج لاکنگ کا استعمال کر سکتی ہیں۔ اس طرح کے بائٹ رینج لاک فائل کے ایک علاقے (آفسیٹ اور لمبائی) اور لاک کی قسم (مشترکہ یا خصوصی) کی وضاحت کرتے ہیں۔ نوٹ کریں کہ فائل کے لاک ہونے والے علاقے میں فائل کے اندر ڈیٹا ہونا ضروری نہیں ہے، اور ایپلی کیشنز بعض اوقات اپنی فعالیت کو نافذ کرنے کے لیے اس صلاحیت کا استحصال کرتی ہیں۔ ان ایپلی کیشنز کے لیے جو ونڈوز میں فائل ریڈ/رائٹ اے پی آئی استعمال کرتی ہیں، بائٹ رینج لاکز کو فائل سسٹمز کے ذریعے نافذ کیا جاتا ہے (جسے لازمی لاک بھی کہا جاتا ہے) جو ونڈوز کے اندر انجام دیتے ہیں۔ ان ایپلی کیشنز کے لیے جو ونڈوز میں فائل میپنگ API استعمال کرتے ہیں، بائٹ رینج لاک نافذ نہیں کیے جاتے ہیں (جنہیں ایڈوائزری لاک بھی کہا جاتا ہے۔) بائٹ رینج لاکنگ کے ونڈوز سسٹم پر دیگر مضر اثرات بھی ہو سکتے ہیں۔ مثال کے طور پر، ونڈوز فائل شیئرنگ میکانزم عام طور پر تمام کلائنٹس کے لیے فائل کے کلائنٹ سائیڈ کیشنگ کو غیر فعال کر دے گا جب کسی بھی کلائنٹ کے ذریعے بائٹ رینج لاک استعمال کیے جاتے ہیں۔ کلائنٹ سست رسائی کا مشاہدہ کرے گا کیونکہ پڑھنے اور لکھنے کی کارروائیوں کو سرور پر بھیجا جانا چاہیے جہاں فائل محفوظ ہے۔ ایپلی کیشن پروگرام میں غلط ایرر ہینڈلنگ ایک ایسے منظر نامے کا باعث بن سکتی ہے جہاں فائل لاک ہو (یا تو "شیئر" رسائی کا استعمال کرتے ہوئے یا بائٹ رینج فائل لاکنگ کے ساتھ) اور دوسری ایپلی کیشنز کے ذریعے اس تک رسائی حاصل نہیں کی جا سکتی۔ اگر ایسا ہے تو، صارف دستی طور پر خرابی والے پروگرام کو ختم کرکے فائل تک رسائی کو بحال کر سکتا ہے۔ یہ عام طور پر ٹاسک مینیجر یوٹیلیٹی کے ذریعے کیا جاتا ہے۔ کریٹ فائل فنکشن کا شیئرنگ موڈ (dwShareMode) پیرامیٹر (فائلیں کھولنے کے لیے استعمال ہوتا ہے) فائل شیئرنگ کا تعین کرتا ہے۔ شیئرنگ موڈ کو پڑھنے، لکھنے، یا رسائی کو حذف کرنے، یا ان کے کسی بھی امتزاج کے لیے فائل کو شیئر کرنے کی اجازت دینے کے لیے متعین کیا جا سکتا ہے۔ فائل کو کھولنے کی بعد کی کوششیں فائل تک پہلے سے دی گئی تمام شیئرنگ رسائی کے ساتھ مطابقت رکھتی ہونی چاہئیں۔ جب فائل بند ہوتی ہے، تو اس مخصوص فائل کی طرف سے لگائی گئی پابندیوں کو دور کرنے کے لیے شیئرنگ تک رسائی کی پابندیوں کو ایڈجسٹ کیا جاتا ہے۔ بائٹ رینج لاکنگ کی قسم کا تعین لاک فائل ایکس فنکشن میں dwFlags پیرامیٹر کے ذریعے کیا جاتا ہے جو فائل کے کسی حصے کو لاک کرنے کے لیے استعمال ہوتا ہے۔ ونڈوز اے پی آئی فنکشن لاک فائل کو بھی استعمال کیا جا سکتا ہے اور فائل کے علاقے پر ایک خصوصی لاک حاصل کر سکتا ہے۔ کوئی بھی فائل جس میں ایک قابل عمل پروگرام فائل ہو جو اس وقت کمپیوٹر سسٹم پر بطور پروگرام چل رہی ہو (مثال کے طور پر۔ ایک EXE، COM، DLL، CPL یا دیگر بائنری پروگرام فائل فارمیٹ) عام طور پر آپریٹنگ سسٹم کے ذریعہ خود ہی لاک کیا جاتا ہے، جو کسی بھی ایپلی کیشن کو اس میں ترمیم یا حذف کرنے سے روکتا ہے۔ ایسا کرنے کی کسی بھی کوشش کو شیئرنگ کی خلاف ورزی کی غلطی کے ساتھ مسترد کر دیا جائے گا، اس حقیقت کے باوجود کہ پروگرام کی فائل کسی بھی ایپلی کیشن کے ذریعے نہیں کھولی گئی ہے۔ تاہم، کچھ رسائی کی اب بھی اجازت ہے۔ مثال کے طور پر، چل رہی ایپلی کیشن فائل کا نام تبدیل کیا جا سکتا ہے یا اسے عمل میں لاتے وقت بھی کاپی (پڑھیں) کیا جا سکتا ہے۔ فائل ہینڈلز کا استعمال کرتے ہوئے ونڈوز میں ایپلی کیشنز کے ذریعے فائلوں تک رسائی حاصل کی جاتی ہے۔ ان فائل ہینڈلز کو پروسیس ایکسپلورر یوٹیلیٹی کے ذریعے تلاش کیا جا سکتا ہے۔ اس یوٹیلیٹی کو ہینڈلز کو تھامے ہوئے ایپلی کیشن کو ختم کرنے کی ضرورت کے بغیر انہیں زبردستی بند کرنے کے لیے بھی استعمال کیا جا سکتا ہے۔ یہ ایک غیر متعین رویے کا سبب بن سکتا ہے، کیونکہ پروگرام کو طاقت سے بند ہینڈل کا استعمال کرتے وقت ایک غیر متوقع غلطی موصول ہوگی اور یہ غیر متوقع فائل پر بھی کام کر سکتا ہے کیونکہ ہینڈل نمبر کو ری سائیکل کیا جا سکتا ہے۔ مائیکروسافٹ ونڈوز ایکس پی اور سرور 2003 ایڈیشنز نے این ٹی ایف ایس کے لیے والیوم سنیپ شاٹ (وی ایس ایس) کی صلاحیت متعارف کرائی ہے، جس سے کھلی فائلوں کو کسی بھی خصوصی لاک کے باوجود بیک اپ سافٹ ویئر کے ذریعے رسائی حاصل کی جا سکتی ہے۔ تاہم، جب تک کہ سافٹ ویئر کو خاص طور پر اس خصوصیت کی حمایت کرنے کے لیے دوبارہ نہیں لکھا جاتا، اسنیپ شاٹ صرف کریش مستقل ہوگا، جبکہ مناسب طریقے سے سپورٹ شدہ ایپلی کیشنز آپریٹنگ سسٹم کو "ٹرانزیکشن کے لحاظ سے مستقل" اسنیپ شاٹس بنانے میں مدد کر سکتی ہیں۔ ونڈوز کے تحت بند فائلوں تک رسائی کے لیے دیگر تجارتی سافٹ ویئر میں فائل ایکسیس مینیجر اور اوپن فائل مینیجر شامل ہیں۔ یہ کارنیل موڈ میں فائلوں تک رسائی کے لیے اپنے ڈرائیوروں کو انسٹال کرکے کام کرتے ہیں۔ یونکس جیسے سسٹمز میں یونکس جیسے آپریٹنگ سسٹمز (بشمول لینکس اور ایپل کے میک او ایس) عام طور پر خود بخود کھلی فائلوں کو لاک نہیں کرتے۔ یونیکس کے مختلف ذائقوں میں کئی قسم کے فائل لاکنگ میکانزم دستیاب ہیں، اور بہت سے آپریٹنگ سسٹم مطابقت کے لیے ایک سے زیادہ اقسام کی حمایت کرتے ہیں۔ سب سے عام طریقہ کار ہے۔ اس طرح کے دو دیگر میکانزم ہیں اور، جن میں سے ہر ایک کو ایف سی این ٹی ایل کے اوپر نافذ کیا جا سکتا ہے یا ایف سی این ٹی ایل سے الگ سے نافذ کیا جا سکتا ہے۔ اگرچہ کچھ قسم کے تالے لازمی ہونے کے لیے ترتیب دیے جا سکتے ہیں، یونکس کے تحت فائل تالے ڈیفالٹ ایڈوائزری کے طور پر ہوتے ہیں۔ اس کا مطلب یہ ہے کہ تعاون کرنے والے عمل آپس میں فائل تک رسائی کو مربوط کرنے کے لیے تالے استعمال کر سکتے ہیں، لیکن غیر تعاون کرنے والے عمل تالے کو نظر انداز کرنے اور کسی بھی طرح سے فائل تک رسائی حاصل کرنے کے لیے بھی آزاد ہیں۔ دوسرے لفظوں میں، فائل لاک صرف دوسرے فائل لاکرز کو لاک کرتے ہیں، I/O نہیں۔ دو قسم کے تالے پیش کیے جاتے ہیں: مشترکہ تالے اور خصوصی تالے۔ ایف سی این ٹی ایل کے معاملے میں، فائل کے مختلف حصوں (بائٹ رینجز)، یا پھر پوری فائل پر مختلف قسم کے تالے لگائے جا سکتے ہیں۔ مشترکہ تالے ایک ہی وقت میں متعدد عملوں کے ذریعے رکھے جا سکتے ہیں، لیکن ایک خصوصی تالا صرف ایک عمل کے ذریعے رکھا جا سکتا ہے، اور مشترکہ تالا کے ساتھ ساتھ نہیں رہ سکتا۔ مشترکہ لاک حاصل کرنے کے لیے، ایک عمل کو اس وقت تک انتظار کرنا چاہیے جب تک کہ کوئی بھی عمل خصوصی لاک نہ رکھے۔ ایک خصوصی لاک حاصل کرنے کے لیے، ایک عمل کو اس وقت تک انتظار کرنا چاہیے جب تک کہ کوئی بھی عمل کسی بھی قسم کے لاک کو برقرار نہ رکھے۔ ایف سی این ٹی ایل کے بنائے ہوئے تالے کے برعکس، جو ریوڑ کے ذریعے بنائے جاتے ہیں انہیں کانٹوں کے پار محفوظ کیا جاتا ہے، جس سے وہ سرورز کو فورک کرنے میں مفید ثابت ہوتے ہیں۔ اس لیے ایک سے زیادہ عمل کے لیے ایک ہی فائل پر ایک خصوصی لاک رکھنا ممکن ہے، بشرطیکہ یہ عمل ایک خاندانی تعلق کا اشتراک کریں اور خصوصی لاک ابتدائی طور پر ایک ہی عمل میں بنایا گیا ہو اس سے پہلے کہ کانٹے پر نقل کیا جائے۔ مشترکہ تالے کو بعض اوقات "ریڈ لاک" کہا جاتا ہے اور خصوصی تالے کو بعض اوقات "رائٹ لاک" کہا جاتا ہے۔ تاہم، چونکہ یونکس پر تالے مشاورتی ہیں، اس لیے اس کا نفاذ نہیں کیا جاتا ہے۔ اس طرح یہ ممکن ہے کہ ڈیٹا بیس میں "مشترکہ تحریر" بمقابلہ "خصوصی تحریر" کا تصور ہو ؛ مثال کے طور پر، مشترکہ رسائی کے تحت کسی فیلڈ کو تبدیل کرنے کی اجازت دی جا سکتی ہے، جبکہ ڈیٹا بیس کو کوڑا کرکٹ جمع کرنے اور دوبارہ لکھنے کے لیے خصوصی رسائی کی ضرورت پڑ سکتی ہے۔ فائل کے تالے فائل کے نام کے بجائے اصل فائل پر لاگو ہوتے ہیں۔ یہ اہم ہے کیونکہ یونکس ایک ہی فائل کا حوالہ دینے کے لیے متعدد ناموں کی اجازت دیتا ہے۔ غیر لازمی لاکنگ کے ساتھ، یہ متعدد عملوں سے فائلوں تک رسائی میں زبردست لچک کا باعث بنتا ہے۔ دوسری طرف، کوآپریٹو لاکنگ اپروچ مسائل کا باعث بن سکتا ہے جب کوئی عمل دوسرے عمل کے ذریعہ مقرر کردہ فائل لاک کی اطاعت کیے بغیر کسی فائل کو لکھتا ہے۔ اس وجہ سے، کچھ یونکس جیسے آپریٹنگ سسٹم بھی لازمی لاکنگ کے لیے محدود سپورٹ پیش کرتے ہیں۔ ایسے سسٹمز پر، ایک فائل جس کا سیٹگڈ بٹ آن ہے لیکن جس کا گروپ ایگزیکیوشن بٹ بند ہے جب وہ فائل کھولی جاتی ہے تو وہ خودکار لازمی لاکنگ کے تابع ہوگی اگر بنیادی فائل سسٹم اس کی حمایت کرتا ہے۔ تاہم، غیر مقامی این ایف ایس پارٹیشن اس حصے کو نظر انداز کرتے ہیں۔ اگر کوئی فائل لازمی لاکنگ کے تابع ہے، تو کسی ایسے علاقے سے پڑھنے کی کوشش جو خصوصی لاک کے ساتھ بند ہے، یا کسی ایسے علاقے میں لکھنے کی کوشش جو مشترکہ یا خصوصی لاک کے ساتھ بند ہے، لاک جاری ہونے تک بلاک رہے گی۔ یہ حکمت عملی سب سے پہلے سسٹم V میں شروع ہوئی، اور آج سولر، HP-UX، اور لینکس آپریٹنگ سسٹمز میں دیکھی جا سکتی ہے۔ تاہم یہ پوزیکس کا حصہ نہیں ہے، اور بی ایس ڈی سے ماخوذ آپریٹنگ سسٹم جیسے فری بی ایس ڈی، اوپن بی ایس ڈی، نیٹ بی ایس ڈی، اور ایپل کے میکوس اس کی حمایت نہیں کرتے ہیں۔ لینکس فائل سسٹم ماؤنٹنگ () کے لیے خصوصی-o مینڈ پیرامیٹر کے ذریعے لازمی لاکنگ کی بھی حمایت کرتا ہے، لیکن یہ شاذ و نادر ہی استعمال ہوتا ہے۔ کچھ یونکس جیسے آپریٹنگ سسٹم چلانے والے پروگرام کی قابل عمل فائل کو لکھنے کے لیے کھولنے کی کوششوں کو روکتے ہیں۔ یہ لاکنگ کی تیسری شکل ہے، جو ایف سی این ٹی ایل اور فلاک کے فراہم کردہ سے الگ ہے۔ مسائل ایک سے زیادہ عمل کسی دی گئی فائل پر ایک خصوصی جھنڈ رکھ سکتے ہیں اگر خصوصی لاک کو بعد کے کانٹے پر نقل کیا گیا ہو۔ یہ نیٹ ورک سرورز کے لیے کوڈنگ کو آسان بناتا ہے اور ریس کے حالات کو روکنے میں مدد کرتا ہے، لیکن بے خبر لوگوں کے لیے الجھن کا باعث بن سکتا ہے۔ لازمی تالے ان لنک سسٹم کال پر کوئی اثر نہیں ڈالتے۔ نتیجتا، بعض پروگرام، مؤثر طریقے سے، لازمی لاکنگ کو روک سکتے ہیں۔ سٹیونز اینڈ راگو (2005) نے مشاہدہ کیا کہ ایڈ ایڈیٹر نے واقعی ایسا کیا۔ آیا این ایف ایس جیسے نیٹ ورک فائل سسٹمز پر فلاک لاک کیسے اور کیسے کام کرتے ہیں، یہ عمل درآمد پر منحصر ہے۔ بی ایس ڈی سسٹمز پر، این ایف ایس ماونٹڈ پارٹیشن پر فائل کے لیے کھلے فائل ڈسکرپٹر پر فلاک کالز کامیاب ہوتی ہیں۔ لینکس پر 2.6.12 سے پہلے، این ایف ایس فائلوں پر فلاک کالز صرف مقامی طور پر کام کرتی تھیں۔ کرنل 2.6.12 اور اس سے اوپر پوزیکس بائٹ رینج لاک کا استعمال کرتے ہوئے این ایف ایس فائلوں پر فلاک کالز کو لاگو کریں۔ یہ تالے دوسرے این ایف ایس کلائنٹس کو نظر آئیں گے جو ایف سی این ٹی ایل طرز کے پوزیکس تالے لاگو کرتے ہیں، لیکن ان لوگوں کے لیے پوشیدہ ہیں جو نہیں کرتے ہیں۔ لاک اپ گریڈ اور ڈاؤن گریڈ نئے لاک کو لگانے سے پہلے پرانے لاک کو چھوڑ دیتے ہیں۔ اگر کوئی ایپلیکیشن ایک خصوصی لاک کو مشترکہ لاک میں ڈاؤن گریڈ کرتی ہے جبکہ دوسری ایپلیکیشن کو خصوصی لاک کے انتظار میں بلاک کیا جاتا ہے، تو مؤخر الذکر ایپلیکیشن خصوصی لاک حاصل کر سکتی ہے اور پہلی ایپلیکیشن کو لاک آؤٹ کر سکتی ہے۔ اس کا مطلب یہ ہے کہ لاک ڈاؤن گریڈ بلاک کر سکتے ہیں، جو کہ متضاد ہو سکتا ہے۔ کسی دیئے گئے عمل کے لیے فائل سے وابستہ تمام ایف سی این ٹی ایل لاک اس وقت ہٹا دیے جاتے ہیں جب اس عمل کے ذریعے اس فائل کے لیے کوئی فائل ڈسکرپٹر بند کر دیا جاتا ہے، چاہے اس فائل ڈسکرپٹر کے لیے کبھی لاک کی درخواست نہ کی گئی ہو۔ اس کے علاوہ، ایف سی این ٹی ایل لاک چائلڈ پروسیس کے ذریعے وراثت میں نہیں ملتے ہیں۔ ایف سی این ٹی ایل کلوز سیمنٹکس خاص طور پر ان ایپلی کیشنز کے لیے پریشانی کا باعث ہیں جو سبروٹین لائبریریوں کو کال کرتی ہیں جو فائلوں تک رسائی حاصل کر سکتی ہیں۔ ان میں سے کوئی بھی "کیڑا" حقیقی ریوڑ کے طرز کے تالے استعمال کرتے ہوئے نہیں ہوتا ہے۔ یونیکس ڈومین ساکٹ کا استعمال کرتے ہوئے دوسرے عمل میں منتقل ہونے والے اوپن فائل ڈسکرپٹرز پر لاک اسٹیٹس کا تحفظ عمل درآمد پر منحصر ہے۔ بفرڈ I/O مسائل لاک فیل کا ایک ذریعہ اس وقت ہوتا ہے جب بفرڈ I/O میں آپریٹنگ سسٹم بفر پول کے بجائے صارف کے مقامی کام کی جگہ میں بفر تفویض کیے جاتے ہیں۔ فریڈ اور فریٹ عام طور پر بفرڈ I/O کرنے کے لیے استعمال ہوتے ہیں، اور ایک بار فائل کا ایک حصہ پڑھنے کے بعد، اسی حصے کو پڑھنے کی ایک اور کوشش، ممکنہ طور پر، مقامی بفر سے ڈیٹا حاصل کرے گی۔ مسئلہ یہ ہے کہ اسی فائل سے منسلک ایک اور صارف کے اپنے مقامی بفر ہیں، اور ان کے ساتھ بھی ایسا ہی ہو رہا ہے۔ فریڈ کے ذریعے بفر سے حاصل کردہ ڈیٹا کی تحریر فائل سے ہی ڈیٹا حاصل نہیں کرے گی، اور کوئی دوسرا صارف اسے تبدیل کر سکتا تھا۔ دونوں ہی خصوصی رسائی کو یقینی بنانے کے لیے فلاک کا استعمال کر سکتے ہیں، جو بیک وقت لکھنے سے روکتا ہے، لیکن چونکہ ریڈز بفر سے پڑھ رہے ہیں نہ کہ فائل سے، صارف #1 کے ذریعے تبدیل کیا گیا کوئی بھی ڈیٹا صارف #2 (اوور رائٹ) کے ذریعے ضائع ہو سکتا ہے۔ اس مسئلے کا بہترین حل یہ ہے کہ ریوڑ کے ساتھ غیر بفرڈ I/O (پڑھنا اور لکھنا) کا استعمال کیا جائے، جس کا مطلب بھی fseek اور ftell کے بجائے lseek کا استعمال کرنا ہے۔ یقینا، آپ کو فنکشن پیرامیٹرز اور واپس آنے والے نتائج کے لیے ایڈجسٹمنٹ کرنی ہوں گی۔ عام طور پر، مشترکہ فائلوں کے ساتھ استعمال ہونے پر بفرڈ I/O غیر محفوظ ہوتا ہے۔ امیگا او ایس میں، لاک فنکشن (dos.library میں) کا استعمال کرتے ہوئے فائل (یا ڈائرکٹری) پر لاک حاصل کیا جا سکتا ہے۔ لاک کا اشتراک کیا جا سکتا ہے (دوسرے عمل فائل/ڈائرکٹری کو پڑھ سکتے ہیں، لیکن اس میں ترمیم یا حذف نہیں کر سکتے ہیں)، یا خصوصی تاکہ صرف وہ عمل جو لاک کو کامیابی سے حاصل کر لے وہ آبجیکٹ تک رسائی یا ترمیم کر سکے۔ تالا پوری شے پر ہوتا ہے نہ کہ اس کا حصہ۔ لاک کو ان لاک فنکشن کے ساتھ جاری کیا جانا چاہیے: یونکس کے برعکس، آپریٹنگ سسٹم عمل ختم ہونے پر آبجیکٹ کو غیر واضح طور پر غیر مقفل نہیں کرتا ہے۔ شیل سکرپٹ اور دیگر پروگرام اکثر فائل لاکنگ کے استعمال سے ملتی جلتی حکمت عملی استعمال کرتے ہیں: لاک فائلوں کی تخلیق، جو ایسی فائلیں ہیں جن کے مندرجات غیر متعلقہ ہیں (حالانکہ اکثر کسی کو فائل میں لاک کے ہولڈر کا عمل شناخت کنندہ مل جائے گا) اور جس کا واحد مقصد ان کی موجودگی سے اشارہ کرنا ہے کہ کچھ وسائل لاک ہیں۔ لاک فائل اکثر بہترین طریقہ ہوتا ہے اگر کنٹرول کیا جانے والا وسیلہ باقاعدہ فائل بالکل نہیں ہے، لہذا فائلوں کو لاک کرنے کے طریقوں کا استعمال لاگو نہیں ہوتا ہے۔ مثال کے طور پر، ایک لاک فائل متعلقہ وسائل کے ایک سیٹ تک رسائی کو کنٹرول کر سکتی ہے، جیسے کہ کئی مختلف فائلیں، ڈائریکٹریز، ڈسک پارٹیشنز کا ایک گروپ، یا اعلی سطح کے پروٹوکول جیسے سرورز یا ڈیٹا بیس کنکشن تک منتخب رسائی۔ لاک فائلوں کا استعمال کرتے وقت، اس بات کو یقینی بنانے کے لیے خیال رکھنا چاہیے کہ آپریشن جوہری ہیں۔ لاک حاصل کرنے کے لیے، عمل کو اس بات کی تصدیق کرنی چاہیے کہ لاک فائل موجود نہیں ہے اور پھر اسے بنانا چاہیے، جبکہ اس دوران کسی دوسرے عمل کو اسے بنانے سے روکنا چاہیے۔ ایسا کرنے کے مختلف طریقوں میں شامل ہیں: لاک فائل کمانڈ کا استعمال کرنا (ایک مشروط سیمافور فائل تخلیق کار جو پروک میل پیکیج میں تقسیم کیا گیا ہے)۔ سسٹم کال کرتا ہے جو فائل بناتا ہے، لیکن ناکام ہو جاتا ہے اگر فائل پہلے سے موجود ہو۔ (سسٹم کالز سی یا سی + + جیسی زبانوں سے دستیاب ہیں، اور شیل اسکرپٹ نوکلوبر کا استعمال کر سکتے ہیں) ایم کے ڈی آئی آر کمانڈ کا استعمال کرتے ہوئے اور ناکامی کے لیے ایگزٹ کوڈ کو چیک کرتے ہوئے لاک فائلوں کا نام اکثر ٹلڈے (~) کے ساتھ رکھا جاتا ہے جو اس فائل کے نام سے پہلے ہوتا ہے جسے وہ لاک کر رہے ہیں، یا. ایل سی کے کے ساتھ مکمل فائل کے نام کی نقل ہوتی ہے۔ اگر وہ کسی فائل کے علاوہ کسی اور وسائل کو لاک کر رہے ہیں، تو ان کا نام زیادہ من مانی طور پر رکھا جا سکتا ہے۔ موزیلا کی بعض مصنوعات (جیسے فائر فاکس، تھنڈر برڈ، سن برڈ) اس قسم کے فائل ریسورس لاک میکانزم کا استعمال کرتی ہیں ("parent.lock" نامی عارضی فائل کا استعمال کرتے ہوئے)۔ انلاکر سافٹ ویئر ایک یوٹیلیٹی ہے جو اس بات کا تعین کرنے کے لیے استعمال ہوتی ہے کہ فائل کو کون سا عمل لاک کر رہا ہے، اور عمل کی فہرست کے ساتھ ساتھ اس عمل کے ساتھ کیا کرنا ہے (کل ٹاسک، ان لاک، وغیرہ) کے بارے میں انتخاب بھی دکھاتا ہے۔ فائل کے اختیارات کی فہرست کے ساتھ جیسے حذف کریں یا نام تبدیل کریں۔ یونکس جیسے کچھ سسٹمز پر، ایف ایس ٹی اے ٹی اور لاک ایف جیسی یوٹیلیٹیز کو عمل کے ذریعے، فائل کے نام، یا دونوں کے ذریعے فائل لاک کی حالت کا معائنہ کرنے کے لیے استعمال کیا جا سکتا ہے۔ ونڈوز سسٹمز پر، اگر کوئی فائل لاک ہے، تو اگلے ریبوٹ پر اس کی حرکت یا حذف کرنے کا شیڈول بنانا ممکن ہے۔ یہ نقطہ نظر عام طور پر انسٹالرز کے ذریعہ لاک شدہ سسٹم فائلوں کو تبدیل کرنے کے لیے استعمال کیا جاتا ہے۔ ورژن کنٹرول سسٹمز ورژن کنٹرول سسٹمز میں فائل لاکنگ کا استعمال دو صارفین کو ایک ہی فائل ورژن کو متوازی طور پر تبدیل کرنے سے روکنے کے لیے کیا جاتا ہے اور پھر بچت کرتے وقت، دوسرے صارف کو پہلے صارف کی تبدیلی کو اوور رائٹ کرنے کے لیے استعمال کیا جاتا ہے۔ یہ فائل سسٹم میں بند فائلوں کو صرف پڑھنے کے طور پر نشان زد کرکے نافذ کیا جاتا ہے۔ ایک صارف جو فائل کو تبدیل کرنا چاہتا ہے وہ ان لاک (جسے چیک آؤٹ بھی کہا جاتا ہے) آپریشن انجام دیتا ہے، اور جب تک چیک ان (اسٹور) آپریشن نہیں کیا جاتا، یا لاک واپس نہیں کیا جاتا، کسی اور کو فائل کو ان لاک کرنے کی اجازت نہیں ہے۔ ریڈرز رائٹر لاک حوالہ جات بیرونی لنکس وہ سب کچھ جو آپ فائل لاکنگ کے بارے میں جاننا نہیں چاہتے تھے، یونکس فائل لاکنگ آپشنز اور ان کے مسائل کا جائزہ (تاریخ 13 دسمبر 2010) فائل پرائیویٹ پوزیکس لاک، لینکس پر سپورٹ شدہ فائل لاک پر ایک LWN.net مضمون جو قریبی کمپیوٹر فائل سسٹمز پر وراثت اور رویے کے حوالے سے پوزیکس لاک سے مختلف سلوک کرتا ہے۔