عملیاتي سیسټمونه: درې اسانه ټوټې. لومړۍ برخه: پېژندنه (ژباړه)

د عملیاتي سیسټمونو پیژندنه

اې حبره! زه غواړم ستاسو پام ته د مقالو لړۍ وړاندې کړم - د یو ادب ژباړې چې زما په نظر په زړه پوري دي - OSTEP. دا مواد د یونیکس په څیر عملیاتي سیسټمونو کار په ژوره توګه معاینه کوي، د بیلګې په توګه، د پروسو سره کار، مختلف شیډولر، حافظه او نور ورته اجزا چې عصري OS جوړوي. تاسو کولی شئ دلته د ټولو موادو اصلي بڼه وګورئ دلته. مهرباني وکړئ په یاد ولرئ چې ژباړه په غیر مسلکي ډول (په آزاده توګه) شوې وه، مګر زه هیله لرم چې ما عمومي معنی ساتلی وي.

په دې موضوع کې د لابراتوار کار دلته موندلی شئ:
- اصلي: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- اصلي: github.com/remzi-arpacidusseau/ostep-code
- زما شخصي موافقت: github.com/bykvaadm/OS/tree/master/ostep

تاسو کولی شئ زما چینل هم وګورئ ټیلیګرام =)

د پروګرام عملیات

څه پیښیږي کله چې یو برنامه روانه وي؟ یو روان برنامه یو ساده کار کوي - دا لارښوونې اجرا کوي. په هره ثانیه کې، ملیونونه او حتی ممکن په ملیاردونو لارښوونې د پروسیسر لخوا د رام څخه ترلاسه کیږي، په پایله کې دا دوی ډیکوډ کوي (د مثال په توګه، دا پیژني چې دا لارښوونې په کوم ډول پورې اړه لري) او دوی یې اجرا کوي. دا کیدی شي دوه شمیرې اضافه کړي، حافظې ته لاسرسی، د حالت چک کول، فنکشن ته کود، او داسې نور. د یوې لارښوونې د اجرا کولو وروسته، پروسیسر د بل اجرا کولو ته ځي. او له دې امله د لارښوونې وروسته لارښوونې، دوی د پروګرام پای ته رسیدو پورې اجرا کیږي.
دا مثال په طبیعي ډول په ساده ډول په پام کې نیول شوی - په حقیقت کې د پروسیسر ګړندی کولو لپاره ، عصري هارډویر تاسو ته اجازه درکوي لارښوونې له ترتیب څخه اجرا کړئ ، احتمالي پایلې محاسبه کړئ ، لارښوونې په ورته وخت کې اجرا کړئ ، او ورته چلونه.

د وان نیومن د محاسبې ماډل

د کار ساده بڼه چې زموږ لخوا تشریح شوي د وون نیومن د محاسبې ماډل ته ورته ده. وان نیومن د کمپیوټر سیسټمونو مخکښانو څخه دی، هغه د لوبې تیوري لیکوالانو څخه هم دی.. پداسې حال کې چې برنامه روانه ده ، د نورو پیښو یوه ډله ترسره کیږي ، ډیری نورې پروسې او د دریمې ډلې منطق کار کوي ، چې اصلي هدف یې د سیسټم لانچ ، عملیات او ساتنه ساده کول دي.
د سافټویر یوه سیټ شتون لري چې د پروګرامونو چلولو لپاره اسانه کولو مسولیت لري (یا حتی په ورته وخت کې ډیری پروګرامونو ته اجازه ورکوي)، دا پروګرامونو ته اجازه ورکوي چې ورته حافظه شریک کړي، او د مختلفو وسیلو سره اړیکه ونیسي. دا ډول سافټویر (سافټویر) په اصل کې د عملیاتي سیسټم په نوم یادیږي او د هغې دندې څارنه شامله ده چې سیسټم په سمه او اغیزمنه توګه کار کوي، او همدارنګه د دې سیسټم مدیریت اسانه کول شامل دي.

چليز غونډال

یو عملیاتي سیسټم چې د OS په توګه لنډیز شوی، د یو بل سره تړلي پروګرامونو مجموعه ده چې د کمپیوټر سرچینې اداره کولو او د کمپیوټر سره د کاروونکي تعامل تنظیم کولو لپاره ډیزاین شوي..
OS په لومړي ځای کې خپل اغیزمنتوب ترلاسه کوي، د خورا مهم تخنیک له لارې - تخنیک مجازی کول. OS د فزیکي سرچینې سره اړیکه لري (پروسیسر، حافظه، ډیسک، او نور) او دا په ډیر عمومي، ډیر وړ، او د کارولو لپاره اسانه بڼه بدلوي. له همدې امله، د عمومي پوهاوی لپاره، تاسو کولی شئ د یو عملیاتي سیسټم سره د مجازی ماشین سره پرتله کړئ.
د دې لپاره چې کاروونکو ته اجازه ورکړي چې عملیاتي سیسټم ته قوماندې ورکړي او پدې توګه د مجازی ماشین وړتیاوې وکاروي (لکه د برنامه چلول ، د حافظې تخصیص کول ، فایل ته لاسرسی او داسې نور) ، عملیاتي سیسټم یو څه انٹرفیس چمتو کوي چې په نوم یادیږي. API (د غوښتنلیک پروګرامینګ انٹرفیس) او کوم چې تلیفونونه کیدی شي. یو عادي عملیاتي سیسټم تاسو ته اجازه درکوي په سلګونو سیسټم زنګونه وکړئ.
په نهایت کې ، ځکه چې مجازی کول ډیری برنامې چلولو ته اجازه ورکوي (په دې توګه د CPU شریکول) ، او په ورته وخت کې د دوی لارښوونو او معلوماتو ته لاسرسی (په دې توګه حافظه شریکول) ، او ډیسکونو ته لاسرسی (په دې توګه د I/O وسیلو شریکول) ، عملیاتي سیسټم هم د سرچینې په نوم یادیږي. مدیر هر پروسیسر، ډیسک او حافظه د سیسټم یوه سرچینه ده او په دې توګه د عملیاتي سیسټم یو رول د دې سرچینو اداره کول دي، دا په اغیزمنه توګه، عادلانه یا برعکس، د هغه دندې پورې اړه لري چې عملیاتي سیسټم یې کوي. ډیزاین شوی.

د CPU مجازی کول

لاندې پروګرام ته پام وکړئ:
(https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be)

عملیاتي سیسټمونه: درې اسانه ټوټې. لومړۍ برخه: پېژندنه (ژباړه)

دا کوم ځانګړي کړنې نه ترسره کوي، په حقیقت کې، دا ټول هغه څه دي چې یو فنکشن بلل کیږي د سپين()، د چا دنده دا ده چې په سایکل ډول وخت وګورئ او د یوې ثانیې له تیریدو وروسته بیرته راشئ. په دې توګه، دا په پای کې هغه تار تکراروي چې کاروونکي د دلیل په توګه تیر شوی.
راځئ چې دا برنامه پرمخ وړو او د دلیل په توګه یې "A" کرکټر تیر کړو. پایله په ځانګړي ډول په زړه پوري نده - سیسټم په ساده ډول یو برنامه اجرا کوي چې په وخت سره په سکرین کې "A" سمبول ښیې.
اوس راځئ چې دا اختیار هڅه وکړو کله چې د ورته برنامه ډیری مثالونه په لاره واچول شي ، مګر د مختلف لیکونو ښودلو لپاره دا روښانه کول. په دې حالت کې، پایله به یو څه توپیر ولري. د دې حقیقت سره سره چې موږ یو پروسیسر لرو، برنامه په ورته وخت کې پرمخ ځي. دا څنګه کیږي؟ مګر دا معلومه شوه چې عملیاتي سیسټم، د هارډویر وړتیاوو له مرستې پرته، یو برم رامینځته کوي. دا تصور چې په سیسټم کې ډیری مجازی پروسیسرونه شتون لري، یو فزیکي پروسیسر په تیوریکي توګه لامحدود شمیر ته بدلوي او په دې توګه پروګرامونو ته اجازه ورکوي چې ښکاري په یو وخت کې پرمخ بوځي. دې ته دوکه ویل کیږي د CPU مجازی کول.
دا انځور ډیری پوښتنې راولاړوي، د بیلګې په توګه، که څو پروګرامونه په یو وخت کې چلول غواړي، کوم یو به پیل شي؟ د OS "پالیسیو" د دې مسلې لپاره مسؤل دي. پالیسۍ په OS کې په ډیری ځایونو کې کارول کیږي او د دې په څیر پوښتنې ځوابوي، او همدارنګه هغه بنسټیز میکانیزمونه دي چې OS پلي کوي. له همدې امله د سرچینې مدیر په توګه د OS رول.

د حافظې مجازی کول

اوس راځئ چې حافظې ته وګورو. په عصري سیسټمونو کې د حافظې فزیکي ماډل د بایټس په توګه ښودل کیږي.. د حافظې څخه لوستلو لپاره ، تاسو اړتیا لرئ مشخص کړئ د حجرې پتهد لاسرسي لپاره. د معلوماتو لیکلو یا تازه کولو لپاره، تاسو باید ډاټا او د حجرې پته هم مشخص کړئ چیرې چې دا لیکل کیږي.
یادداشت په دوامداره توګه د برنامه اجرا کولو پرمهال لاسرسی کیږي. یو برنامه خپل ټول ډیټا جوړښت په حافظه کې ساتي او د مختلف لارښوونو په اجرا کولو سره ورته لاسرسی لري. لارښوونې، په ورته وخت کې، په حافظه کې هم زیرمه شوي، نو دا د راتلونکي لارښوونې لپاره د هرې غوښتنې لپاره هم لاسرسی لري.

malloc() زنګ

لاندې برنامه په پام کې ونیسئ ، کوم چې د زنګ په کارولو سره د حافظې سیمه تخصیص کوي مالاک () (https://youtu.be/jnlKRnoT1m0):

عملیاتي سیسټمونه: درې اسانه ټوټې. لومړۍ برخه: پېژندنه (ژباړه)

برنامه ډیری شیان ترسره کوي. لومړی، دا یو څه حافظه تخصیص کوي (7 کرښه)، بیا د تخصیص شوي حجرې پته چاپوي (لین 9)، د تخصیص شوي حافظې لومړي سلاټ ته صفر لیکي. بیا ، برنامه یو لوپ ته ننوځي چیرې چې دا په "p" متغیر کې په پته کې په حافظه کې زیرمه شوي ارزښت زیاتوي. دا پخپله د پروسې ID هم چاپوي. د پروسې ID د هرې روانې پروسې لپاره ځانګړی دی. د څو کاپيونو په لاره اچولو سره، موږ به په زړه پورې پایلې ته مخه کړو: په لومړي حالت کې، که تاسو هیڅ نه کوئ او یوازې څو کاپي چلوي، نو پته به توپیر ولري. مګر دا زموږ د نظریې لاندې نه راځي! سمه ده، ځکه چې عصري توزیعونه د حافظې تصادفي کول په ډیفالټ فعال شوي. که دا غیر فعال وي، موږ تمه شوې پایله ترلاسه کوو - د دوه یوځل چلولو پروګرامونو حافظې پتې به سره سمون ولري.

عملیاتي سیسټمونه: درې اسانه ټوټې. لومړۍ برخه: پېژندنه (ژباړه)

د پایلې په توګه، دا معلومه شوه چې دوه خپلواک پروګرامونه د خپل شخصي پته ځایونو سره کار کوي، کوم چې په پایله کې د عملیاتي سیسټم لخوا په فزیکي حافظه کې نقشه کیږي.. له همدې امله، په یو پروګرام کې د حافظې پتې کارول به په هیڅ ډول په نورو اغیزه ونکړي، او هر پروګرام ته داسې ښکاري چې دا د فزیکي حافظې خپله برخه لري، په بشپړه توګه ورته ورکړل شوي. په هرصورت، حقیقت دا دی چې فزیکي حافظه یوه شریکه سرچینه ده چې د عملیاتي سیسټم لخوا اداره کیږي.

تسلسل

په عملیاتي سیسټمونو کې یو بل مهم موضوعات - دي ثبات. دا اصطالح هغه وخت کارول کیږي کله چې د سیسټم ستونزو په اړه وغږیږئ چې واقع کیدی شي کله چې په یو برنامه کې په یوځل کې د ډیری شیانو سره کار کوي. د دوام مسلې حتی پخپله په عملیاتي سیسټم کې رامینځته کیږي. په تیرو مثالونو کې د حافظې او پروسیسر مجازی کولو سره، موږ پوهیږو چې OS په ورته وخت کې ډیری شیان اداره کوي - لومړی پروسه پیلوي، بیا دویم، او داسې نور. لکه څنګه چې دا معلومه شوه، دا چلند کولی شي د ځینو ستونزو لامل شي. د بیلګې په توګه، عصري څو اړخیز پروګرامونه دا ډول ستونزې تجربه کوي.

لاندې پروګرام ته پام وکړئ:

عملیاتي سیسټمونه: درې اسانه ټوټې. لومړۍ برخه: پېژندنه (ژباړه)

په اصلي فعالیت کې برنامه د کال په کارولو سره دوه تارونه رامینځته کوي pthread_create(). په دې مثال کې، یو تار د یو فنکشن په توګه فکر کیدی شي چې د نورو دندو تر څنګ په ورته حافظه کې روان وي، په واضح ډول په ورته وخت کې له یو څخه ډیر فعالیت سره. په دې مثال کې، هر تار یو فعالیت پیل او اجرا کوي worker() چې په پایله کې په ساده ډول متغیر زیاتوي,.

راځئ چې دا پروګرام د 1000 دلیل سره پرمخ بوځو. لکه څنګه چې تاسو اټکل کړی وي، پایله باید 2000 وي ځکه چې هر توری 1000 ځله زیات شوی. په هرصورت، هرڅه دومره ساده ندي. راځئ هڅه وکړو چې برنامه د ډیر تکرار ترتیب سره پرمخ بوځو.

عملیاتي سیسټمونه: درې اسانه ټوټې. لومړۍ برخه: پېژندنه (ژباړه)

د مثال په توګه د 100000 شمیره په داخلولو سره، موږ تمه لرو چې محصول د 200000 شمیرې په توګه وګورو. په هرصورت، که موږ 100000 شمیره څو ځله وګرځوو، موږ به نه یوازې سم ځواب ووینو، بلکې مختلف غلط ځوابونه به هم ترلاسه کړو. ځواب په حقیقت کې دی چې د شمیر زیاتولو لپاره، درې عملیاتو ته اړتیا ده - له حافظې څخه شمیره ایستل، زیاتول، او بیا د شمیرې بیرته لیکل. څرنګه چې دا ټولې لارښوونې په اټومي ډول نه پلي کیږي (ټول په ورته وخت کې)، د دې په څیر عجيب شیان واقع کیدی شي. دا ستونزه په پروګرامینګ کې ویل کیږي د ریس حالت - د ریس حالت. کله چې په نامعلوم وخت کې نامعلوم ځواکونه ستاسو د هر عملیاتو فعالیت اغیزه کولی شي.

سرچینه: www.habr.com

Add a comment