Tsarukan Aiki: Guda Sau Uku. Kashi na 1: Gabatarwa (fassara)

Gabatarwa zuwa Tsarukan Ayyuka

Hai Habr! Ina so in kawo muku jerin labarai-fassarar wallafe-wallafe guda ɗaya mai ban sha'awa a ra'ayina - OSTEP. Wannan abu yayi magana sosai game da aikin unix-kamar tsarin aiki, wato, aiki tare da matakai, masu tsarawa daban-daban, ƙwaƙwalwar ajiya da sauran abubuwa makamantan waɗanda suka haɗa da OS na zamani. Kuna iya ganin asalin duk kayan anan a nan. Da fatan za a lura cewa fassarar an yi ta ne ba da ƙwararru ba (da yardar rai), amma ina fata na riƙe ma'anar gaba ɗaya.

Ana iya samun aikin Lab akan wannan batu a nan:
- asali: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- asali: github.com/remzi-arpacidusseau/ostep-code
- daidaitawar kaina: github.com/bykvaadm/OS/tree/master/ostep

Hakanan zaka iya duba tashar ta a sakon waya =)

Ayyukan shirin

Me zai faru idan shirin yana gudana? Shirin mai gudana yana yin abu ɗaya mai sauƙi - yana aiwatar da umarni. A kowace daƙiƙa, miliyoyi har ma da biliyoyin umarni na na’urar na’urar na iya karbo su daga RAM, shi kuma yakan yanke su (misali, ya gane nau’in waɗannan umarnin) kuma ya aiwatar da su. Wannan na iya zama ƙara lambobi biyu, samun dama ga ƙwaƙwalwar ajiya, duba yanayi, tsalle zuwa aiki, da sauransu. Bayan aiwatar da umarni ɗaya, mai sarrafa na'ura yana ci gaba zuwa aiwatar da wani. Don haka umarni bayan koyarwa, ana aiwatar da su har sai shirin ya ƙare.
Wannan misalin ana ɗaukarsa a sauƙaƙe - a zahiri, don haɓaka mai sarrafawa, kayan aikin zamani yana ba ku damar aiwatar da umarni daga bi da bi, ƙididdige sakamako mai yiwuwa, aiwatar da umarnin lokaci guda, da dabaru iri ɗaya.

Von Neumann samfurin lissafi

Sauƙaƙe nau'in aikin da aka kwatanta da mu yayi kama da ƙirar ƙididdiga na Von Neumann. Von Neumann yana daya daga cikin majagaba na tsarin kwamfuta, kuma yana daya daga cikin mawallafin ka'idar wasan.. Yayin da shirin ke gudana, gungun wasu abubuwan da suka faru suna faruwa, wasu matakai da yawa da kuma aikin dabaru na ɓangare na uku, babban manufar su shine sauƙaƙe ƙaddamarwa, aiki da kiyaye tsarin.
Akwai wata manhaja da ke da alhakin sanya shirye-shirye cikin saukin aiki (ko ma ba da damar shirye-shirye da yawa su yi aiki a lokaci guda), da ke ba da damar manhajoji su raba ma’adana iri daya, da kuma sadarwa da na’urori daban-daban. Irin wannan manhaja (software) da gaske ana kiranta da tsarin aiki kuma ayyukanta sun hada da sanya ido kan cewa tsarin yana aiki daidai da inganci, da kuma tabbatar da saukin sarrafa wannan tsarin.

tsarin aiki

Tsarin aiki, wanda aka taƙaita a matsayin OS, wani tsari ne na shirye-shirye masu alaƙa da aka tsara don sarrafa albarkatun kwamfuta da tsara hulɗar masu amfani da kwamfuta..
OS yana samun tasiri a farkon wuri, ta hanyar fasaha mafi mahimmanci - fasaha duban gani. OS yana hulɗa tare da kayan aiki na jiki (processor, ƙwaƙwalwar ajiya, faifai, da sauransu) kuma yana canza shi zuwa mafi girma, mafi ƙarfi, da sauƙin amfani da kansa. Don haka, don fahimtar gaba ɗaya, zaku iya kwatanta tsarin aiki da injin kama-da-wane.
Domin ba da damar masu amfani don ba da umarni ga tsarin aiki kuma ta haka ne amfani da damar na'ura mai mahimmanci (kamar tafiyar da shirin, rarraba ƙwaƙwalwar ajiya, shiga fayil, da sauransu), tsarin aiki yana samar da wani nau'i mai suna wanda ake kira. API (application programming interface) kuma wanda zaka iya yin kira (kira). Tsarin aiki na yau da kullun yana ba da damar ɗaruruwan kiran tsarin da za a yi.
A ƙarshe, tun da haɓakawa yana ba da damar shirye-shirye da yawa don gudana (ta haka raba CPU), kuma a lokaci guda samun damar umarninsu da bayanansu (ta haka raba ƙwaƙwalwar ajiya), da samun damar diski (ta haka raba na'urorin I/O). manajan albarkatun. Kowane masarrafa, faifai da ƙwaƙwalwar ajiya tushen tsarin, don haka ɗaya daga cikin ayyukan tsarin aiki ya zama aikin sarrafa waɗannan albarkatun, yin shi yadda ya kamata, gaskiya, ko akasin haka, ya danganta da aikin da wannan tsarin yake. an tsara shi.

Ƙwararren CPU

Yi la'akari da shirin mai zuwa:
(https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be)

Tsarukan Aiki: Guda Sau Uku. Kashi na 1: Gabatarwa (fassara)

Ba ya yin wani ayyuka na musamman, a haƙiƙa, duk abin da yake yi shi ne kira aiki juya(), wanda aikinsa shine ya zagaya ta hanyar duba lokaci da dawowa bayan daƙiƙa ɗaya ya wuce. Don haka, yana maimaita igiyar da mai amfani ya wuce har abada azaman hujja.
Bari mu gudanar da wannan shirin kuma mu sanya shi a matsayin "A" a matsayin hujja. Sakamakon ba shi da ban sha'awa musamman - tsarin kawai yana aiwatar da shirin wanda lokaci-lokaci yana nuna halin "A".
Yanzu bari mu gwada zaɓin lokacin da yawancin lokuta na shirye-shiryen iri ɗaya ke gudana, amma fitar da haruffa daban-daban don bayyana shi. A wannan yanayin, sakamakon zai zama ɗan bambanci. Duk da cewa muna da processor guda ɗaya, ana aiwatar da shirin a lokaci guda. Ta yaya abin yake faruwa? Amma ya bayyana cewa tsarin aiki, ba tare da taimakon kayan aikin kayan aiki ba, yana haifar da ruɗi. Ƙaunar cewa akwai na'urori masu sarrafawa da yawa a cikin tsarin, suna juya na'ura mai sarrafawa ɗaya zuwa lamba mara iyaka kuma ta haka yana barin da alama shirye-shirye suyi gudu lokaci guda. Ana kiran wannan ruɗi Ƙwararren CPU.
Wannan hoton yana haifar da tambayoyi da yawa, misali, idan shirye-shirye da yawa suna son gudana a lokaci guda, wanene za a ƙaddamar? “Manufofin” na OS ne ke da alhakin wannan tambayar. Ana amfani da manufofi a wurare da yawa a cikin OS kuma suna amsa tambayoyi kamar haka, kuma su ne ainihin hanyoyin da OS ke aiwatarwa. Don haka rawar OS a matsayin mai sarrafa albarkatun.

Ƙwaƙwalwar ƙwaƙwalwa

Yanzu bari mu dubi ƙwaƙwalwar ajiya. Samfurin ƙwaƙwalwa na zahiri a cikin tsarin zamani ana wakilta azaman tsararrun bytes.. Don karantawa daga ƙwaƙwalwar ajiya, kuna buƙatar ƙayyade cell addressdon isa gare shi. Don rubuta ko sabunta bayanai, dole ne kuma ka saka bayanan da adireshin tantanin halitta inda zaka rubuta su.
Ana samun dama ga ƙwaƙwalwar ajiya koyaushe yayin aiwatar da shirin. Shirin yana adana dukkan tsarin bayanansa cikin ƙwaƙwalwar ajiya kuma yana samun dama gare shi ta aiwatar da umarni daban-daban. Umurnin, a halin yanzu, ana adana su a cikin ƙwaƙwalwar ajiya, don haka kuma ana samun dama ga kowace buƙata don koyarwa ta gaba.

malloc() kira

Yi la'akari da shirin mai zuwa, wanda ke keɓance yankin ƙwaƙwalwar ajiya ta amfani da kira malloc () (https://youtu.be/jnlKRnoT1m0):

Tsarukan Aiki: Guda Sau Uku. Kashi na 1: Gabatarwa (fassara)

Shirin yana yin abubuwa da yawa. Da farko, yana keɓance wasu ƙwaƙwalwar ajiya (layi na 7), sannan ya buga adireshi na tantanin halitta (layi 9), yana rubuta sifili zuwa ramin farko na ƙwaƙwalwar ajiyar da aka ware. Bayan haka, shirin yana shigar da madauki wanda a ciki yake ƙara ƙimar da aka adana a ƙwaƙwalwar ajiya a adireshin da ke cikin "p" m. Hakanan yana buga ID ɗin tsari na kanta. ID ɗin tsari na musamman ne ga kowane tsari mai gudana. Bayan kaddamar da kwafi da yawa, za mu yi tuntuɓe a kan sakamako mai ban sha'awa: A cikin akwati na farko, idan ba ku yi kome ba kuma kawai ku gudanar da kwafi da yawa, to, adiresoshin za su bambanta. Amma wannan baya fada karkashin ka'idar mu! Daidai ne, tunda rarrabawar zamani tana da bazuwar ƙwaƙwalwar ajiya ta tsohuwa. Idan an kashe, za mu sami sakamakon da ake sa ran - adiresoshin ƙwaƙwalwar ajiya na shirye-shirye guda biyu masu gudana a lokaci guda zasu dace.

Tsarukan Aiki: Guda Sau Uku. Kashi na 1: Gabatarwa (fassara)

A sakamakon haka, ya zama cewa shirye-shirye masu zaman kansu guda biyu suna aiki tare da wuraren adireshi masu zaman kansu, wanda kuma tsarin aiki ya tsara shi a cikin ƙwaƙwalwar ajiyar jiki.. Don haka, yin amfani da adiresoshin ƙwaƙwalwar ajiya a cikin shirin ɗaya ba zai shafi wasu ta kowace hanya ba, kuma kowane shirin yana da nasa ɓangaren ƙwaƙwalwar ajiyar jiki, wanda aka ba shi gaba ɗaya. Gaskiyar, duk da haka, ita ce ƙwaƙwalwar ajiya ta jiki shine hanyar da aka raba wanda tsarin aiki ke sarrafawa.

Daidaitawa

Wani muhimmin batu a cikin tsarin aiki shine - daidaito. Ana amfani da wannan kalmar lokacin magana game da matsaloli a cikin tsarin da zai iya faruwa lokacin aiki tare da abubuwa da yawa a lokaci guda a cikin shirin guda ɗaya. Matsalolin daidaitawa suna tasowa har ma a cikin tsarin aiki kanta. A cikin ƙwaƙwalwar ajiyar da ta gabata da misalan sarrafa kayan aiki, mun gane cewa OS yana sarrafa abubuwa da yawa a lokaci guda - yana fara tsari na farko, sannan na biyu, da sauransu. Kamar yadda ya fito, wannan hali na iya haifar da wasu matsaloli. Don haka, alal misali, shirye-shirye masu zaren zamani da yawa suna fuskantar irin waɗannan matsalolin.

Yi la'akari da shirin mai zuwa:

Tsarukan Aiki: Guda Sau Uku. Kashi na 1: Gabatarwa (fassara)

Shirin a cikin babban aikin yana ƙirƙirar zaren guda biyu ta amfani da kira phread_create(). A cikin wannan misalin, za a iya tunanin zaren azaman aikin da ke gudana a cikin sararin ƙwaƙwalwar ajiya ɗaya tare da sauran ayyuka, tare da ayyuka fiye da ɗaya suna gudana a lokaci guda. A cikin wannan misali, kowane zaren yana farawa kuma yana aiwatar da aikin ma'aikaci () wanda hakan yana ƙara ƙara canzawa,.

Bari mu gudanar da wannan shirin tare da hujja na 1000. Kamar yadda za ku iya tsammani, sakamakon ya kamata ya zama 2000 saboda kowane zaren ya ƙara yawan canjin sau 1000. Duk da haka, duk abin da ba haka sauki. Bari mu yi ƙoƙari mu gudanar da shirin tare da oda mai girma fiye da maimaitawa.

Tsarukan Aiki: Guda Sau Uku. Kashi na 1: Gabatarwa (fassara)

Ta hanyar shigar da lamba, alal misali, 100000, muna sa ran ganin fitarwa a matsayin lambar 200000. Duk da haka, idan muka yi amfani da lambar 100000 sau da yawa, ba za mu ga amsar daidai ba, amma kuma za mu sami amsoshin da ba daidai ba. Amsar tana cikin gaskiyar cewa don ƙara lamba, ana buƙatar ayyuka uku - cire lambar daga ƙwaƙwalwar ajiya, haɓakawa, sannan rubuta lambar baya. Tun da duk waɗannan umarnin ba a aiwatar da su ta atomatik (duk a lokaci ɗaya), abubuwa masu ban mamaki irin wannan na iya faruwa. Ana kiran wannan matsala a cikin shirye-shirye yanayin tsere. Lokacin da dakarun da ba a san su ba a wani lokacin da ba a san su ba na iya shafar aikin kowane ɗayan ayyukan ku.

source: www.habr.com

Add a comment