آپریٹنگ سسٹم: تین آسان ٹکڑے۔ حصہ 2: تجرید: عمل (ترجمہ)

آپریٹنگ سسٹمز کا تعارف

ارے حبر! میں آپ کی توجہ میں مضامین کی ایک سیریز - میری رائے میں ایک دلچسپ ادب کے تراجم کی طرف لانا چاہتا ہوں - OSTEP۔ یہ مواد یونکس جیسے آپریٹنگ سسٹم کے کام کے بارے میں کافی گہرائی سے بحث کرتا ہے، یعنی پروسیس، مختلف شیڈولرز، میموری، اور اسی طرح کے دوسرے اجزاء کے ساتھ کام جو جدید OS بناتے ہیں۔ آپ یہاں تمام مواد کی اصل دیکھ سکتے ہیں۔ یہاں. براہ کرم نوٹ کریں کہ ترجمہ غیر پیشہ ورانہ طور پر کیا گیا تھا (کافی آزادانہ)، لیکن مجھے امید ہے کہ میں نے عام معنی کو برقرار رکھا ہے۔

اس موضوع پر لیبارٹری کا کام یہاں پایا جا سکتا ہے:

دوسرے حصے:

آپ میرا چینل بھی دیکھ سکتے ہیں۔ ۔ =)

آئیے سب سے بنیادی تجرید کو دیکھیں جو OS صارفین کو فراہم کرتا ہے: عمل۔ عمل کی تعریف بہت آسان ہے - یہ ہے چلانے کے پروگرام. پروگرام خود ایک بے جان چیز ہے جو ڈسک پر واقع ہے - یہ ہدایات کا ایک مجموعہ ہے اور ممکنہ طور پر کچھ جامد ڈیٹا لانچ ہونے کا انتظار کر رہا ہے۔ یہ OS ہے جو ان بائٹس کو لیتا ہے اور انہیں چلاتا ہے، پروگرام کو کسی مفید چیز میں تبدیل کرتا ہے۔
اکثر، صارفین ایک ہی وقت میں ایک سے زیادہ پروگرام چلانا چاہتے ہیں، مثال کے طور پر، آپ اپنے لیپ ٹاپ پر براؤزر، گیم، میڈیا پلیئر، ٹیکسٹ ایڈیٹر اور اس طرح کے دیگر پروگرام چلا سکتے ہیں۔ درحقیقت، ایک عام نظام دسیوں یا سینکڑوں عمل کو بیک وقت چلا سکتا ہے۔ یہ حقیقت سسٹم کو استعمال میں آسان بناتی ہے، آپ کو کبھی بھی اس بات کی فکر کرنے کی ضرورت نہیں ہے کہ آیا CPU مفت ہے، آپ صرف پروگرام چلاتے ہیں۔

اس سے مسئلہ پیدا ہوتا ہے: بہت سے CPUs کا وہم کیسے فراہم کیا جائے؟ OS تقریباً لامحدود تعداد میں CPUs کا بھرم کیسے پیدا کر سکتا ہے، یہاں تک کہ اگر آپ کے پاس صرف ایک جسمانی CPU ہے؟

OS CPU ورچوئلائزیشن کے ذریعے یہ وہم پیدا کرتا ہے۔ ایک عمل شروع کر کے، پھر اسے روک کر، دوسرا عمل شروع کر کے، اور اسی طرح، OS اس وہم کو برقرار رکھ سکتا ہے کہ بہت سے ورچوئل CPUs ہیں، جب کہ حقیقت میں ایک یا زیادہ فزیکل پروسیسرز ہوں گے۔ اس تکنیک کو کہا جاتا ہے۔ وقت کے لحاظ سے CPU وسائل کی تقسیم. یہ تکنیک صارفین کو زیادہ سے زیادہ ہم آہنگی کے عمل کو چلانے کی اجازت دیتی ہے۔ اس حل کی قیمت کارکردگی ہے - چونکہ اگر سی پی یو کو کئی پروسیسز کے ذریعے شیئر کیا جاتا ہے، تو ہر عمل پر زیادہ آہستہ عمل کیا جائے گا۔
CPU ورچوئلائزیشن کو لاگو کرنے کے لیے، اور خاص طور پر اسے اچھی طرح سے کرنے کے لیے، OS کو نچلی سطح اور اعلیٰ سطح دونوں کی حمایت کی ضرورت ہے۔ نچلی سطح کی سپورٹ کہلاتی ہے۔ میکانزم کم درجے کے طریقے یا پروٹوکول ہیں جو فعالیت کے مطلوبہ حصے کو نافذ کرتے ہیں۔ اس طرح کی فعالیت کی ایک مثال سیاق و سباق کی سوئچنگ ہے، جو OS کو ایک پروگرام کو روکنے اور پروسیسر پر دوسرا پروگرام چلانے کی صلاحیت فراہم کرتی ہے۔ اس بار کی تقسیم تمام جدید آپریٹنگ سسٹمز میں نافذ ہے۔
ان میکانزم کے اوپری حصے میں "پالیسیوں" کی شکل میں OS میں شامل کچھ منطق ہے۔ پالیسی آپریٹنگ سسٹم کے لیے ایک مخصوص فیصلہ سازی الگورتھم ہے۔ اس طرح کی پالیسیاں، مثال کے طور پر، فیصلہ کرتی ہیں کہ پہلے کون سا پروگرام شروع کیا جائے (کمانڈز کی فہرست سے)۔ لہذا، مثال کے طور پر، یہ مسئلہ ایک پالیسی کے ذریعہ حل کیا جائے گا شیڈولر (شیڈیولنگ پالیسی) اور حل کا انتخاب کرتے وقت، اس کی رہنمائی اس طرح کے ڈیٹا سے کی جائے گی جیسے: اسٹارٹ اپ ہسٹری (آخری منٹوں میں کون سا پروگرام سب سے طویل لانچ کیا گیا تھا)، اس عمل میں کیا بوجھ پڑتا ہے (کس قسم کے پروگرام شروع کیے گئے تھے)، کارکردگی کی پیمائش (چاہے سسٹم انٹرایکٹو تعامل کے لیے یا تھرو پٹ کے لیے موزوں ہے) وغیرہ۔

خلاصہ: عمل

آپریٹنگ سسٹم کے ذریعہ چلائے جانے والے پروگرام کا خلاصہ وہی ہے جسے ہم کہتے ہیں۔ عمل. جیسا کہ پہلے ذکر کیا گیا ہے، ایک عمل صرف ایک چلنے والا پروگرام ہے، کسی بھی فوری وقت میں۔ ایک ایسا پروگرام جس کے ذریعے ہم مختلف سسٹم کے وسائل سے خلاصہ معلومات حاصل کر سکتے ہیں جن تک یہ پروگرام اپنے عمل کے دوران رسائی یا اثر انداز ہوتا ہے۔
عمل کے اجزاء کو سمجھنے کے لیے، آپ کو سسٹم کی حالتوں کو سمجھنے کی ضرورت ہے: پروگرام اپنے آپریشن کے دوران کیا پڑھ سکتا ہے یا تبدیل کر سکتا ہے۔ کسی بھی وقت، آپ کو یہ سمجھنے کی ضرورت ہے کہ پروگرام کے نفاذ کے لیے سسٹم کے کون سے عناصر اہم ہیں۔
نظام کے واضح عناصر میں سے ایک یہ ہے کہ عمل میں شامل ہے۔ یاداشت. ہدایات میموری میں موجود ہیں۔ پروگرام جو ڈیٹا پڑھتا یا لکھتا ہے وہ بھی میموری میں موجود ہوتا ہے۔ اس طرح، وہ میموری جسے کوئی عمل ایڈریس کرسکتا ہے (جسے ایڈریس اسپیس کہا جاتا ہے) اس عمل کا حصہ ہے۔
سسٹم اسٹیٹ کا بھی حصہ رجسٹر ہیں۔ بہت سی ہدایات کا مقصد رجسٹروں کی قدر کو تبدیل کرنا یا ان کی قدر کو پڑھنا ہے، اور اس طرح رجسٹر بھی عمل کے عمل کا ایک اہم حصہ بن جاتے ہیں۔
واضح رہے کہ مشین کی حالت بھی کچھ خاص رجسٹروں سے بنتی ہے۔ مثال کے طور پر، آئی پی - انسٹرکشن پوائنٹر - اس ہدایت کی طرف اشارہ کرتا ہے جو پروگرام فی الحال انجام دے رہا ہے۔ وہاں بھی ہے اسٹیک پوائنٹر اور اس سے متعلق فریم پوائنٹر، جو انتظام کرنے کے لیے استعمال ہوتے ہیں: فنکشن پیرامیٹرز، مقامی متغیرات اور واپسی کے پتے۔
آخر میں، پروگرام اکثر ROM (صرف پڑھنے کے لیے میموری) تک رسائی حاصل کرتے ہیں۔ اس "I/O" (ان پٹ/آؤٹ پٹ) معلومات میں اس عمل کے ذریعے فی الحال کھلی فائلوں کی فہرست شامل ہونی چاہیے۔

عمل API

عمل کیسے کام کرتا ہے اس کے بارے میں ہماری سمجھ کو بہتر بنانے کے لیے، آئیے سسٹم کالز کی مثالوں کا مطالعہ کرتے ہیں جنہیں کسی بھی آپریٹنگ سسٹم انٹرفیس میں شامل کیا جانا چاہیے۔ یہ APIs کسی بھی OS پر کسی نہ کسی شکل میں دستیاب ہیں۔

تخلیق کریں (تخلیق): OS میں کچھ ایسا طریقہ شامل ہونا چاہیے جو آپ کو نئے عمل بنانے کی اجازت دیتا ہو۔ جب آپ ٹرمینل میں کمانڈ داخل کرتے ہیں یا آئیکن پر ڈبل کلک کرکے ایپلیکیشن لانچ کرتے ہیں، تو OS کو ایک کال بھیجی جاتی ہے تاکہ ایک نیا عمل بنایا جائے اور پھر مخصوص پروگرام شروع کیا جائے۔
حذف کریں۔: چونکہ ایک عمل بنانے کے لیے ایک انٹرفیس موجود ہے، اس لیے OS کو یہ صلاحیت بھی فراہم کرنی چاہیے کہ وہ کسی عمل کو زبردستی ہٹانے کی صلاحیت فراہم کرے۔ زیادہ تر پروگرام فطری طور پر چلتے ہی خود ہی شروع اور ختم ہو جائیں گے۔ بصورت دیگر صارف ان کو مارنے کے قابل ہونا چاہے گا اور اس طرح اس عمل کو روکنے کے لیے ایک انٹرفیس مفید ہوگا۔
انتظار کریں (انتظار): بعض اوقات کسی عمل کے مکمل ہونے کا انتظار کرنا مفید ہوتا ہے، اس لیے کچھ انٹرفیس فراہم کیے جاتے ہیں جو انتظار کرنے کی صلاحیت فراہم کرتے ہیں۔
متفرق کنٹرول (مختلف کنٹرول): عمل کو مارنے اور انتظار کرنے کے علاوہ، کنٹرول کے دیگر مختلف طریقے بھی ہیں۔ مثال کے طور پر، زیادہ تر آپریٹنگ سسٹم کسی عمل کو منجمد کرنے کی صلاحیت فراہم کرتے ہیں (ایک خاص مدت کے لیے اس پر عمل درآمد روک دیتے ہیں) اور پھر اسے دوبارہ شروع کرتے ہیں (عمل درآمد جاری رکھیں)
درجہ (ریاست): کسی عمل کی حیثیت کے بارے میں کچھ معلومات حاصل کرنے کے لیے مختلف انٹرفیس ہیں، جیسے کہ یہ کتنے عرصے سے چل رہا ہے یا اس وقت یہ کس حالت میں ہے۔

آپریٹنگ سسٹم: تین آسان ٹکڑے۔ حصہ 2: تجرید: عمل (ترجمہ)

عمل تخلیق: تفصیلات

ایک دلچسپ بات یہ ہے کہ پروگرام کس طرح عمل میں تبدیل ہوتے ہیں۔ خاص طور پر OS پروگرام کو کیسے اٹھاتا اور چلاتا ہے۔ عمل کس طرح پیدا ہوتا ہے۔
سب سے پہلے، OS کو پروگرام کوڈ اور جامد ڈیٹا کو میموری میں لوڈ کرنا چاہیے (پروسیس ایڈریس اسپیس میں)۔ پروگرام عام طور پر کسی ڈسک یا سالڈ اسٹیٹ ڈرائیو پر کسی قابل عمل شکل میں واقع ہوتے ہیں۔ اس طرح، پروگرام اور جامد ڈیٹا کو میموری میں لوڈ کرنے کے عمل کے لیے OS کی ضرورت ہوتی ہے کہ وہ ان بائٹس کو ڈسک سے پڑھ سکے اور انہیں میموری میں کہیں رکھ سکے۔

ابتدائی آپریٹنگ سسٹمز میں، لوڈنگ کا عمل بے تابی سے کیا جاتا تھا، جس کا مطلب ہے کہ پروگرام شروع ہونے سے پہلے پورا کوڈ میموری میں لوڈ ہو گیا تھا۔ جدید آپریٹنگ سسٹم یہ کام سستی سے کرتے ہیں، یعنی کوڈ یا ڈیٹا کے ٹکڑوں کو صرف اس وقت لوڈ کرنا جب پروگرام کو اس کے عمل کے دوران ان کی ضرورت ہوتی ہے۔

ایک بار جب کوڈ اور جامد ڈیٹا کو OS میموری میں لوڈ کر دیا جاتا ہے، تو کچھ اور چیزیں ہیں جو عمل کے چلنے سے پہلے کرنے کی ضرورت ہے۔ اسٹیک کے لیے میموری کی کچھ مقدار مختص کی جانی چاہیے۔ پروگرام مقامی متغیرات، فنکشن پیرامیٹرز، اور واپسی کے پتے کے لیے اسٹیک کا استعمال کرتے ہیں۔. OS اس میموری کو مختص کرتا ہے اور اسے عمل میں دیتا ہے۔ اسٹیک کو کچھ دلائل کے ساتھ بھی مختص کیا جاسکتا ہے، خاص طور پر یہ main() فنکشن کے پیرامیٹرز کو بھرتا ہے، مثال کے طور پر argc اور argv کی صف کے ساتھ۔

آپریٹنگ سسٹم پروگرام ہیپ میں کچھ میموری بھی مختص کر سکتا ہے۔ ہیپ کو پروگراموں کے ذریعے واضح طور پر متحرک طور پر مختص کردہ ڈیٹا کی درخواست کرنے کے لیے استعمال کیا جاتا ہے۔. پروگرام فنکشن کو کال کرکے اس جگہ کی درخواست کرتے ہیں۔ malloc () اور فنکشن کو کال کرکے اسے واضح طور پر صاف کرتا ہے۔ مفت (). ڈیٹا کے ڈھانچے جیسے کہ منسلک شیٹس، ہیش ٹیبلز، درختوں اور دیگر کے لیے ہیپ کی ضرورت ہے۔ شروع میں، ہیپ کے لیے تھوڑی مقدار میں میموری مختص کی جاتی ہے، لیکن وقت گزرنے کے ساتھ، جیسے جیسے پروگرام چلتا ہے، ہیپ لائبریری API کال malloc() کے ذریعے مزید میموری کی درخواست کر سکتا ہے۔ آپریٹنگ سسٹم ان کالوں کو پورا کرنے کے لیے مزید میموری مختص کرنے کے عمل میں شامل ہے۔

آپریٹنگ سسٹم ابتدائی کام بھی انجام دے گا، خاص طور پر وہ I/O سے متعلق۔ مثال کے طور پر، UNIX سسٹمز پر، معیاری ان پٹ، آؤٹ پٹ، اور غلطی کے لیے، ہر عمل میں بطور ڈیفالٹ 3 اوپن فائل ڈسکرپٹرز ہوتے ہیں۔ یہ ہینڈل پروگراموں کو ٹرمینل سے ان پٹ پڑھنے کے ساتھ ساتھ اسکرین پر معلومات ڈسپلے کرنے کی اجازت دیتے ہیں۔

اس طرح، کوڈ اور جامد ڈیٹا کو میموری میں لوڈ کرکے، اسٹیک بنانے اور شروع کرکے، اور I/O کاموں کو انجام دینے سے متعلق دیگر کام کرکے، OS اس عمل کو انجام دینے کے لیے مرحلہ تیار کرتا ہے۔ آخر میں، ایک آخری کام باقی ہے: پروگرام کو اس کے انٹری پوائنٹ کے ذریعے چلانا، جسے مین() فنکشن کہتے ہیں۔ مین() فنکشن کو انجام دینے سے، OS CPU کنٹرول کو نئے بنائے گئے عمل میں منتقل کرتا ہے، اس طرح پروگرام پر عمل درآمد شروع ہو جاتا ہے۔

عمل کی حالت

اب جب کہ ہمیں کچھ سمجھ آ گئی ہے کہ عمل کیا ہے اور یہ کیسے بنتا ہے، آئیے اس عمل کی فہرست بنائیں جن میں یہ ہو سکتا ہے۔ اس کی آسان ترین شکل میں، عمل ان ریاستوں میں سے کسی ایک میں ہو سکتا ہے:
چل رہا ہے. چلتے وقت، عمل پروسیسر پر چلتا ہے. اس کا مطلب ہے کہ ہدایات پر عمل ہو رہا ہے۔
کے لئے تیار ہیں. تیار حالت میں، عمل چلانے کے لیے تیار ہے، لیکن کسی وجہ سے OS اسے مقررہ وقت پر انجام نہیں دیتا۔
بلاک. مسدود حالت میں، ایک عمل کچھ آپریشن کرتا ہے جو اسے انجام دینے کے لیے تیار ہونے سے روکتا ہے جب تک کہ کوئی واقعہ رونما نہ ہو جائے۔ ایک عام مثال یہ ہے کہ جب کوئی عمل IO آپریشن شروع کرتا ہے، تو یہ بلاک ہو جاتا ہے تاکہ کوئی دوسرا عمل پروسیسر کو استعمال کر سکے۔

آپریٹنگ سسٹم: تین آسان ٹکڑے۔ حصہ 2: تجرید: عمل (ترجمہ)

آپ ان حالتوں کو گراف کی شکل میں تصور کر سکتے ہیں۔ جیسا کہ ہم تصویر میں دیکھ سکتے ہیں، OS کی صوابدید پر عمل کی حالت RUNNING اور READY کے درمیان بدل سکتی ہے۔ جب کسی عمل کی حالت READY سے RUNNING میں بدل جاتی ہے، تو اس کا مطلب ہے کہ عمل طے شدہ ہے۔ مخالف سمت میں - لے آؤٹ سے ہٹا دیا گیا ہے۔ اس وقت جب کوئی عمل بلاک ہوجاتا ہے، مثال کے طور پر، میں IO آپریشن شروع کرتا ہوں، OS اسے اس حالت میں رکھے گا جب تک کہ کوئی واقعہ پیش نہ آجائے، مثال کے طور پر IO کی تکمیل۔ اس وقت تیار حالت میں منتقلی اور ممکنہ طور پر فوری طور پر رننگ حالت میں اگر OS فیصلہ کرتا ہے۔
آئیے اس کی ایک مثال دیکھتے ہیں کہ دو عمل ان ریاستوں سے کیسے گزرتے ہیں۔ شروع کرنے کے لیے، آئیے تصور کریں کہ دونوں عمل چل رہے ہیں، اور ہر ایک صرف CPU استعمال کر رہا ہے۔ اس صورت میں ان کی ریاستیں اس طرح نظر آئیں گی۔

آپریٹنگ سسٹم: تین آسان ٹکڑے۔ حصہ 2: تجرید: عمل (ترجمہ)

مندرجہ ذیل مثال میں، پہلا عمل، کچھ دیر چلنے کے بعد، IO کی درخواست کرتا ہے اور بلاک شدہ حالت میں داخل ہوتا ہے، جس سے ایک اور عمل کو چلنے دیا جاتا ہے (تصویر 1.4)۔ OS دیکھتا ہے کہ عمل 0 CPU استعمال نہیں کر رہا ہے اور عمل 1 کو شروع کرتا ہے۔ جب عمل 1 چل رہا ہے، IO مکمل ہو گیا ہے اور عمل 0 کی حیثیت READY میں تبدیل ہو جاتی ہے۔ آخر کار، عمل 1 مکمل ہو گیا، اور مکمل ہونے پر، عمل 0 شروع ہوتا ہے، اس پر عمل درآمد کرتا ہے اور اپنا کام ختم کرتا ہے۔

آپریٹنگ سسٹم: تین آسان ٹکڑے۔ حصہ 2: تجرید: عمل (ترجمہ)

ڈیٹا کا ڈھانچہ

OS بذات خود ایک پروگرام ہے، اور کسی دوسرے پروگرام کی طرح، اس میں کچھ اہم ڈیٹا ڈھانچے ہیں جو معلومات کے مختلف متعلقہ ٹکڑوں پر نظر رکھتے ہیں۔ ہر عمل کی حالت کو ٹریک کرنے کے لیے، OS کچھ معاونت کرے گا۔ عمل کی فہرست READY حالت میں تمام پراسیسز کے لیے اور کچھ اضافی معلومات ان پراسیسز کو ٹریک کرنے کے لیے جو فی الحال چل رہے ہیں۔ نیز، OS کو بلاک شدہ عمل کی نگرانی کرنی چاہیے۔ IO مکمل ہونے کے بعد، OS کو ضروری عمل کو بیدار کرنا چاہیے اور اسے چلانے کے لیے تیار حالت میں رکھنا چاہیے۔

مثال کے طور پر، OS کو پروسیسر کے رجسٹروں کی حالت کو محفوظ رکھنا چاہیے۔ جس وقت یہ عمل رک جاتا ہے، رجسٹر کی حالت اس عمل کے ایڈریس اسپیس میں محفوظ ہوجاتی ہے، اور جس وقت اس کا عمل جاری رہتا ہے، رجسٹر کی قدریں بحال ہوجاتی ہیں اور اس طرح اس عمل پر عمل درآمد جاری رہتا ہے۔

تیار، بلاک شدہ، چلنے والی ریاستوں کے علاوہ، کچھ اور ریاستیں بھی ہیں۔ بعض اوقات، تخلیق کے وقت، ایک عمل INIT حالت میں ہو سکتا ہے۔ آخر میں، ایک عمل کو حتمی حالت میں رکھا جا سکتا ہے جب یہ پہلے ہی مکمل ہو گیا ہو، لیکن اس کی معلومات کو ابھی تک صاف نہیں کیا گیا ہے۔ UNIX سسٹم پر اس حالت کو کہا جاتا ہے۔ زومبی عمل. یہ حالت ان صورتوں کے لیے مفید ہے جہاں والدین کا عمل کسی بچے کے واپسی کوڈ کو جاننا چاہتا ہے، مثال کے طور پر، عام طور پر 0 کامیابی اور 1 غلطی کا اشارہ دیتا ہے، لیکن پروگرامرز مختلف مسائل کی نشاندہی کرنے کے لیے اضافی آؤٹ پٹ کوڈ جاری کر سکتے ہیں۔ جب والدین کا عمل ختم ہو جاتا ہے، تو یہ ایک حتمی سسٹم کال کرتا ہے، جیسے wait()، چائلڈ پروسیس کے ختم ہونے کا انتظار کرنے اور OS کو سگنل دیتا ہے کہ یہ ختم شدہ عمل سے وابستہ کسی بھی ڈیٹا کو صاف کر سکتا ہے۔

آپریٹنگ سسٹم: تین آسان ٹکڑے۔ حصہ 2: تجرید: عمل (ترجمہ)

لیکچر کے اہم نکات:

عمل - OS میں چلنے والے پروگرام کا بنیادی خلاصہ۔ کسی بھی وقت، ایک عمل کو اس کی حالت کے مطابق بیان کیا جا سکتا ہے: اس کے ایڈریس اسپیس میں میموری کے مواد، پروسیسر کے رجسٹر کے مواد، بشمول انسٹرکشن پوائنٹر اور اسٹیک پوائنٹر، اور IO معلومات، جیسے کھلی فائلوں کو پڑھا یا لکھا جانا۔
عمل API کالز پر مشتمل ہے جو پروگرام پروسیس کرنے کے لیے کر سکتے ہیں۔ عام طور پر یہ تخلیق، حذف، یا دیگر کالز ہیں۔
● یہ عمل کئی ریاستوں میں سے ایک میں ہے، بشمول چل رہا ہے، تیار ہے، بلاک ہے۔ مختلف واقعات جیسے شیڈولنگ، شیڈولنگ سے مستثنیات، یا انتظار کسی عمل کی حالت کو ایک سے دوسرے میں بدل سکتے ہیں۔
عمل کی فہرست سسٹم میں تمام عمل کے بارے میں معلومات پر مشتمل ہے۔ اس میں موجود ہر اندراج کو پراسیس کنٹرول بلاک کہا جاتا ہے، جو حقیقت میں ایک ایسا ڈھانچہ ہے جس میں ایک مخصوص عمل کے بارے میں تمام ضروری معلومات موجود ہوتی ہیں۔ 

ماخذ: www.habr.com

نیا تبصرہ شامل کریں